Skip to content

Commit b31b0b9

Browse files
authored
docs: reconcile docs with code across last 3 releases (NousResearch#54254)
Audited the last 3 releases (v2026.5.28..main) against the docs site and fixed code-vs-docs drift: - slash-commands: add /moa, /prompt, /pet, /hatch, /timestamps - cli-commands: add hermes pets / project / desktop / whatsapp-cloud + dashboard register; correct --insecure (now a deprecated no-op); add gateway migrate-legacy + enroll --wake-url + dashboard --skip-build - environment-variables: document the remaining ~48 env vars (SimpleX, Photon, Teams adapter, per-platform *_ALLOW_ALL_USERS, home-channel vars, IRC, Brave/Krea/Notion/Linear/Airtable/Tenor keys, QQ_SANDBOX) — full OPTIONAL_ENV_VARS (265) now covered - configuration: document tool_loop_guardrails, goals, prompt_caching, network, onboarding, dashboard config blocks - toolsets/tools-reference + tools.md: add coding/project toolsets and read_terminal/project_* tools; remove the stale messaging toolset and send_message agent tool (removed in NousResearch#47856); drop stale RL-training prose - messaging: new IRC channel page (adapter shipped without docs) + index row + sidebar + env vars - pets: document the /hatch AI generation pipeline + Nous/OpenRouter image backend - web-dashboard: document the bearer-token / TokenPrincipal service auth path - purge agent-callable send_message references across guides/features and the research-paper-writing skill (tool removed in NousResearch#47856) Verified: docusaurus build succeeds; all authored internal links resolve.
1 parent b699d27 commit b31b0b9

26 files changed

Lines changed: 424 additions & 44 deletions
1.7 MB
Loading

skills/research/research-paper-writing/SKILL.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2148,7 +2148,7 @@ Compose this skill with other Hermes skills for specific phases:
21482148
| **`memory`** | Persist key decisions across sessions: contribution framing, venue choice, reviewer feedback. |
21492149
| **`cronjob`** | Schedule experiment monitoring, deadline countdowns, automated arXiv checks. |
21502150
| **`clarify`** | Ask the user targeted questions when blocked (venue choice, contribution framing). |
2151-
| **`send_message`** | Notify user when experiments complete or drafts are ready, even if user isn't in chat. |
2151+
| **cron `deliver:`** | Notify the user when experiments complete or drafts are ready even if they're not in chat — schedule the check as a cron job with a messaging `deliver:` target (the agent no longer has a `send_message` tool; outbound delivery is handled by cron/`hermes send`). |
21522152

21532153
### Tool Usage Patterns
21542154

@@ -2159,7 +2159,7 @@ terminal("ps aux | grep <pattern>")
21592159
→ terminal("ls results/")
21602160
→ execute_code("analyze results JSON, compute metrics")
21612161
→ terminal("git add -A && git commit -m '<descriptive message>' && git push")
2162-
send_message("Experiment complete: <summary>")
2162+
(final response auto-delivers "Experiment complete: <summary>"; for unattended runs, schedule via cron with a deliver: target)
21632163
```
21642164

21652165
**Parallel section drafting** (using delegation):
@@ -2259,7 +2259,7 @@ cronjob("create", {
22592259

22602260
### Communication Patterns
22612261

2262-
**When to notify the user** (via `send_message` or direct response):
2262+
**When to notify the user** (via your direct/final response, or a cron `deliver:` target for unattended runs):
22632263
- Experiment batch completed (with results table)
22642264
- Unexpected finding or failure requiring decision
22652265
- Draft section ready for review

website/docs/developer-guide/adding-platform-adapters.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -185,7 +185,7 @@ When you call `ctx.register_platform()`, the following integration points are ha
185185
| YAML config bridge | `apply_yaml_config_fn` translates `config.yaml` keys into env vars / extras |
186186
| Cron delivery | `cron_deliver_env_var` makes `deliver=<name>` work |
187187
| `hermes config` UI entries | `requires_env` / `optional_env` in `plugin.yaml` auto-populate |
188-
| send_message tool | Routes through live gateway adapter |
188+
| send engine (`tools/send_message_tool.py`) | Routes through live gateway adapter |
189189
| Webhook cross-platform delivery | Registry checked for known platforms |
190190
| `/update` command access | `allow_update_command` flag |
191191
| Channel directory | Plugin platforms included in enumeration |

website/docs/developer-guide/gateway-internals.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -193,7 +193,7 @@ Outgoing deliveries (`gateway/delivery.py`) handle:
193193

194194
- **Direct reply** — send response back to the originating chat
195195
- **Home channel delivery** — route cron job outputs and background results to a configured home channel
196-
- **Explicit target delivery**`send_message` tool specifying `telegram:-1001234567890`, or the [`hermes send` CLI](/guides/pipe-script-output) wrapping the same tool for shell scripts
196+
- **Explicit target delivery**the send engine specifying `telegram:-1001234567890`, exposed via the [`hermes send` CLI](/guides/pipe-script-output) for shell scripts and via cron `deliver:` targets
197197
- **Cross-platform delivery** — deliver to a different platform than the originating message
198198

199199
Cron job deliveries are NOT mirrored into gateway session history — they live in their own cron session only. This is a deliberate design choice to avoid message alternation violations.

website/docs/guides/delegation-patterns.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -218,7 +218,7 @@ Restricting toolsets keeps the subagent focused and prevents accidental side eff
218218
## Constraints
219219

220220
- **Default 3 parallel tasks**: batches default to 3 concurrent subagents (configurable via `delegation.max_concurrent_children` in config.yaml, no hard ceiling, only a floor of 1)
221-
- **Nested delegation is opt-in**: leaf subagents (default) cannot call `delegate_task`, `clarify`, `memory`, `send_message`, or `execute_code`. Orchestrator subagents (`role="orchestrator"`) retain `delegate_task` for further delegation, but only when `delegation.max_spawn_depth` is raised above the default of 1 (floor 1, no ceiling); the other four remain blocked. Disable globally via `delegation.orchestrator_enabled: false`.
221+
- **Nested delegation is opt-in**: leaf subagents (default) cannot call `delegate_task`, `clarify`, `memory`, or `execute_code`. Orchestrator subagents (`role="orchestrator"`) retain `delegate_task` for further delegation, but only when `delegation.max_spawn_depth` is raised above the default of 1 (floor 1, no ceiling); the other three remain blocked. Disable globally via `delegation.orchestrator_enabled: false`.
222222

223223
### Tuning Concurrency and Depth
224224

website/docs/guides/pipe-script-output.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -229,11 +229,11 @@ IDs.
229229
| `hermes send` ||| No (bot-token) | Everything below |
230230
| Raw `curl` to each platform | Each scripted separately | Manual | No | Critical watchdogs |
231231
| `cron` job with `--deliver` ||| No | Scheduled agent tasks |
232-
| `send_message` agent tool ||| No | Inside an agent loop |
233232

234233
`hermes send` is intentionally the simplest possible surface. If you need
235-
an agent to decide what to say, use the `send_message` tool from within a
236-
chat or cron job. If you need a scheduled run with LLM-generated content,
234+
an agent to decide what to say, schedule a cron job — the agent's final
235+
response is auto-delivered to the configured `deliver:` target (the agent
236+
no longer fires messages itself). If you need a scheduled run with LLM-generated content,
237237
use `cronjob(action='create', prompt=...)` with `deliver='telegram:...'`.
238238
If you just need to pipe a raw string, reach for `hermes send`.
239239

website/docs/reference/cli-commands.md

Lines changed: 61 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ hermes [global-options] <command> [subcommand/options]
4646
| `hermes lsp` | Manage Language Server Protocol integration (semantic diagnostics for write_file/patch). |
4747
| `hermes setup` | Interactive setup wizard for all or part of the configuration. |
4848
| `hermes whatsapp` | Configure and pair the WhatsApp bridge. |
49+
| `hermes whatsapp-cloud` | Configure the official Meta WhatsApp Business Cloud API adapter (Business account + public webhook required). Distinct from `hermes whatsapp` (Baileys personal-account bridge). |
4950
| `hermes slack` | Slack helpers (currently: generate the app manifest with every command as a native slash). |
5051
| `hermes auth` | Manage credentials — add, list, remove, reset, status, logout. Handles OAuth flows for Codex/Nous/Anthropic. |
5152
| `hermes login` / `logout` | **Deprecated** — use `hermes auth` instead. |
@@ -55,6 +56,7 @@ hermes [global-options] <command> [subcommand/options]
5556
| `hermes status` | Show agent, auth, and platform status. |
5657
| `hermes cron` | Inspect and tick the cron scheduler. |
5758
| `hermes kanban` | Multi-profile collaboration board (tasks, links, dispatcher). |
59+
| `hermes project` | Manage named, multi-folder workspaces (projects). Anchors desktop session grouping and, when bound to a kanban board, gives tasks a deterministic worktree + branch convention. State is per-profile. |
5860
| `hermes webhook` | Manage dynamic webhook subscriptions for event-driven activation. |
5961
| `hermes hooks` | Inspect, approve, or remove shell-script hooks declared in `config.yaml`. |
6062
| `hermes doctor` | Diagnose config and dependency issues. |
@@ -78,10 +80,12 @@ hermes [global-options] <command> [subcommand/options]
7880
| `hermes portal` | Nous Portal status, subscription link, and Tool Gateway routing. See [Tool Gateway](../user-guide/features/tool-gateway.md). |
7981
| `hermes tools` | Configure enabled tools per platform. |
8082
| `hermes computer-use` | Install or check the cua-driver backend (macOS Computer Use). |
83+
| `hermes pets` | Browse, install, and select [petdex](../user-guide/features/pets.md) animated pets shown across the CLI, TUI, and desktop app. Subcommands: `list`, `install`, `select`, `show`, `off`, `scale`, `remove`, `doctor`. |
8184
| `hermes sessions` | Browse, export, prune, rename, and delete sessions. |
8285
| `hermes insights` | Show token/cost/activity analytics. |
8386
| `hermes claw` | OpenClaw migration helpers. |
8487
| `hermes dashboard` | Launch the web dashboard for managing config, API keys, and sessions. |
88+
| `hermes desktop` (alias `gui`) | Build and launch the native Electron desktop app. |
8589
| `hermes profile` | Manage profiles — multiple isolated Hermes instances. |
8690
| `hermes completion` | Print shell completion scripts (bash/zsh/fish). |
8791
| `hermes version` | Show version information. |
@@ -226,6 +230,7 @@ Subcommands:
226230
| `install` | Install as a systemd (Linux) or launchd (macOS) background service. |
227231
| `uninstall` | Remove the installed service. |
228232
| `setup` | Interactive messaging-platform setup. |
233+
| `migrate-legacy` | Remove legacy `hermes.service` units left over from pre-rename installs. Profile units (`hermes-gateway-<profile>.service`) and unrelated services are never touched. Flags: `--dry-run`, `-y`/`--yes`. |
229234
| `enroll` | Experimental: enroll this gateway with a relay connector and save relay credentials for connector-backed platforms. |
230235

231236
Options:
@@ -235,7 +240,7 @@ Options:
235240
| `--all` | On `start` / `restart` / `stop`: act on **every profile's** gateway, not just the active `HERMES_HOME`. Useful if you run multiple profiles side-by-side and want to restart them all after `hermes update`. |
236241
| `--no-supervise` | On `run`: inside the s6-overlay Docker image, opt out of auto-supervision and use pre-s6 foreground semantics — gateway runs as the container's main process with no auto-restart. No-op outside the s6 image. Equivalent to setting `HERMES_GATEWAY_NO_SUPERVISE=1`. |
237242

238-
`hermes gateway enroll` accepts `--token`, `--connector-url`, and `--gateway-id`. It exchanges the enrollment token with the connector and writes the resulting `GATEWAY_RELAY_ID`, `GATEWAY_RELAY_SECRET`, `GATEWAY_RELAY_DELIVERY_KEY`, and optional `GATEWAY_RELAY_URL` values to the active profile's `.env`.
243+
`hermes gateway enroll` accepts `--token`, `--connector-url`, `--gateway-id`, and `--wake-url`. It exchanges the enrollment token with the connector and writes the resulting `GATEWAY_RELAY_ID`, `GATEWAY_RELAY_SECRET`, `GATEWAY_RELAY_DELIVERY_KEY`, optional `GATEWAY_RELAY_URL`, and (when `--wake-url` is given) `GATEWAY_RELAY_WAKE_URL` values to the active profile's `.env`.
239244

240245
:::tip WSL users
241246
Use `hermes gateway run` instead of `hermes gateway start` — WSL's systemd support is unreliable. Wrap it in tmux for persistence: `tmux new -s hermes 'hermes gateway run'`. See [WSL FAQ](/reference/faq#wsl-gateway-keeps-disconnecting-or-hermes-gateway-start-fails) for details.
@@ -613,6 +618,28 @@ All actions are also available as a slash command in the gateway (`/kanban …`)
613618

614619
For the full design — comparison with Cline Kanban / Paperclip / NanoClaw / Gemini Enterprise, eight collaboration patterns, four user stories, concurrency correctness proof — see `docs/hermes-kanban-v1-spec.pdf` in the repository or the [Kanban user guide](/user-guide/features/kanban).
615620

621+
## `hermes project`
622+
623+
```bash
624+
hermes project <create|list|show|add-folder|remove-folder|rename|set-primary|use|archive|restore|bind-board>
625+
```
626+
627+
Projects are human-named workspaces that can span multiple folders / repos. They anchor desktop session grouping and, when bound to a kanban board, give tasks a deterministic worktree + branch convention. State is per-profile.
628+
629+
| Subcommand | Description |
630+
|------------|-------------|
631+
| `create` | Create a new project. |
632+
| `list` (alias `ls`) | List projects. |
633+
| `show` | Show a project's details. |
634+
| `add-folder` | Add a folder / repo to a project. |
635+
| `remove-folder` | Remove a folder from a project. |
636+
| `rename` | Rename a project. |
637+
| `set-primary` | Set the primary folder. |
638+
| `use` | Set the active project. |
639+
| `archive` | Archive a project (recoverable). |
640+
| `restore` | Restore an archived project. |
641+
| `bind-board` | Bind a kanban board to this project. |
642+
616643
## `hermes webhook`
617644

618645
```bash
@@ -1299,6 +1326,27 @@ of the update if cua-driver is on PATH, so most users will not need to
12991326
call `--upgrade` manually. Use it when upstream ships a fix you want
13001327
right now without waiting for the next Hermes update.
13011328

1329+
## `hermes pets`
1330+
1331+
```bash
1332+
hermes pets <list|install|select|show|off|scale|remove|doctor>
1333+
```
1334+
1335+
[Petdex](https://github.com/crafter-station/petdex) is a public gallery of animated sprite pets for coding agents. Install one and Hermes shows it reacting to agent activity across the CLI, TUI, and desktop app.
1336+
1337+
| Subcommand | Description |
1338+
|------------|-------------|
1339+
| `list` | Browse the petdex gallery. |
1340+
| `install` | Install a pet from the gallery. |
1341+
| `select` | Set the active pet (writes `display.pet.*`). |
1342+
| `show` | Animate the active pet in the terminal. |
1343+
| `off` | Disable the pet display. |
1344+
| `scale` | Resize the pet everywhere (`display.pet.scale`). |
1345+
| `remove` | Delete an installed pet. |
1346+
| `doctor` | Check pet setup + terminal graphics support. |
1347+
1348+
You can also generate a brand-new pet from a text description with the `/hatch` slash command. See [Pets](../user-guide/features/pets.md).
1349+
13021350
## `hermes sessions`
13031351

13041352
```bash
@@ -1392,11 +1440,22 @@ Launch the web dashboard — a browser-based UI for managing configuration, API
13921440
| `--port` | `9119` | Port to run the web server on |
13931441
| `--host` | `127.0.0.1` | Bind address |
13941442
| `--no-open` || Don't auto-open the browser |
1395-
| `--insecure` | off | Allow binding to non-localhost hosts. Exposes dashboard credentials on the network; use only behind trusted network controls. |
1443+
| `--insecure` | off | **Deprecated / no-op.** Formerly bypassed auth on a non-loopback bind. Since the June 2026 hardening a public bind *always* requires an auth provider (password or OAuth). Bind `127.0.0.1` and tunnel to keep it local. |
1444+
| `--skip-build` | off | Skip the web UI build step and serve the existing `dist` directly. Useful for non-interactive contexts (Windows Scheduled Tasks, CI) where npm isn't available. Pre-build with `cd web && npm run build`. |
13961445
| `--isolated` | off | When launched from a named profile (`worker dashboard`), run a dedicated per-profile server instead of routing to the machine dashboard. |
13971446
| `--stop` || Stop running `hermes dashboard` processes and exit. |
13981447
| `--status` || List running `hermes dashboard` processes and exit. |
13991448

1449+
### `hermes dashboard register`
1450+
1451+
Register this install as a self-hosted dashboard with your Nous Portal account. Creates an OAuth client, writes `HERMES_DASHBOARD_OAUTH_CLIENT_ID` into `~/.hermes/.env`, and prints how to engage the login gate. Requires being logged in (`hermes setup`).
1452+
1453+
| Option | Description |
1454+
|--------|-------------|
1455+
| `--name` | Human-readable label for the dashboard (default: auto-generated). |
1456+
| `--redirect-uri` | Public HTTPS OAuth redirect URI (e.g. `https://hermes.example.com/auth/callback`). Omit for localhost-only use. |
1457+
| `--portal-url` | Override the Nous Portal base URL for registration (default: the portal you logged into). Also settable via `HERMES_DASHBOARD_PORTAL_URL`. |
1458+
14001459
```bash
14011460
# Default — opens browser to http://127.0.0.1:9119
14021461
hermes dashboard

0 commit comments

Comments
 (0)