| feat(dashboard): configure main + auxiliary models from Models page (#17802)
Dashboard Models page was analytics-only — no way to pick a model as main
for new sessions or override an auxiliary task slot without hand-editing
config.yaml or running a /model slash command inside a chat.
Changes:
- hermes_cli/web_server.py: three REST endpoints (GET /api/model/options,
GET /api/model/auxiliary, POST /api/model/set). Reuses
list_authenticated_providers() from model_switch.py so the REST path
surfaces the same curated model lists as the TUI-gateway model.options
JSON-RPC. POST /api/model/set writes model.provider + model.default for
scope=main, and auxiliary.<task>.{provider,model} for scope=auxiliary
(with task="" meaning 'all 8 slots' and task="__reset__" resetting them
to auto).
- web/src/components/ModelPickerDialog.tsx: accepts an optional loader +
onApply pair so it works without an open chat PTY. ChatSidebar's
gw-WebSocket path still works unchanged (back-compat).
- web/src/pages/ModelsPage.tsx: Model Settings panel at the top showing
main model + collapsible list of 8 auxiliary tasks with per-row Change
buttons and Reset all to auto. Every existing model card gets a
'Use as' dropdown for one-click assignment to main or any aux slot.
Cards badged 'main' or 'aux · <task>' when currently assigned.
- website/docs/user-guide/configuring-models.md: new docs page walking
through both UI paths, aux task override patterns, troubleshooting,
plus REST/CLI alternatives.
- Screenshots under website/static/img/docs/dashboard-models/.
Applies to new sessions only — running sessions keep their model (use
/model slash command to hot-swap a live session). No prompt-cache
invalidation on existing sessions. | 1 个月前 |
| feat(kanban): durable multi-profile collaboration board (#17805)
Salvage of PR #16100 onto current main (after emozilla's #17514 fix
that unblocks plugin Pydantic body validation). History preserved on
the standing feat/kanban-standing branch; this squashes the 22
iterative commits into one clean landing.
What this lands:
- SQLite kernel (hermes_cli/kanban_db.py) — durable task board with
tasks, task_links, task_runs, task_comments, task_events,
kanban_notify_subs tables. WAL mode, atomic claim via CAS,
tenant-namespaced, skills JSON array per task, max-runtime timeouts,
worker heartbeats, idempotency keys, circuit breaker on repeated
spawn failures, crash detection via /proc/<pid>/status, run history
preserved across attempts.
- Dispatcher — runs inside the gateway by default
(kanban.dispatch_in_gateway: true). Ticks every 60s, reclaims
stale claims, promotes ready tasks, spawns `hermes -p <assignee>
chat -q "work kanban task <id>"` with HERMES_KANBAN_TASK +
HERMES_KANBAN_WORKSPACE env. Auto-loads --skills kanban-worker
plus any per-task skills. Health telemetry warns on stuck ready
queue.
- Structured tool surface (tools/kanban_tools.py) — 7 tools
(kanban_show, kanban_complete, kanban_block, kanban_heartbeat,
kanban_comment, kanban_create, kanban_link). Gated on
HERMES_KANBAN_TASK via check_fn so zero schema footprint in normal
sessions.
- System-prompt guidance (agent/prompt_builder.py KANBAN_GUIDANCE)
injected only when kanban tools are active.
- Dashboard plugin (plugins/kanban/dashboard/) — Linear-style board
UI: triage/todo/ready/running/blocked/done columns, drag-drop,
inline create, task drawer with markdown, comments, run history,
dependency editor, bulk ops, lanes-by-profile grouping, WS-driven
live refresh. Matches active dashboard theme via CSS variables.
- CLI — `hermes kanban init|create|list|show|assign|link|unlink|
claim|comment|complete|block|unblock|archive|tail|dispatch|context|
init|gc|watch|stats|notify|log|heartbeat|runs|assignees` +
/kanban slash in-session.
- Worker + orchestrator skills (skills/devops/kanban-worker +
kanban-orchestrator) — pattern library for good summary/metadata
shapes, retry diagnostics, block-reason examples, fan-out patterns.
- Per-task force-loaded skills — --skill <name> (repeatable),
stored as JSON, threaded through to dispatcher argv as one
--skills X pair per skill alongside the built-in kanban-worker.
Dashboard + CLI + tool parity.
- Deprecation of standalone hermes kanban daemon — stub exits 2
with migration guidance; --force escape hatch for headless hosts.
- Docs (website/docs/user-guide/features/kanban.md + kanban-tutorial.md)
with 11 dashboard screenshots walking through four user stories
(Solo Dev, Fleet Farming, Role Pipeline, Circuit Breaker).
- Tests (251 passing): kernel schema + migration + CAS atomicity,
dispatcher logic, circuit breaker, crash detection, max-runtime
timeouts, claim lifecycle, tenant isolation, idempotency keys, per-
task skills round-trip + validation + dispatcher argv, tool surface
(7 tools × round-trip + error paths), dashboard REST (CRUD + bulk
+ links + warnings), gateway-embedded dispatcher (config gate, env
override, graceful shutdown), CLI deprecation stub, migration from
legacy schemas.
Gateway integration:
- GatewayRunner._kanban_dispatcher_watcher — new asyncio background
task, symmetric with _kanban_notifier_watcher. Runs dispatch_once
via asyncio.to_thread so SQLite WAL never blocks the loop. Sleeps
in 1s slices for snappy shutdown. Respects HERMES_KANBAN_DISPATCH_IN_GATEWAY=0
env override for debugging.
- Config: new kanban section in DEFAULT_CONFIG with
dispatch_in_gateway: true (default) + dispatch_interval_seconds: 60.
Additive — no \_config_version bump needed.
Forward-compat:
- workflow_template_id / current_step_key columns on tasks (v1 writes
NULL; v2 will use them for routing).
- task_runs holds claim machinery (claim_lock, claim_expires,
worker_pid, last_heartbeat_at) so multi-attempt history is first-
class from day one.
Closes #16102.
Co-authored-by: emozilla <emozilla@nousresearch.com> | 1 个月前 |
| feat: add proper favicon and logo for landing page and docs site
Generated favicon files (ico, 16x16, 32x32, 180x180, 192x192, 512x512)
from the Hermes Agent logo. Replaces the inline SVG caduceus emoji with
real favicon files so Google's favicon service can pick up the logo.
Landing page: updated <link> tags to reference favicon.ico, favicon PNGs,
and apple-touch-icon.
Docusaurus: updated config to use favicon.ico and logo.png instead of
favicon.svg.
| 2 个月前 |
| feat: add proper favicon and logo for landing page and docs site
Generated favicon files (ico, 16x16, 32x32, 180x180, 192x192, 512x512)
from the Hermes Agent logo. Replaces the inline SVG caduceus emoji with
real favicon files so Google's favicon service can pick up the logo.
Landing page: updated <link> tags to reference favicon.ico, favicon PNGs,
and apple-touch-icon.
Docusaurus: updated config to use favicon.ico and logo.png instead of
favicon.svg.
| 2 个月前 |
| feat: add proper favicon and logo for landing page and docs site
Generated favicon files (ico, 16x16, 32x32, 180x180, 192x192, 512x512)
from the Hermes Agent logo. Replaces the inline SVG caduceus emoji with
real favicon files so Google's favicon service can pick up the logo.
Landing page: updated <link> tags to reference favicon.ico, favicon PNGs,
and apple-touch-icon.
Docusaurus: updated config to use favicon.ico and logo.png instead of
favicon.svg.
| 2 个月前 |
| feat: add proper favicon and logo for landing page and docs site
Generated favicon files (ico, 16x16, 32x32, 180x180, 192x192, 512x512)
from the Hermes Agent logo. Replaces the inline SVG caduceus emoji with
real favicon files so Google's favicon service can pick up the logo.
Landing page: updated <link> tags to reference favicon.ico, favicon PNGs,
and apple-touch-icon.
Docusaurus: updated config to use favicon.ico and logo.png instead of
favicon.svg.
| 2 个月前 |
| feat: add documentation website (Docusaurus)
- 25 documentation pages covering Getting Started, User Guide, Developer Guide, and Reference
- Docusaurus with custom amber/gold theme matching the landing page branding
- GitHub Actions workflow to deploy landing page + docs to GitHub Pages
- Landing page at root, docs at /docs/ on hermes-agent.nousresearch.com
- Content extracted and restructured from existing repo docs (README, AGENTS.md, CONTRIBUTING.md, docs/)
- Auto-deploy on push to main when website/ or landingpage/ changes
| 2 个月前 |
| feat: add documentation website (Docusaurus)
- 25 documentation pages covering Getting Started, User Guide, Developer Guide, and Reference
- Docusaurus with custom amber/gold theme matching the landing page branding
- GitHub Actions workflow to deploy landing page + docs to GitHub Pages
- Landing page at root, docs at /docs/ on hermes-agent.nousresearch.com
- Content extracted and restructured from existing repo docs (README, AGENTS.md, CONTRIBUTING.md, docs/)
- Auto-deploy on push to main when website/ or landingpage/ changes
| 2 个月前 |
| feat: add proper favicon and logo for landing page and docs site
Generated favicon files (ico, 16x16, 32x32, 180x180, 192x192, 512x512)
from the Hermes Agent logo. Replaces the inline SVG caduceus emoji with
real favicon files so Google's favicon service can pick up the logo.
Landing page: updated <link> tags to reference favicon.ico, favicon PNGs,
and apple-touch-icon.
Docusaurus: updated config to use favicon.ico and logo.png instead of
favicon.svg.
| 2 个月前 |
| feat: add documentation website (Docusaurus)
- 25 documentation pages covering Getting Started, User Guide, Developer Guide, and Reference
- Docusaurus with custom amber/gold theme matching the landing page branding
- GitHub Actions workflow to deploy landing page + docs to GitHub Pages
- Landing page at root, docs at /docs/ on hermes-agent.nousresearch.com
- Content extracted and restructured from existing repo docs (README, AGENTS.md, CONTRIBUTING.md, docs/)
- Auto-deploy on push to main when website/ or landingpage/ changes
| 2 个月前 |