diff --git a/website/docs/developer-guide/adding-platform-adapters.md b/website/docs/developer-guide/adding-platform-adapters.md index a8433fcacdd..a695c1544d2 100644 --- a/website/docs/developer-guide/adding-platform-adapters.md +++ b/website/docs/developer-guide/adding-platform-adapters.md @@ -9,7 +9,7 @@ This guide covers adding a new messaging platform to the Hermes gateway. A platf :::tip There are two ways to add a platform: - **Plugin** (recommended for community/third-party): Drop a plugin directory into `~/.hermes/plugins/` — zero core code changes needed. See [Plugin Path](#plugin-path-recommended) below. -- **Built-in**: Modify 20+ files across code, config, and docs. Use the [Built-in Checklist](#step-by-step-checklist) below. +- **Built-in**: Modify 20+ files across code, config, and docs. Use the [Built-in Checklist](#step-by-step-checklist-built-in-path) below. ::: ## Architecture Overview diff --git a/website/docs/developer-guide/adding-providers.md b/website/docs/developer-guide/adding-providers.md index 387c9e5b6e8..f21b6341cf6 100644 --- a/website/docs/developer-guide/adding-providers.md +++ b/website/docs/developer-guide/adding-providers.md @@ -321,12 +321,12 @@ At minimum, touch the tests that guard provider wiring. Common places: -- `tests/test_runtime_provider_resolution.py` -- `tests/test_cli_provider_resolution.py` -- `tests/test_cli_model_command.py` -- `tests/test_setup_model_selection.py` -- `tests/test_provider_parity.py` -- `tests/test_run_agent.py` +- `tests/hermes_cli/test_runtime_provider_resolution.py` +- `tests/cli/test_cli_provider_resolution.py` +- `tests/hermes_cli/test_model_switch_custom_providers.py` (and adjacent `tests/hermes_cli/test_model_switch_*.py`) +- `tests/hermes_cli/test_setup_model_provider.py` +- `tests/run_agent/test_provider_parity.py` +- `tests/run_agent/test_run_agent.py` - `tests/test__adapter.py` for a native provider For docs-only examples, the exact file set may differ. The point is to cover: @@ -342,7 +342,7 @@ Run tests with xdist disabled: ```bash source venv/bin/activate -python -m pytest tests/test_runtime_provider_resolution.py tests/test_cli_provider_resolution.py tests/test_cli_model_command.py tests/test_setup_model_selection.py -n0 -q +python -m pytest tests/hermes_cli/test_runtime_provider_resolution.py tests/cli/test_cli_provider_resolution.py tests/hermes_cli/test_setup_model_provider.py tests/run_agent/test_provider_parity.py -n0 -q ``` For deeper changes, run the full suite before pushing: diff --git a/website/docs/developer-guide/agent-loop.md b/website/docs/developer-guide/agent-loop.md index fdc0cc3c8f9..46a100c4766 100644 --- a/website/docs/developer-guide/agent-loop.md +++ b/website/docs/developer-guide/agent-loop.md @@ -6,7 +6,7 @@ description: "Detailed walkthrough of AIAgent execution, API modes, tools, callb # Agent Loop Internals -The core orchestration engine is `run_agent.py`'s `AIAgent` class — a large file (15k+ lines) that handles everything from prompt assembly to tool dispatch to provider failover. +The core orchestration engine is `run_agent.py`'s `AIAgent` class — a large file (~4,400 lines) that handles everything from prompt assembly to tool dispatch to provider failover. ## Core Responsibilities diff --git a/website/docs/developer-guide/architecture.md b/website/docs/developer-guide/architecture.md index 4c83f17aa3f..93077db0a64 100644 --- a/website/docs/developer-guide/architecture.md +++ b/website/docs/developer-guide/architecture.md @@ -40,7 +40,7 @@ This page is the top-level map of Hermes Agent internals. Use it to orient yours ▼ ▼ ┌───────────────────┐ ┌──────────────────────┐ │ Session Storage │ │ Tool Backends │ -│ (SQLite + FTS5) │ │ Terminal (7 backends) │ +│ (SQLite + FTS5) │ │ Terminal (6 backends) │ │ hermes_state.py │ │ Browser (5 backends) │ │ gateway/session.py│ │ Web (4 backends) │ └───────────────────┘ │ MCP (dynamic) │ @@ -130,7 +130,7 @@ hermes-agent/ ├── skills/ # Bundled skills (always available) ├── optional-skills/ # Official optional skills (install explicitly) ├── website/ # Docusaurus documentation site -└── tests/ # Pytest suite (~3,000+ tests) +└── tests/ # Pytest suite (~25,000 tests across ~1,250 files) ``` ## Data Flow diff --git a/website/docs/developer-guide/browser-supervisor.md b/website/docs/developer-guide/browser-supervisor.md index 8b56cf6bda8..a30abdbdaca 100644 --- a/website/docs/developer-guide/browser-supervisor.md +++ b/website/docs/developer-guide/browser-supervisor.md @@ -1,57 +1,49 @@ -# Browser CDP Supervisor — Design +--- +sidebar_position: 18 +title: "Browser CDP Supervisor" +description: "How Hermes detects and responds to native JS dialogs and interacts with cross-origin iframes via a persistent CDP connection." +--- -**Status:** Shipped (PR 14540) -**Last updated:** 2026-04-23 -**Author:** @teknium1 +# Browser CDP Supervisor -## Problem +The CDP supervisor closes two long-standing gaps in Hermes' browser tooling: -Native JS dialogs (`alert`/`confirm`/`prompt`/`beforeunload`) and iframes are -the two biggest gaps in our browser tooling: +1. **Native JS dialogs** (`alert`/`confirm`/`prompt`/`beforeunload`) block the + page's JS thread. Without supervision, the agent has no way to know a + dialog is open — subsequent tool calls hang or throw opaque errors. +2. **Cross-origin iframes (OOPIFs)** are invisible to top-level + `Runtime.evaluate`. The agent can see iframe nodes in the DOM snapshot but + can't click, type, or eval inside them without a CDP session attached to + the child target. -1. **Dialogs block the JS thread.** Any operation on the page stalls until the - dialog is handled. Before this work, the agent had no way to know a dialog - was open — subsequent tool calls would hang or throw opaque errors. -2. **Iframes are invisible.** The agent could see iframe nodes in the DOM - snapshot but could not click, type, or eval inside them — especially - cross-origin (OOPIF) iframes that live in separate Chromium processes. +The supervisor solves both by holding a persistent WebSocket to the backend's +CDP endpoint per browser task, surfacing pending dialogs and frame structure +into `browser_snapshot`, and exposing a `browser_dialog` tool for explicit +responses. -[PR #12550](https://github.com/NousResearch/hermes-agent/pull/12550) proposed a -stateless `browser_dialog` wrapper. That doesn't solve detection — it's a -cleaner CDP call for when the agent already knows (via symptoms) that a dialog -is open. Closed as superseded. - -## Backend capability matrix (verified live 2026-04-23) - -Using throwaway probe scripts against a data-URL page that fires alerts in the -main frame and in a same-origin srcdoc iframe, plus a cross-origin -`https://example.com` iframe: +## Backend support | Backend | Dialog detect | Dialog respond | Frame tree | OOPIF `Runtime.evaluate` via `browser_cdp(frame_id=...)` | |---|---|---|---|---| | Local Chrome (`--remote-debugging-port`) / `/browser connect` | ✓ | ✓ full workflow | ✓ | ✓ | -| Browserbase | ✓ (via bridge) | ✓ full workflow (via bridge) | ✓ | ✓ (`document.title = "Example Domain"` verified on real cross-origin iframe) | +| Browserbase | ✓ (via bridge) | ✓ full workflow (via bridge) | ✓ | ✓ | | Camofox | ✗ no CDP (REST-only) | ✗ | partial via DOM snapshot | ✗ | -**How Browserbase respond works.** Browserbase's CDP proxy uses Playwright -internally and auto-dismisses native dialogs within ~10ms, so -`Page.handleJavaScriptDialog` can't keep up. To work around this, the -supervisor injects a bridge script via +**Browserbase quirk.** Browserbase's CDP proxy uses Playwright internally and +auto-dismisses native dialogs within ~10ms, so `Page.handleJavaScriptDialog` +can't keep up. The supervisor injects a bridge script via `Page.addScriptToEvaluateOnNewDocument` that overrides `window.alert`/`confirm`/`prompt` with a synchronous XHR to a magic host -(`hermes-dialog-bridge.invalid`). `Fetch.enable` intercepts those XHRs -before they touch the network — the dialog becomes a `Fetch.requestPaused` -event the supervisor captures, and `respond_to_dialog` fulfills via +(`hermes-dialog-bridge.invalid`). `Fetch.enable` intercepts those XHRs before +they touch the network — the dialog becomes a `Fetch.requestPaused` event the +supervisor captures, and `respond_to_dialog` fulfills via `Fetch.fulfillRequest` with a JSON body the injected script decodes. -Net result: from the page's perspective, `prompt()` still returns the -agent-supplied string. From the agent's perspective, it's the same -`browser_dialog(action=...)` API either way. Tested end-to-end against -real Browserbase sessions — 4/4 (alert/prompt/confirm-accept/confirm-dismiss) -pass including value round-tripping back into page JS. +From the page's perspective, `prompt()` still returns the agent-supplied +string. From the agent's perspective, it's the same `browser_dialog(action=...)` +API either way. -Camofox stays unsupported for this PR; follow-up upstream issue planned at -`jo-inc/camofox-browser` requesting a dialog polling endpoint. +Camofox is unsupported — no CDP surface, REST-only. ## Architecture @@ -63,9 +55,10 @@ Holds a persistent WebSocket to the backend's CDP endpoint. Maintains: - **Dialog queue** — `List[PendingDialog]` with `{id, type, message, default_prompt, session_id, opened_at}` - **Frame tree** — `Dict[frame_id, FrameInfo]` with parent relationships, URL, origin, whether cross-origin child session - **Session map** — `Dict[session_id, SessionInfo]` so interaction tools can route to the right attached session for OOPIF operations -- **Recent console errors** — ring buffer of the last 50 (for PR 2 diagnostics) +- **Recent console errors** — ring buffer of the last 50 for diagnostics Subscribes on attach: + - `Page.enable` — `javascriptDialogOpening`, `frameAttached`, `frameNavigated`, `frameDetached` - `Runtime.enable` — `executionContextCreated`, `consoleAPICalled`, `exceptionThrown` - `Target.setAutoAttach {autoAttach: true, flatten: true}` — surfaces child OOPIF targets; supervisor enables `Page`+`Runtime` on each @@ -76,11 +69,13 @@ frozen snapshot without awaiting. ### Lifecycle - **Start:** `SupervisorRegistry.get_or_start(task_id, cdp_url)` — called by - `browser_navigate`, Browserbase session create, `/browser connect`. Idempotent. + `browser_navigate`, Browserbase session create, `/browser connect`. + Idempotent. - **Stop:** session teardown or `/browser disconnect`. Cancels the asyncio task, closes the WebSocket, discards state. -- **Rebind:** if the CDP URL changes (user reconnects to a new Chrome), stop - the old supervisor and start fresh — never reuse state across endpoints. +- **Rebind:** if the CDP URL changes (user reconnects to a new Chrome), the + old supervisor is stopped and a fresh one started — state is never reused + across endpoints. ### Dialog policy @@ -92,14 +87,14 @@ Configurable via `config.yaml` under `browser.dialog_policy`: forever. - `auto_dismiss` — record and dismiss immediately; agent sees it after the fact via `browser_state` inside `browser_snapshot`. -- `auto_accept` — record and accept (useful for `beforeunload` where the user - wants to navigate away cleanly). +- `auto_accept` — record and accept (useful for `beforeunload` where the + workflow wants to navigate away cleanly). -Policy is per-task; no per-dialog overrides in v1. +Policy is per-task; no per-dialog overrides. -## Agent surface (PR 1) +## Agent surface -### One new tool +### `browser_dialog` tool ``` browser_dialog(action, prompt_text=None, dialog_id=None) @@ -107,9 +102,9 @@ browser_dialog(action, prompt_text=None, dialog_id=None) - `action="accept"` / `"dismiss"` → responds to the specified or sole pending dialog (required) - `prompt_text=...` → text to supply to a `prompt()` dialog -- `dialog_id=...` → disambiguate when multiple dialogs queued (rare) +- `dialog_id=...` → disambiguate when multiple dialogs are queued (rare) -Tool is response-only. Agent reads pending dialogs from `browser_snapshot` +Tool is response-only. The agent reads pending dialogs from `browser_snapshot` output before calling. ### `browser_snapshot` extension @@ -137,72 +132,52 @@ is attached: } ``` -- **`pending_dialogs`**: dialogs currently blocking the page's JS thread. +- **`pending_dialogs`** — dialogs currently blocking the page's JS thread. The agent must call `browser_dialog(action=...)` to respond. Empty on Browserbase because their CDP proxy auto-dismisses within ~10ms. -- **`recent_dialogs`**: ring buffer of up to 20 recently-closed dialogs with - a `closed_by` tag — `"agent"` (we responded), `"auto_policy"` (local +- **`recent_dialogs`** — ring buffer of up to 20 recently-closed dialogs with + a `closed_by` tag: `"agent"` (we responded), `"auto_policy"` (local auto_dismiss/auto_accept), `"watchdog"` (must_respond timeout hit), or `"remote"` (browser/backend closed it on us, e.g. Browserbase). This is how agents on Browserbase still get visibility into what happened. -- **`frame_tree`**: frame structure including cross-origin (OOPIF) children. +- **`frame_tree`** — frame structure including cross-origin (OOPIF) children. Capped at 30 entries + OOPIF depth 2 to bound snapshot size on ad-heavy pages. `truncated: true` surfaces when limits were hit; agents needing the full tree can use `browser_cdp` with `Page.getFrameTree`. -No new tool schema surface for any of these — the agent reads the snapshot -it already requests. +No new tool schema surface for any of these — the agent reads the snapshot it +already requests. ### Availability gating Both surfaces gate on `_browser_cdp_check` (supervisor can only run when a CDP endpoint is reachable). On Camofox / no-backend sessions, the dialog tool is -hidden and snapshot omits the new fields — no schema bloat. +hidden and the snapshot omits the new fields — no schema bloat. ## Cross-origin iframe interaction -Extending the dialog-detect work, `browser_cdp(frame_id=...)` routes CDP -calls (notably `Runtime.evaluate`) through the supervisor's already-connected -WebSocket using the OOPIF's child `sessionId`. Agents pick frame_ids out of +`browser_cdp(frame_id=...)` routes CDP calls (notably `Runtime.evaluate`) +through the supervisor's already-connected WebSocket using the OOPIF's child +`sessionId`. Agents pick frame_ids out of `browser_snapshot.frame_tree.children[]` where `is_oopif=true` and pass them to `browser_cdp`. For same-origin iframes (no dedicated CDP session), the agent uses `contentWindow`/`contentDocument` from a top-level -`Runtime.evaluate` instead — supervisor surfaces an error pointing at that +`Runtime.evaluate` instead — the supervisor surfaces an error pointing at that fallback when `frame_id` belongs to a non-OOPIF. -On Browserbase, this is the ONLY reliable path for iframe interaction — +On Browserbase, this is the only reliable path for iframe interaction — stateless CDP connections (opened per `browser_cdp` call) hit signed-URL expiry, while the supervisor's long-lived connection keeps a valid session. -## Camofox (follow-up) - -Issue planned against `jo-inc/camofox-browser` adding: -- Playwright `page.on('dialog', handler)` per session -- `GET /tabs/:tabId/dialogs` polling endpoint -- `POST /tabs/:tabId/dialogs/:id` to accept/dismiss -- Frame-tree introspection endpoint - -## Files touched (PR 1) - -### New +## File layout - `tools/browser_supervisor.py` — `CDPSupervisor`, `SupervisorRegistry`, `PendingDialog`, `FrameInfo` - `tools/browser_dialog_tool.py` — `browser_dialog` tool handler -- `tests/tools/test_browser_supervisor.py` — mock CDP WebSocket server + lifecycle/state tests -- `website/docs/developer-guide/browser-supervisor.md` — this file - -### Modified - -- `toolsets.py` — register `browser_dialog` in `browser`, `hermes-acp`, `hermes-api-server`, core toolsets (gated on CDP reachability) -- `tools/browser_tool.py` - - `browser_navigate` start-hook: if CDP URL resolvable, `SupervisorRegistry.get_or_start(task_id, cdp_url)` - - `browser_snapshot` (at ~line 1536): merge supervisor state into return payload - - `/browser connect` handler: restart supervisor with new endpoint - - Session teardown hooks in `_cleanup_browser_session` -- `hermes_cli/config.py` — add `browser.dialog_policy` and `browser.dialog_timeout_s` to `DEFAULT_CONFIG` -- Docs: `website/docs/user-guide/features/browser.md`, `website/docs/reference/tools-reference.md`, `website/docs/reference/toolsets-reference.md` +- `tools/browser_tool.py` — `browser_navigate` start-hook, `browser_snapshot` merge, `/browser connect` reattach, `_cleanup_browser_session` teardown +- `toolsets.py` — registers `browser_dialog` in `browser`, `hermes-acp`, `hermes-api-server`, and core toolsets (gated on CDP reachability) +- `hermes_cli/config.py` — `browser.dialog_policy` and `browser.dialog_timeout_s` defaults ## Non-goals @@ -214,9 +189,10 @@ Issue planned against `jo-inc/camofox-browser` adding: ## Testing -Unit tests use an asyncio mock CDP server that speaks enough of the protocol -to exercise all state transitions: attach, enable, navigate, dialog fire, -dialog dismiss, frame attach/detach, child target attach, session teardown. -Real-backend E2E (Browserbase + local Chromium-family browser) is manual — exercise via -`/browser connect` to a live Chromium-family browser and run the dialog/frame -test cases described above. +Unit tests (`tests/tools/test_browser_supervisor.py`) use an asyncio mock CDP +server that speaks enough of the protocol to exercise all state transitions: +attach, enable, navigate, dialog fire, dialog dismiss, frame attach/detach, +child target attach, session teardown. Real-backend E2E (Browserbase + local +Chromium-family browser) is manual — exercise via `/browser connect` to a +live Chromium-family browser and run the dialog/frame test cases described +above. diff --git a/website/docs/developer-guide/memory-provider-plugin.md b/website/docs/developer-guide/memory-provider-plugin.md index 14112bb1eb8..fa1a79791a8 100644 --- a/website/docs/developer-guide/memory-provider-plugin.md +++ b/website/docs/developer-guide/memory-provider-plugin.md @@ -61,7 +61,7 @@ class MyMemoryProvider(MemoryProvider): | `is_available()` | Agent init, before activation | **Yes** — no network calls | | `initialize(session_id, **kwargs)` | Agent startup | **Yes** | | `get_tool_schemas()` | After init, for tool injection | **Yes** | -| `handle_tool_call(name, args)` | When agent uses your tools | **Yes** (if you have tools) | +| `handle_tool_call(tool_name, args, **kwargs)` | When agent uses your tools | **Yes** (if you have tools) | ### Config @@ -75,9 +75,9 @@ class MyMemoryProvider(MemoryProvider): | Method | When Called | Use Case | |--------|-----------|----------| | `system_prompt_block()` | System prompt assembly | Static provider info | -| `prefetch(query)` | Before each API call | Return recalled context | +| `prefetch(query, *, session_id="")` | Before each API call | Return recalled context | | `queue_prefetch(query)` | After each turn | Pre-warm for next turn | -| `sync_turn(user, assistant)` | After each completed turn | Persist conversation | +| `sync_turn(user, assistant, *, session_id="")` | After each completed turn | Persist conversation | | `on_session_end(messages)` | Conversation ends | Final extraction/flush | | `on_pre_compress(messages)` | Before context compression | Save insights before discard | | `on_memory_write(action, target, content)` | Built-in memory writes | Mirror to your backend | @@ -182,7 +182,7 @@ data_dir = Path("~/.hermes/my-provider").expanduser() ## Testing -See `tests/agent/test_memory_plugin_e2e.py` for the complete E2E testing pattern using a real SQLite provider. +See `tests/agent/test_memory_provider.py` and adjacent memory tests (`tests/agent/test_memory_session_switch.py`, `tests/agent/test_memory_user_id.py`, `tests/run_agent/test_memory_provider_init.py`) for end-to-end patterns. ```python from agent.memory_manager import MemoryManager diff --git a/website/docs/developer-guide/provider-runtime.md b/website/docs/developer-guide/provider-runtime.md index 9f87077191c..b412ff479a3 100644 --- a/website/docs/developer-guide/provider-runtime.md +++ b/website/docs/developer-guide/provider-runtime.md @@ -193,7 +193,11 @@ Cron jobs **do** support fallback: `run_job()` reads `fallback_providers` (or le ### Test coverage -See `tests/test_fallback_model.py` for comprehensive tests covering all supported providers, one-shot semantics, and edge cases. +Fallback behavior is exercised across several suites: + +- `tests/run_agent/test_fallback_credential_isolation.py` — credential isolation between primary and fallback +- `tests/hermes_cli/test_fallback_cmd.py` — the `/fallback` CLI command +- `tests/gateway/test_fallback_eviction.py` — gateway eviction of failed providers ## Related docs diff --git a/website/docs/developer-guide/web-search-provider-plugin.md b/website/docs/developer-guide/web-search-provider-plugin.md index a89ee9b4b7b..85387f50070 100644 --- a/website/docs/developer-guide/web-search-provider-plugin.md +++ b/website/docs/developer-guide/web-search-provider-plugin.md @@ -6,7 +6,7 @@ description: "How to build a web-search/extract/crawl backend plugin for Hermes # Building a Web Search Provider Plugin -Web-search provider plugins register a backend that services `web_search`, `web_extract`, and (optionally) deep-crawl tool calls. Built-in providers — Firecrawl, SearXNG, Tavily, Exa, Parallel, Brave Search (free tier), and DDGS — all ship as plugins under `plugins/web//`. You can add a new one, or override a bundled one, by dropping a directory next to them. +Web-search provider plugins register a backend that services `web_search`, `web_extract`, and (optionally) deep-crawl tool calls. Built-in providers — Firecrawl, SearXNG, Tavily, Exa, Parallel, Brave Search (free tier), xAI, and DDGS — all ship as plugins under `plugins/web//`. You can add a new one, or override a bundled one, by dropping a directory next to them. :::tip Web search is one of several **backend plugins** Hermes supports. The others (with their own ABCs) are [Image Generation Provider Plugins](/developer-guide/image-gen-provider-plugin), [Video Generation Provider Plugins](/developer-guide/video-gen-provider-plugin), [Memory Provider Plugins](/developer-guide/memory-provider-plugin), [Context Engine Plugins](/developer-guide/context-engine-plugin), and [Model Provider Plugins](/developer-guide/model-provider-plugin). General tool/hook/CLI plugins live in [Build a Hermes Plugin](/guides/build-a-hermes-plugin). diff --git a/website/docs/getting-started/learning-path.md b/website/docs/getting-started/learning-path.md index 59d7775d259..619e2010394 100644 --- a/website/docs/getting-started/learning-path.md +++ b/website/docs/getting-started/learning-path.md @@ -12,6 +12,10 @@ Hermes Agent can do a lot — CLI assistant, Telegram/Discord bot, task automati If you haven't installed Hermes Agent yet, begin with the [Installation guide](/getting-started/installation) and then run through the [Quickstart](/getting-started/quickstart). Everything below assumes you have a working installation. ::: +:::tip First-time provider setup +First-time users almost always want `hermes setup --portal` — one OAuth covers a model plus the four Tool Gateway tools (search/image/TTS/browser). See [Nous Portal](/integrations/nous-portal). +::: + ## How to Use This Page - **Know your level?** Jump to the [experience-level table](#by-experience-level) and follow the reading order for your tier. @@ -24,7 +28,7 @@ If you haven't installed Hermes Agent yet, begin with the [Installation guide](/ |---|---|---|---| | **Beginner** | Get up and running, have basic conversations, use built-in tools | [Installation](/getting-started/installation) → [Quickstart](/getting-started/quickstart) → [CLI Usage](/user-guide/cli) → [Configuration](/user-guide/configuration) | ~1 hour | | **Intermediate** | Set up messaging bots, use advanced features like memory, cron jobs, and skills | [Sessions](/user-guide/sessions) → [Messaging](/user-guide/messaging) → [Tools](/user-guide/features/tools) → [Skills](/user-guide/features/skills) → [Memory](/user-guide/features/memory) → [Cron](/user-guide/features/cron) | ~2–3 hours | -| **Advanced** | Build custom tools, create skills, train models with RL, contribute to the project | [Architecture](/developer-guide/architecture) → [Adding Tools](/developer-guide/adding-tools) → [Creating Skills](/developer-guide/creating-skills) → [RL Training](/user-guide/features/rl-training) → [Contributing](/developer-guide/contributing) | ~4–6 hours | +| **Advanced** | Build custom tools, create skills, train models with RL, contribute to the project | [Architecture](/developer-guide/architecture) → [Adding Tools](/developer-guide/adding-tools) → [Creating Skills](/developer-guide/creating-skills) → [Contributing](/developer-guide/contributing) | ~4–6 hours | ## By Use Case @@ -96,11 +100,11 @@ page is for built-in Hermes core development, not the usual user/custom-tool pat ### "I want to train models" -Use reinforcement learning to fine-tune model behavior with Hermes Agent's built-in RL training pipeline. +Use reinforcement learning to fine-tune model behavior with Hermes Agent's RL training pipeline (powered by [Atropos](https://github.com/NousResearch/atropos)). 1. [Quickstart](/getting-started/quickstart) 2. [Configuration](/user-guide/configuration) -3. [RL Training](/user-guide/features/rl-training) +3. [Atropos RL Environments](https://github.com/NousResearch/atropos) (external) 4. [Provider Routing](/user-guide/features/provider-routing) 5. [Architecture](/developer-guide/architecture) @@ -136,7 +140,6 @@ Not sure what's available? Here's a quick directory of major features: | **Browser** | Web browsing and scraping | [Browser](/user-guide/features/browser) | | **Hooks** | Event-driven callbacks and middleware | [Hooks](/user-guide/features/hooks) | | **Batch Processing** | Process multiple inputs in bulk | [Batch Processing](/user-guide/features/batch-processing) | -| **RL Training** | Fine-tune models with reinforcement learning | [RL Training](/user-guide/features/rl-training) | | **Provider Routing** | Route requests across multiple LLM providers | [Provider Routing](/user-guide/features/provider-routing) | ## What to Read Next diff --git a/website/docs/getting-started/quickstart.md b/website/docs/getting-started/quickstart.md index ad139fa99a1..74d34ea9299 100644 --- a/website/docs/getting-started/quickstart.md +++ b/website/docs/getting-started/quickstart.md @@ -106,17 +106,29 @@ Good defaults: | **OpenAI Codex** | ChatGPT OAuth, uses Codex models | Device code auth via `hermes model` | | **Anthropic** | Claude models directly — Max plan + extra usage credits (OAuth), or API key for pay-per-token | `hermes model` → OAuth login (requires Max + extra credits), or an Anthropic API key | | **OpenRouter** | Multi-provider routing across many models | Enter your API key | -| **Z.AI** | GLM / Zhipu-hosted models | Set `GLM_API_KEY` / `ZAI_API_KEY` | +| **Z.AI** | GLM / Zhipu-hosted models | Set `GLM_API_KEY` / `ZAI_API_KEY` (also accepts `Z_AI_API_KEY`) | | **Kimi / Moonshot** | Moonshot-hosted coding and chat models | Set `KIMI_API_KEY` (or the Kimi-Coding-specific `KIMI_CODING_API_KEY`) | | **Kimi / Moonshot China** | China-region Moonshot endpoint | Set `KIMI_CN_API_KEY` | | **Arcee AI** | Trinity models | Set `ARCEEAI_API_KEY` | | **GMI Cloud** | Multi-model direct API | Set `GMI_API_KEY` | -| **MiniMax (OAuth)** | MiniMax-M2.7 via browser OAuth — no API key needed | `hermes model` → MiniMax (OAuth) | +| **MiniMax (OAuth)** | MiniMax frontier model via browser OAuth — no API key needed (model name in `hermes_cli/models.py` may change between releases) | `hermes model` → MiniMax (OAuth) | | **MiniMax** | International MiniMax endpoint | Set `MINIMAX_API_KEY` | | **MiniMax China** | China-region MiniMax endpoint | Set `MINIMAX_CN_API_KEY` | -| **Alibaba Cloud** | Qwen models via DashScope | Set `DASHSCOPE_API_KEY` | +| **Alibaba Cloud** | Qwen models via DashScope | Set `DASHSCOPE_API_KEY` (Qwen Coding Plan also accepts `ALIBABA_CODING_PLAN_API_KEY`) | | **Hugging Face** | 20+ open models via unified router (Qwen, DeepSeek, Kimi, etc.) | Set `HF_TOKEN` | | **AWS Bedrock** | Claude, Nova, Llama, DeepSeek via native Converse API | IAM role or `aws configure` ([guide](../guides/aws-bedrock.md)) | +| **Azure Foundry** | Azure AI Foundry-hosted models | Set `AZURE_FOUNDRY_API_KEY` + `AZURE_FOUNDRY_BASE_URL` | +| **Google AI Studio** | Gemini models via direct API | Set `GOOGLE_API_KEY` / `GEMINI_API_KEY` | +| **Google Gemini (OAuth)** | Gemini via the `google-gemini-cli` OAuth flow — no key needed | `hermes model` → Google Gemini (OAuth) | +| **xAI** | Grok models via direct API | Set `XAI_API_KEY` | +| **xAI Grok OAuth** | SuperGrok / Premium+ subscription, no API key needed | `hermes model` → xAI Grok OAuth | +| **NovitaAI** | Multi-model API gateway | Set `NOVITA_API_KEY` | +| **StepFun** | Step Plan models | Set `STEPFUN_API_KEY` | +| **Xiaomi MiMo** | Xiaomi-hosted models | Set `XIAOMI_API_KEY` | +| **Tencent TokenHub** | Tencent-hosted models | Set `TOKENHUB_API_KEY` | +| **Ollama Cloud** | Managed Ollama-hosted models | Set `OLLAMA_API_KEY` | +| **LM Studio** | Local desktop app exposing an OpenAI-compatible API | Set `LM_API_KEY` (and `LM_BASE_URL` if non-default) | +| **Qwen OAuth** | Qwen Portal browser OAuth — no API key needed | `hermes model` → Qwen OAuth | | **Kilo Code** | KiloCode-hosted models | Set `KILOCODE_API_KEY` | | **OpenCode Zen** | Pay-as-you-go access to curated models | Set `OPENCODE_ZEN_API_KEY` | | **OpenCode Go** | $10/month subscription for open models | Set `OPENCODE_GO_API_KEY` | diff --git a/website/docs/getting-started/updating.md b/website/docs/getting-started/updating.md index 4a6c9b4ba92..64774242c61 100644 --- a/website/docs/getting-started/updating.md +++ b/website/docs/getting-started/updating.md @@ -43,9 +43,21 @@ When you run `hermes update`, the following steps occur: 1. **Pairing-data snapshot** — a lightweight pre-update state snapshot is saved (covers `~/.hermes/pairing/`, Feishu comment rules, and other state files that get modified at runtime). Recoverable via the snapshot restore flow described under [Snapshots and rollback](../user-guide/checkpoints-and-rollback.md), or by extracting the most recent quick-snapshot zip Hermes wrote next to your `~/.hermes/` directory. 2. **Git pull** — pulls the latest code from the `main` branch and updates submodules -3. **Dependency install** — runs `uv pip install -e ".[all]"` to pick up new or changed dependencies -4. **Config migration** — detects new config options added since your version and prompts you to set them -5. **Gateway auto-restart** — running gateways are refreshed after the update completes so the new code takes effect immediately. Service-managed gateways (systemd on Linux, launchd on macOS) are restarted through the service manager. Manual gateways are relaunched automatically when Hermes can map the running PID back to a profile. +3. **Post-pull syntax validation + auto-rollback** — after the pull, Hermes compiles the eight critical files every `hermes` invocation imports at startup. If any fails to parse (e.g. an orphan merge-conflict marker, an accidentally truncated file), Hermes runs `git reset --hard ` to roll the install back so your shell stays bootable. Re-run `hermes update` once the upstream fix lands. +4. **Dependency install** — runs `uv pip install -e ".[all]"` to pick up new or changed dependencies +5. **Config migration** — detects new config options added since your version and prompts you to set them +6. **Gateway auto-restart** — running gateways are refreshed after the update completes so the new code takes effect immediately. Service-managed gateways (systemd on Linux, launchd on macOS) are restarted through the service manager. Manual gateways are relaunched automatically when Hermes can map the running PID back to a profile. + +### Updating against a non-default branch: `--branch` + +By default `hermes update` tracks `origin/main`. Pass `--branch ` to update against a different branch — useful for QA channels, feature branches, or release-candidate testing: + +```bash +hermes update --branch release-candidate +hermes update --check --branch experimental # preview behindness only +``` + +If your local checkout is on a different branch, Hermes auto-stashes any uncommitted work, switches HEAD to the target branch, and then pulls. Branches that don't exist locally are auto-tracked from `origin/` (`git checkout -B origin/`). Branches that don't exist anywhere fail cleanly — your stashed changes are restored before exit so you're never stranded in a weird state. The `main`-only fork-upstream sync logic is automatically skipped on non-`main` branches. ### Preview-only: `hermes update --check` @@ -190,10 +202,10 @@ uv pip install -e ".[all]" hermes gateway restart ``` -To roll back to a specific release tag: +To roll back to a specific release tag (substitute your previous tag — e.g. a recent release like `v2026.5.16`, or any earlier tag from `git tag --sort=-version:refname`): ```bash -git checkout v0.6.0 +git checkout vX.Y.Z git submodule update --init --recursive uv pip install -e ".[all]" ``` diff --git a/website/docs/guides/daily-briefing-bot.md b/website/docs/guides/daily-briefing-bot.md index 6bb23a283c2..a4fda461be8 100644 --- a/website/docs/guides/daily-briefing-bot.md +++ b/website/docs/guides/daily-briefing-bot.md @@ -10,6 +10,10 @@ In this tutorial, you'll build a personal briefing bot that wakes up every morni By the end, you'll have a fully automated workflow combining **web search**, **cron scheduling**, **delegation**, and **messaging delivery** — no code required. +:::tip +This recipe hits web search, summarization, and optional TTS — all bundled in a Portal subscription. The fastest setup is `hermes setup --portal`. See [Nous Portal](/integrations/nous-portal). +::: + ## What We're Building Here's the flow: diff --git a/website/docs/guides/migrate-from-openclaw.md b/website/docs/guides/migrate-from-openclaw.md index b3892bd0a00..b2f3c953cf8 100644 --- a/website/docs/guides/migrate-from-openclaw.md +++ b/website/docs/guides/migrate-from-openclaw.md @@ -8,6 +8,10 @@ description: "Complete guide to migrating your OpenClaw / Clawdbot setup to Herm `hermes claw migrate` imports your OpenClaw (or legacy Clawdbot/Moldbot) setup into Hermes. This guide covers exactly what gets migrated, the config key mappings, and what to verify after migration. +:::tip +If your OpenClaw setup was multi-provider, `hermes setup --portal` collapses it to one OAuth — 300+ models plus the Tool Gateway in a single login. See [Nous Portal](/integrations/nous-portal). +::: + ## Quick start ```bash diff --git a/website/docs/guides/minimax-oauth.md b/website/docs/guides/minimax-oauth.md index 1f5667f1621..2d81106c3a7 100644 --- a/website/docs/guides/minimax-oauth.md +++ b/website/docs/guides/minimax-oauth.md @@ -16,7 +16,7 @@ The transport reuses the `anthropic_messages` adapter (MiniMax exposes an Anthro |------|-------| | Provider ID | `minimax-oauth` | | Display name | MiniMax (OAuth) | -| Auth type | Browser OAuth (PKCE device-code flow) | +| Auth type | Browser OAuth (PKCE redirect flow) | | Transport | Anthropic Messages-compatible (`anthropic_messages`) | | Models | `MiniMax-M2.7`, `MiniMax-M2.7-highspeed` | | Global endpoint | `https://api.minimax.io/anthropic` | @@ -56,11 +56,9 @@ hermes auth add minimax-oauth ### China region -If your account is on the China platform (`minimaxi.com`), use the China-region OAuth provider id `minimax-cn` instead, or skip OAuth and configure `MINIMAX_CN_API_KEY` / `MINIMAX_CN_BASE_URL` directly. The `--region cn` flag described in older docs is **not** wired through the CLI's argument parser; use the `minimax-cn` provider instead: +If your account is on the China platform (`minimaxi.com`), use the API-key-based `minimax-cn` provider instead — `minimax-cn` is registered with `auth_type="api_key"` only (no OAuth flow). Configure `MINIMAX_CN_API_KEY` (and optionally `MINIMAX_CN_BASE_URL`) directly: ```bash -hermes auth add minimax-cn --type oauth # if OAuth is supported on your CN account -# or simpler: echo 'MINIMAX_CN_API_KEY=your-key' >> ~/.hermes/.env ``` @@ -76,7 +74,7 @@ Hermes will print the verification URL and user code — open the URL on any dev ## The OAuth Flow -Hermes implements a PKCE device-code flow against the MiniMax OAuth endpoints: +Hermes implements a PKCE browser OAuth flow against the MiniMax OAuth endpoints: 1. Hermes generates a PKCE verifier / challenge pair and a random state value. 2. It POSTs to `{base_url}/oauth/code` with the challenge and receives a `user_code` and `verification_uri`. @@ -115,8 +113,8 @@ hermes model Or set the model directly: ```bash -hermes config set model MiniMax-M2.7 -hermes config set provider minimax-oauth +hermes config set model.default MiniMax-M2.7 +hermes config set model.provider minimax-oauth ``` ## Configuration Reference diff --git a/website/docs/guides/python-library.md b/website/docs/guides/python-library.md index 3bb08645ac9..89fa122759b 100644 --- a/website/docs/guides/python-library.md +++ b/website/docs/guides/python-library.md @@ -44,7 +44,7 @@ The simplest way to use Hermes is the `chat()` method — pass a message, get a from run_agent import AIAgent agent = AIAgent( - model="anthropic/claude-sonnet-4", + model="anthropic/claude-sonnet-4.6", quiet_mode=True, ) response = agent.chat("What is the capital of France?") @@ -65,7 +65,7 @@ For more control over the conversation, use `run_conversation()` directly. It re ```python agent = AIAgent( - model="anthropic/claude-sonnet-4", + model="anthropic/claude-sonnet-4.6", quiet_mode=True, ) @@ -102,14 +102,14 @@ Control which toolsets the agent has access to using `enabled_toolsets` or `disa ```python # Only enable web tools (browsing, search) agent = AIAgent( - model="anthropic/claude-sonnet-4", + model="anthropic/claude-sonnet-4.6", enabled_toolsets=["web"], quiet_mode=True, ) # Enable everything except terminal access agent = AIAgent( - model="anthropic/claude-sonnet-4", + model="anthropic/claude-sonnet-4.6", disabled_toolsets=["terminal"], quiet_mode=True, ) @@ -127,7 +127,7 @@ Maintain conversation state across multiple turns by passing the message history ```python agent = AIAgent( - model="anthropic/claude-sonnet-4", + model="anthropic/claude-sonnet-4.6", quiet_mode=True, ) @@ -153,7 +153,7 @@ Enable trajectory saving to capture conversations in ShareGPT format — useful ```python agent = AIAgent( - model="anthropic/claude-sonnet-4", + model="anthropic/claude-sonnet-4.6", save_trajectories=True, quiet_mode=True, ) @@ -311,7 +311,7 @@ print(review) | Parameter | Type | Default | Description | |-----------|------|---------|-------------| -| `model` | `str` | `"anthropic/claude-opus-4.6"` | Model in OpenRouter format | +| `model` | `str` | `""` | Model in OpenRouter format (defaults to empty; resolved from your hermes config at runtime) | | `quiet_mode` | `bool` | `False` | Suppress CLI output | | `enabled_toolsets` | `List[str]` | `None` | Whitelist specific toolsets | | `disabled_toolsets` | `List[str]` | `None` | Blacklist specific toolsets | diff --git a/website/docs/guides/run-hermes-with-nous-portal.md b/website/docs/guides/run-hermes-with-nous-portal.md index b1d5b8aece2..a8ac20478e5 100644 --- a/website/docs/guides/run-hermes-with-nous-portal.md +++ b/website/docs/guides/run-hermes-with-nous-portal.md @@ -161,8 +161,9 @@ Then in any messaging-platform session (Telegram, Discord, Signal, etc.), send a The Portal subscription works for [cron jobs](/user-guide/features/cron) and [batch processing](/user-guide/features/batch-processing) the same way it works for interactive chat — the OAuth refresh token is reused automatically. No additional setup; just schedule cron jobs and they'll bill against your subscription. ```bash -hermes cron add "Daily AI news summary" "every day at 9am" \ - "Search the web for top AI news and summarize the 5 most important stories" +hermes cron create "every day at 9am" \ + "Search the web for top AI news and summarize the 5 most important stories" \ + --name "Daily AI news" ``` The cron job runs unattended, calls the model + web search + summarization all through your Portal subscription. diff --git a/website/docs/guides/tips.md b/website/docs/guides/tips.md index 643c576a4b0..ea7670ace50 100644 --- a/website/docs/guides/tips.md +++ b/website/docs/guides/tips.md @@ -8,6 +8,10 @@ description: "Practical advice to get the most out of Hermes Agent — prompt ti A quick-wins collection of practical tips that make you immediately more effective with Hermes Agent. Each section targets a different aspect — scan the headers and jump to what's relevant. +:::tip Confused which model to pick? +Run `hermes setup --portal` — you get 300+ models including Claude, GPT-5, and Gemini under one subscription. See [Nous Portal](/integrations/nous-portal). +::: + --- ## Getting the Best Results diff --git a/website/docs/guides/use-voice-mode-with-hermes.md b/website/docs/guides/use-voice-mode-with-hermes.md index f8685670e8f..90ca25bdb94 100644 --- a/website/docs/guides/use-voice-mode-with-hermes.md +++ b/website/docs/guides/use-voice-mode-with-hermes.md @@ -10,6 +10,10 @@ This guide is the practical companion to the [Voice Mode feature reference](/use If the feature page explains what voice mode can do, this guide shows how to actually use it well. +:::tip +[Nous Portal](/integrations/nous-portal) bundles both the LLM and TTS through one OAuth — voice mode works end-to-end with no extra credentials. +::: + ## What voice mode is good for Voice mode is especially useful when: diff --git a/website/docs/index.mdx b/website/docs/index.mdx index e0795305b69..30b9cda131d 100644 --- a/website/docs/index.mdx +++ b/website/docs/index.mdx @@ -36,6 +36,10 @@ iex (irm https://raw.githubusercontent.com/NousResearch/hermes-agent/main/script See the full **[Installation Guide](/getting-started/installation)** for what the installer does, the per-user vs root layout, and Windows-specific notes. +:::tip Fastest path to a working agent +After installing, run `hermes setup --portal` — one OAuth covers a model plus all four Tool Gateway tools (web search, image generation, TTS, browser). See [Nous Portal](/integrations/nous-portal). +::: + ## What is Hermes Agent? It's not a coding copilot tethered to an IDE or a chatbot wrapper around a single API. It's an **autonomous agent** that gets more capable the longer it runs. It lives wherever you put it — a $5 VPS, a GPU cluster, or serverless infrastructure (Daytona, Modal) that costs nearly nothing when idle. Talk to it from Telegram while it works on a cloud VM you never SSH into yourself. It's not tied to your laptop. @@ -49,7 +53,7 @@ It's not a coding copilot tethered to an IDE or a chatbot wrapper around a singl | 🗺️ **[Learning Path](/getting-started/learning-path)** | Find the right docs for your experience level | | ⚙️ **[Configuration](/user-guide/configuration)** | Config file, providers, models, and options | | 💬 **[Messaging Gateway](/user-guide/messaging)** | Set up Telegram, Discord, Slack, WhatsApp, Teams, or more | -| 🔧 **[Tools & Toolsets](/user-guide/features/tools)** | 70+ built-in tools and how to configure them | +| 🔧 **[Tools & Toolsets](/user-guide/features/tools)** | 60+ built-in tools and how to configure them | | 🧠 **[Memory System](/user-guide/features/memory)** | Persistent memory that grows across sessions | | 📚 **[Skills System](/user-guide/features/skills)** | Procedural memory the agent creates and reuses | | 🔌 **[MCP Integration](/user-guide/features/mcp)** | Connect to MCP servers, filter their tools, and extend Hermes safely | @@ -72,7 +76,7 @@ It's not a coding copilot tethered to an IDE or a chatbot wrapper around a singl - **Scheduled automations** — Built-in cron with delivery to any platform - **Delegates & parallelizes** — Spawn isolated subagents for parallel workstreams. Programmatic Tool Calling via `execute_code` collapses multi-step pipelines into single inference calls - **Open standard skills** — Compatible with [agentskills.io](https://agentskills.io). Skills are portable, shareable, and community-contributed via the Skills Hub -- **Full web control** — Search, extract, browse, vision, image generation, TTS +- **Full web control** — Search, extract, browse, vision, image generation, TTS — one subscription via [Nous Portal](/integrations/nous-portal) bundles all of them - **MCP support** — Connect to any MCP server for extended tool capabilities - **Research-ready** — Batch processing, trajectory export, RL training with Atropos. Built by [Nous Research](https://nousresearch.com) — the lab behind Hermes, Nomos, and Psyche models diff --git a/website/docs/integrations/index.md b/website/docs/integrations/index.md index 6c7839a6cff..4e00a5600c7 100644 --- a/website/docs/integrations/index.md +++ b/website/docs/integrations/index.md @@ -8,6 +8,10 @@ sidebar_position: 0 Hermes Agent connects to external systems for AI inference, tool servers, IDE workflows, programmatic access, and more. These integrations extend what Hermes can do and where it can run. +:::tip Start here +If you only have time to set up one integration, set up [Nous Portal](/integrations/nous-portal) — a single OAuth login covers 300+ models plus the four Tool Gateway tools (web search, image generation, TTS, and browser automation). +::: + ## AI Providers & Routing Hermes supports multiple AI inference providers out of the box. Use `hermes model` to configure interactively, or set them in `config.yaml`. @@ -61,6 +65,7 @@ Text-to-speech and speech-to-text across all messaging platforms: | **ElevenLabs** | Excellent | Paid | `ELEVENLABS_API_KEY` | | **OpenAI TTS** | Good | Paid | `VOICE_TOOLS_OPENAI_KEY` | | **MiniMax** | Good | Paid | `MINIMAX_API_KEY` | +| **xAI TTS** | Good | Paid | `XAI_API_KEY` | | **NeuTTS** | Good | Free | None needed | Speech-to-text supports six providers: local faster-whisper (free, runs on-device), a local command wrapper, Groq, OpenAI Whisper API, Mistral, and xAI. Voice message transcription works across Telegram, Discord, WhatsApp, and other messaging platforms. See [Voice & TTS](/user-guide/features/tts) and [Voice Mode](/user-guide/features/voice-mode) for details. @@ -80,9 +85,9 @@ Speech-to-text supports six providers: local faster-whisper (free, runs on-devic ## Messaging Platforms -Hermes runs as a gateway bot on 19+ messaging platforms, all configured through the same `gateway` subsystem: +Hermes runs as a gateway bot on 27+ messaging platforms, all configured through the same `gateway` subsystem: -- **[Telegram](/user-guide/messaging/telegram)**, **[Discord](/user-guide/messaging/discord)**, **[Slack](/user-guide/messaging/slack)**, **[WhatsApp](/user-guide/messaging/whatsapp)**, **[Signal](/user-guide/messaging/signal)**, **[Matrix](/user-guide/messaging/matrix)**, **[Mattermost](/user-guide/messaging/mattermost)**, **[Email](/user-guide/messaging/email)**, **[SMS](/user-guide/messaging/sms)**, **[DingTalk](/user-guide/messaging/dingtalk)**, **[Feishu/Lark](/user-guide/messaging/feishu)**, **[WeCom](/user-guide/messaging/wecom)**, **[WeCom Callback](/user-guide/messaging/wecom-callback)**, **[Weixin](/user-guide/messaging/weixin)**, **[BlueBubbles](/user-guide/messaging/bluebubbles)**, **[QQ Bot](/user-guide/messaging/qqbot)**, **[Yuanbao](/user-guide/messaging/yuanbao)**, **[Home Assistant](/user-guide/messaging/homeassistant)**, **[Microsoft Teams](/user-guide/messaging/teams)**, **[Webhooks](/user-guide/messaging/webhooks)** +- **[Telegram](/user-guide/messaging/telegram)**, **[Discord](/user-guide/messaging/discord)**, **[Slack](/user-guide/messaging/slack)**, **[WhatsApp](/user-guide/messaging/whatsapp)**, **[Signal](/user-guide/messaging/signal)**, **[Matrix](/user-guide/messaging/matrix)**, **[Mattermost](/user-guide/messaging/mattermost)**, **[Email](/user-guide/messaging/email)**, **[SMS](/user-guide/messaging/sms)**, **[DingTalk](/user-guide/messaging/dingtalk)**, **[Feishu/Lark](/user-guide/messaging/feishu)**, **[WeCom](/user-guide/messaging/wecom)**, **[WeCom Callback](/user-guide/messaging/wecom-callback)**, **[Weixin](/user-guide/messaging/weixin)**, **[BlueBubbles](/user-guide/messaging/bluebubbles)**, **[QQ Bot](/user-guide/messaging/qqbot)**, **[Yuanbao](/user-guide/messaging/yuanbao)**, **[Home Assistant](/user-guide/messaging/homeassistant)**, **[Microsoft Teams](/user-guide/messaging/teams)**, **[Microsoft Teams Meetings](/user-guide/messaging/teams-meetings)**, **[Microsoft Graph Webhook](/user-guide/messaging/msgraph-webhook)**, **[Google Chat](/user-guide/messaging/google_chat)**, **[LINE](/user-guide/messaging/line)**, **[ntfy](/user-guide/messaging/ntfy)**, **[SimpleX](/user-guide/messaging/simplex)**, **[Open WebUI](/user-guide/messaging/open-webui)**, **[Webhooks](/user-guide/messaging/webhooks)** See the [Messaging Gateway overview](/user-guide/messaging) for the platform comparison table and setup guide. diff --git a/website/docs/integrations/nous-portal.md b/website/docs/integrations/nous-portal.md index b89756877bd..ddf688d8752 100644 --- a/website/docs/integrations/nous-portal.md +++ b/website/docs/integrations/nous-portal.md @@ -26,19 +26,23 @@ The Portal proxies a curated catalog of agentic models from across the ecosystem | Family | Models | |--------|--------| -| **Anthropic Claude** | Opus, Sonnet, Haiku (4.x series) | -| **OpenAI** | GPT-5.4, o-series reasoning models | -| **Google Gemini** | 2.5 Pro, 2.5 Flash | -| **DeepSeek** | DeepSeek V3.2, DeepSeek-R1 | -| **Qwen** | Qwen3 family, Qwen Coder | -| **Kimi / Moonshot** | Kimi-K2, Kimi-Latest | -| **GLM / Zhipu** | GLM-4.6, GLM-4-Plus | -| **MiniMax** | M2.7, M1 | -| **xAI** | Grok-4, Grok-3 | +| **Anthropic Claude** | Opus 4.7, Opus 4.6, Sonnet 4.6, Haiku 4.5 | +| **OpenAI** | GPT-5.5, GPT-5.5 Pro, GPT-5.4 Mini, GPT-5.4 Nano, GPT-5.3 Codex | +| **Google Gemini** | Gemini 3 Pro Preview, Gemini 3 Flash Preview, Gemini 3.1 Pro Preview, Gemini 3.1 Flash Lite Preview | +| **DeepSeek** | DeepSeek V4 Pro | +| **Qwen** | Qwen3.7-Max, Qwen3.6-35B-A3B | +| **Kimi / Moonshot** | Kimi K2.6 | +| **GLM / Zhipu** | GLM-5.1 | +| **MiniMax** | MiniMax M2.7 | +| **xAI** | Grok 4.3 | +| **NVIDIA** | Nemotron-3 Super 120B-A12B | +| **Tencent** | Hunyuan 3 Preview | +| **Xiaomi** | MiMo V2.5 Pro | +| **StepFun** | Step 3.5 Flash | | **Hermes** | Hermes-4-70B, Hermes-4-405B (chat, see [note below](#a-note-on-hermes-4)) | -| **+ everything else** | 240+ additional models — the full agentic frontier | +| **+ everything else** | 280+ additional models — the full agentic frontier | -Routing happens through OpenRouter under the hood, so model availability and failover behavior matches what you'd get with an OpenRouter key — just billed against your Nous subscription instead. Switch between Claude Sonnet 4.6 for code and Gemini 2.5 Pro for long context with `/model` mid-session — no new credentials, no top-ups, no surprise zero-balance errors. +Routing happens through OpenRouter under the hood, so model availability and failover behavior matches what you'd get with an OpenRouter key — just billed against your Nous subscription instead. Switch between Claude Sonnet 4.6 for code and Gemini 3 Pro for long context with `/model` mid-session — no new credentials, no top-ups, no surprise zero-balance errors. ### The Nous Tool Gateway @@ -76,9 +80,9 @@ They are **not recommended for use inside Hermes Agent**, however. Hermes 4 is t ```bash /model anthropic/claude-sonnet-4.6 # best general-purpose agentic model -/model openai/gpt-5.4 # strong reasoning + tool calling -/model google/gemini-2.5-pro # huge context window -/model deepseek/deepseek-v3.2 # cost-effective coder +/model openai/gpt-5.5-pro # strong reasoning + tool calling +/model google/gemini-3-pro-preview # huge context window +/model deepseek/deepseek-v4-pro # cost-effective coder ``` The Portal's own [model info page](https://portal.nousresearch.com/info) carries the same warning, so this isn't a Hermes-side opinion — it's the official guidance from Nous Research. @@ -155,8 +159,8 @@ Inside a session: ```bash /model anthropic/claude-sonnet-4.6 -/model openai/gpt-5.4 -/model google/gemini-2.5-pro +/model openai/gpt-5.5-pro +/model google/gemini-3-pro-preview ``` Or open the picker: @@ -201,7 +205,7 @@ After `hermes setup --portal`, `~/.hermes/config.yaml` will look like: model: provider: nous default: anthropic/claude-sonnet-4.6 # or whatever model you picked - base_url: https://inference.nousresearch.com/v1 + base_url: https://inference-api.nousresearch.com/v1 ``` The Tool Gateway settings live under their respective tool sections: diff --git a/website/docs/integrations/providers.md b/website/docs/integrations/providers.md index 127effda6f0..0168a74a6c6 100644 --- a/website/docs/integrations/providers.md +++ b/website/docs/integrations/providers.md @@ -41,6 +41,14 @@ You need at least one way to connect to an LLM. Use `hermes model` to switch pro | **Hugging Face** | `HF_TOKEN` in `~/.hermes/.env` (provider: `huggingface`, aliases: `hf`) | | **Google / Gemini** | `GOOGLE_API_KEY` (or `GEMINI_API_KEY`) in `~/.hermes/.env` (provider: `gemini`) | | **Google Gemini (OAuth)** | `hermes model` → "Google Gemini (OAuth)" (provider: `google-gemini-cli`, free tier supported, browser PKCE login) | +| **OpenAI API (direct)** | `OPENAI_API_KEY` in `~/.hermes/.env` (provider: `openai-api`, optional `OPENAI_BASE_URL`) | +| **Azure AI Foundry** | `hermes model` → "Azure AI Foundry" (provider: `azure-foundry`; uses Azure OpenAI / Foundry endpoint and key) | +| **AWS Bedrock** | `hermes model` → "AWS Bedrock" (provider: `bedrock`; standard AWS credentials chain via boto3) | +| **NVIDIA Build** | `NVIDIA_API_KEY` in `~/.hermes/.env` (provider: `nvidia`; NIM-hosted models on build.nvidia.com) | +| **Ollama Cloud** | `hermes model` → "Ollama Cloud" (provider: `ollama-cloud`; cloud-hosted Ollama API) | +| **Qwen OAuth** | `hermes model` → "Qwen OAuth" (provider: `qwen-oauth`; browser PKCE login) | +| **MiniMax OAuth** | `hermes model` → "MiniMax (OAuth)" (provider: `minimax-oauth`; browser PKCE login) | +| **StepFun** | `STEPFUN_API_KEY` in `~/.hermes/.env` (provider: `stepfun`) | | **LM Studio** | `hermes model` → "LM Studio" (provider: `lmstudio`, optional `LM_API_KEY`) | | **Custom Endpoint** | `hermes model` → choose "Custom endpoint" (saved in `config.yaml`) | @@ -65,6 +73,10 @@ Don't have a subscription yet? Get one at [portal.nousresearch.com/manage-subscr **For full details:** see the dedicated [Nous Portal integration page](/integrations/nous-portal) (what's in the subscription, model catalog, troubleshooting) and the step-by-step [Run Hermes Agent with Nous Portal guide](/guides/run-hermes-with-nous-portal). +**Client identification.** Every Portal request from Hermes Agent carries a `client=hermes-client-v` tag (e.g. `client=hermes-client-v0.13.0`) auto-aligned to your installed release. This is sent on all Portal pathways — main chat loop, auxiliary calls, compression summarizer, web extraction — and lets Portal-side telemetry distinguish Hermes traffic from other clients. No config required; the tag updates automatically when you `hermes update`. + +**JWT auth (automatic).** Hermes prefers scoped `inference:invoke` JWTs for Portal requests with the legacy opaque session-key path as a fallback. No configuration is required — credentials are managed by the OAuth flow and rotate transparently. Revoked refresh tokens are quarantined to avoid replay loops. + :::info Codex Note The OpenAI Codex provider authenticates via device code (open a URL, enter a code). Hermes stores the resulting credentials in its own auth store under `~/.hermes/auth.json` and can import existing Codex CLI credentials from `~/.codex/auth.json` when present. No Codex CLI installation is required. @@ -273,6 +285,15 @@ No configuration is needed — caching activates automatically when an xAI endpo xAI also ships a dedicated TTS endpoint (`/v1/tts`). Select **xAI TTS** in `hermes tools` → Voice & TTS, or see the [Voice & TTS](../user-guide/features/tts.md#text-to-speech) page for config. +**Retired xAI model migration (May 15, 2026):** xAI is retiring `grok-4*`, `grok-3`, `grok-code-fast-1`, and `grok-imagine-image-pro` on 2026-05-15. `hermes doctor` and `hermes chat` startup both detect any config still pointing at a retired ref and print the recommended replacement. Use `hermes migrate xai` for a one-shot config rewrite — dry-run by default, add `--apply` to write changes (a timestamped `config.yaml.bak-pre-migrate-xai-*` backup is created automatically). + +```bash +hermes migrate xai # preview replacements +hermes migrate xai --apply # rewrite ~/.hermes/config.yaml in place +``` + +**xAI Web Search backend.** When the [Web Search](../user-guide/features/web-search.md) toolset is enabled, `web.backend: xai` routes search through xAI's hosted search endpoint using the same `XAI_API_KEY` / OAuth credentials. No additional setup required if xAI is already configured as a provider. + ### NovitaAI [NovitaAI](https://novita.ai) is the AI-native cloud for builders and agents. Its three product lines are Model API for 200+ models, Agent Sandbox for building and running AI agents, and GPU Cloud for scalable compute, all available from one platform. @@ -454,7 +475,7 @@ Open and reasoning models via [GMI Cloud](https://www.gmicloud.ai/) — OpenAI-c ```bash # GMI Cloud -hermes chat --provider gmi --model deepseek-ai/DeepSeek-R1 +hermes chat --provider gmi --model deepseek-ai/DeepSeek-V3.2 # Requires: GMI_API_KEY in ~/.hermes/.env ``` @@ -462,7 +483,7 @@ Or set it permanently in `config.yaml`: ```yaml model: provider: "gmi" - default: "deepseek-ai/DeepSeek-R1" + default: "deepseek-ai/DeepSeek-V3.2" ``` The base URL can be overridden with `GMI_BASE_URL` (default: `https://api.gmi-serving.com/v1`). @@ -492,7 +513,7 @@ The base URL can be overridden with `STEPFUN_BASE_URL` (default: `https://api.st ```bash # Use any available model -hermes chat --provider huggingface --model Qwen/Qwen3-235B-A22B-Thinking-2507 +hermes chat --provider huggingface --model Qwen/Qwen3.5-397B-A17B # Requires: HF_TOKEN in ~/.hermes/.env # Short alias @@ -503,7 +524,7 @@ Or set it permanently in `config.yaml`: ```yaml model: provider: "huggingface" - default: "Qwen/Qwen3-235B-A22B-Thinking-2507" + default: "Qwen/Qwen3.5-397B-A17B" ``` Get your token at [huggingface.co/settings/tokens](https://huggingface.co/settings/tokens) — make sure to enable the "Make calls to Inference Providers" permission. Free tier included ($0.10/month credit, no markup on provider rates). @@ -623,7 +644,7 @@ model: ``` :::warning Legacy env vars -`OPENAI_BASE_URL` and `LLM_MODEL` in `.env` are **removed**. Neither is read by any part of Hermes — `config.yaml` is the single source of truth for model and endpoint configuration. If you have stale entries in your `.env`, they are automatically cleared on the next `hermes setup` or config migration. Use `hermes model` or edit `config.yaml` directly. +`LLM_MODEL` in `.env` is **removed** — `config.yaml` is the single source of truth for model and endpoint configuration. `OPENAI_BASE_URL` is still honored, but **only** for the `openai-api` provider (it overrides the OpenAI endpoint for direct API-key access). For other providers and custom endpoints, use `hermes model` or set `model.base_url` in `config.yaml` directly. If you have stale entries in your `.env`, they are automatically cleared on the next `hermes setup` or config migration. ::: Both approaches persist to `config.yaml`, which is the source of truth for model, provider, and base URL. @@ -1253,6 +1274,18 @@ extra_body: The `hermes model` → Custom Endpoint wizard now prompts for `api_mode` explicitly and persists your answer to `config.yaml`. URL-based auto-detection (e.g. `/anthropic` paths → `anthropic_messages`) still happens as a fallback when the field is left blank. +**Native vision for custom-provider models.** If your custom endpoint serves a vision-capable model that isn't in models.dev, set `model.supports_vision: true` so Hermes routes attached images natively (as `image_url` parts) instead of pre-processing them through `vision_analyze`. Single knob — no need to also set `agent.image_input_mode: native`. + +```yaml +model: + provider: custom + base_url: http://localhost:8080/v1 + default: qwen3.6-35b-a3b + supports_vision: true # send images natively; otherwise vision_analyze pre-describes them +``` + +The same key is honored on per-named-provider models (`custom_providers[*].models[*].supports_vision`) and accepts standard YAML booleans (`true/false/yes/no/on/off/1/0`). + Switch between them mid-session with the triple syntax: ``` @@ -1489,7 +1522,7 @@ fallback_model: When activated, the fallback swaps the model and provider mid-session without losing your conversation. The chain is tried entry-by-entry; activation is one-shot per session. -Supported providers: `openrouter`, `nous`, `openai-codex`, `copilot`, `copilot-acp`, `anthropic`, `gemini`, `google-gemini-cli`, `qwen-oauth`, `huggingface`, `zai`, `kimi-coding`, `kimi-coding-cn`, `minimax`, `minimax-cn`, `minimax-oauth`, `deepseek`, `nvidia`, `xai`, `xai-oauth`, `ollama-cloud`, `bedrock`, `azure-foundry`, `opencode-zen`, `opencode-go`, `kilocode`, `xiaomi`, `arcee`, `gmi`, `stepfun`, `lmstudio`, `alibaba`, `alibaba-coding-plan`, `tencent-tokenhub`, `custom`. +Supported providers: `openrouter`, `nous`, `novita`, `openai-codex`, `copilot`, `copilot-acp`, `anthropic`, `gemini`, `google-gemini-cli`, `qwen-oauth`, `huggingface`, `zai`, `kimi-coding`, `kimi-coding-cn`, `minimax`, `minimax-cn`, `minimax-oauth`, `deepseek`, `nvidia`, `xai`, `xai-oauth`, `ollama-cloud`, `bedrock`, `azure-foundry`, `opencode-zen`, `opencode-go`, `kilocode`, `xiaomi`, `arcee`, `gmi`, `stepfun`, `lmstudio`, `alibaba`, `alibaba-coding-plan`, `tencent-tokenhub`, `custom`. :::tip Fallback is configured exclusively through `config.yaml` — or interactively via `hermes fallback`. For full details on when it triggers, how the chain advances, and how it interacts with auxiliary tasks and delegation, see [Fallback Providers](/user-guide/features/fallback-providers). diff --git a/website/docs/reference/cli-commands.md b/website/docs/reference/cli-commands.md index aa8b3c1a5e6..2e050f79e57 100644 --- a/website/docs/reference/cli-commands.md +++ b/website/docs/reference/cli-commands.md @@ -47,6 +47,9 @@ hermes [global-options] [subcommand/options] | `hermes slack` | Slack helpers (currently: generate the app manifest with every command as a native slash). | | `hermes auth` | Manage credentials — add, list, remove, reset, set strategy. Handles OAuth flows for Codex/Nous/Anthropic. | | `hermes login` / `logout` | **Deprecated** — use `hermes auth` instead. | +| `hermes send` | Send a one-shot message to a configured messaging platform (Telegram, Discord, Slack, Signal, SMS, …). Useful from shell scripts, cron jobs, CI hooks, and monitoring daemons — no agent loop, no LLM. | +| `hermes secrets` | Manage external secret sources (currently Bitwarden Secrets Manager) for pulling API keys at process startup instead of from `~/.hermes/.env`. | +| `hermes migrate` | Diagnose and (optionally) rewrite `config.yaml` to replace references to retired models or deprecated settings (e.g. `migrate xai`). | | `hermes status` | Show agent, auth, and platform status. | | `hermes cron` | Inspect and tick the cron scheduler. | | `hermes kanban` | Multi-profile collaboration board (tasks, links, dispatcher). | @@ -262,6 +265,8 @@ the full guide, supported languages, and configuration knobs. hermes setup [model|tts|terminal|gateway|tools|agent] [--non-interactive] [--reset] [--quick] [--reconfigure] [--portal] ``` +**Easiest path:** `hermes setup --portal` — OAuth into Nous Portal and opt into the [Tool Gateway](../user-guide/features/tool-gateway.md) in one shot. + **First run:** launches the first-time wizard. **Returning user (already configured):** drops straight into the full reconfigure wizard — every prompt shows your current value as its default, press Enter to keep or type a new value. No menu. @@ -337,6 +342,122 @@ Run `hermes slack manifest --write` again after `hermes update` to pick up any new commands. +## `hermes send` + +```bash +hermes send --to "message text" +hermes send --to --file +echo "message" | hermes send --to +hermes send --list [platform] +``` + +Send a one-shot message to a configured messaging platform without spinning up an agent or gateway loop. Reuses the gateway's already-configured credentials (`~/.hermes/.env` + `~/.hermes/config.yaml`) so ops scripts, cron jobs, CI hooks, and monitoring daemons can post status updates without reimplementing each platform's REST client. + +For bot-token platforms (Telegram, Discord, Slack, Signal, SMS, WhatsApp-CloudAPI) no running gateway is required — `hermes send` talks directly to the platform's REST endpoint. Plugin platforms that need a persistent adapter still require a live gateway. + +| Option | Description | +|--------|-------------| +| `-t`, `--to ` | Delivery target. Formats: `platform` (uses home channel), `platform:chat_id`, `platform:chat_id:thread_id`, or `platform:#channel-name`. Examples: `telegram`, `telegram:-1001234567890`, `discord:#ops`, `slack:C0123ABCD`, `signal:+15551234567`. | +| `-f`, `--file ` | Read the message body from `PATH`. Pass `-` to force reading from stdin. | +| `-s`, `--subject ` | Prepend a subject/header line before the message body. | +| `-l`, `--list [platform]` | List configured targets across all platforms (or only the given platform). | +| `-q`, `--quiet` | Suppress stdout on success — useful in scripts (rely on exit code only). | +| `--json` | Emit raw JSON result instead of human-readable output. | + +If neither a positional `message` argument nor `--file` is provided, `hermes send` reads from stdin when it is not a TTY. Exit codes: `0` on success, `1` on delivery/backend failure, `2` on usage errors. + +Examples: + +```bash +hermes send --to telegram "deploy finished" +echo "RAM 92%" | hermes send --to telegram:-1001234567890 +hermes send --to discord:#ops --file /tmp/report.md +hermes send --to slack:#eng --subject "[CI]" --file build.log +hermes send --list # all platforms +hermes send --list telegram # filter by platform +``` + + +## `hermes secrets` + +```bash +hermes secrets bitwarden +hermes secrets bw # short alias +``` + +Pull API keys from an external secret manager at process startup instead of storing them in `~/.hermes/.env`. Currently supports **Bitwarden Secrets Manager**. See the full guide: [Bitwarden integration](../user-guide/secrets/bitwarden.md). + +`bitwarden` (alias `bw`) subcommands: + +| Subcommand | Description | +|------------|-------------| +| `setup` | Interactive wizard: install the pinned `bws` binary, store an access token, and pick a project. Accepts `--project-id`, `--access-token`, and `--server-url` for non-interactive use. | +| `status` | Show current config, binary path/version, and last fetch info. | +| `sync` | Fetch secrets now and report what changed. Add `--apply` to actually export the secrets into the current shell's environment (default is dry-run). | +| `install` | Download and verify the pinned `bws` binary. `--force` re-downloads even if a managed copy already exists. | +| `disable` | Turn off the Bitwarden integration. | + + +## `hermes migrate` + +```bash +hermes migrate +``` + +Diagnose and (optionally) rewrite the active `config.yaml` to replace references to retired models or deprecated settings. A timestamped backup of the original `config.yaml` is taken before any rewrite (skip with `--no-backup`). + +| Subcommand | Description | +|------------|-------------| +| `xai` | Scan `config.yaml` for references to xAI models scheduled for retirement on May 15, 2026 and (with `--apply`) rewrite them in-place to the official replacements per the xAI migration guide. Defaults to dry-run. | + +Common flags for migration subcommands: + +| Flag | Description | +|------|-------------| +| `--apply` | Rewrite `config.yaml` in-place (default: dry-run, no writes). | +| `--no-backup` | Skip the timestamped backup of `config.yaml` when applying. | + +> Not to be confused with `hermes claw migrate` (one-shot import of OpenClaw configuration into Hermes) — `hermes migrate` is the top-level config-rewrite command. + + +## `hermes proxy` + +```bash +hermes proxy +``` + +Run a local OpenAI-compatible HTTP server that forwards requests to an OAuth-authenticated upstream provider (e.g. Nous Portal, xAI). External apps can point at the proxy with any bearer token; the proxy attaches your real OAuth credentials on the way out. See [Subscription Proxy](../user-guide/features/subscription-proxy.md) for the full guide. + +| Subcommand | Description | +|------------|-------------| +| `start` | Run the proxy in the foreground. Flags: `--provider ` (default `nous`), `--host ` (default `127.0.0.1`; use `0.0.0.0` to expose on LAN), `--port ` (default `8645`). | +| `status` | Show which proxy upstreams are ready (credentials present, OAuth valid). | +| `providers` | List available proxy upstream providers. | + + +## `hermes security` + +```bash +hermes security +``` + +On-demand vulnerability scan against [OSV.dev](https://osv.dev). Covers the Hermes venv (installed PyPI distributions), Python dependencies declared by plugins under `~/.hermes/plugins/`, and pinned `npx`/`uvx` MCP servers in `config.yaml`. Does NOT scan globally-installed packages or editor/browser extensions. + +| Subcommand | Description | +|------------|-------------| +| `audit` | Run a one-shot supply-chain audit. | + +`audit` flags: + +| Flag | Default | Description | +|------|---------|-------------| +| `--json` | off | Emit machine-readable JSON instead of human-readable text. | +| `--fail-on ` | `critical` | Exit non-zero when any finding meets this severity (`low`, `moderate`, `high`, `critical`). | +| `--skip-venv` | off | Skip scanning the Hermes Python venv. | +| `--skip-plugins` | off | Skip scanning plugin requirements files. | +| `--skip-mcp` | off | Skip scanning pinned MCP servers in `config.yaml`. | + + ## `hermes login` / `hermes logout` *(Deprecated)* :::caution @@ -1276,6 +1397,7 @@ Additional behavior: |---------|-------------| | `hermes version` | Print version information. | | `hermes update` | Pull latest changes and reinstall dependencies. | +| `hermes postinstall` | Internal bootstrap. Runs once after `pip install hermes-agent` (or `hermes update` on pip installs) to install non-Python dependencies that pip cannot provide — Node.js runtime, headless browser, ripgrep, ffmpeg — and then trigger `hermes setup` if the profile has not been configured yet. Safe to re-run idempotently. | | `hermes uninstall [--full] [--yes]` | Remove Hermes, optionally deleting all config/data. | ## See also diff --git a/website/docs/reference/faq.md b/website/docs/reference/faq.md index 7c70662c319..59968f1c8cd 100644 --- a/website/docs/reference/faq.md +++ b/website/docs/reference/faq.md @@ -17,7 +17,7 @@ Quick answers and fixes for the most common questions and issues. Hermes Agent works with any OpenAI-compatible API. Supported providers include: - **[OpenRouter](https://openrouter.ai/)** — access hundreds of models through one API key (recommended for flexibility) -- **Nous Portal** — Nous Research's own inference endpoint +- **[Nous Portal](/integrations/nous-portal)** — Nous Research's subscription gateway — 300+ models plus web/image/TTS/browser through one OAuth login (recommended for newcomers) - **OpenAI** — GPT-5.4, GPT-5-codex, GPT-4.1, GPT-4o, etc. - **Anthropic** — Claude models (direct API, OAuth via `hermes auth add anthropic`, OpenRouter, or any compatible proxy) - **Google** — Gemini models (direct API via `gemini` provider, the `google-gemini-cli` OAuth provider, OpenRouter, or compatible proxy) diff --git a/website/docs/reference/optional-skills-catalog.md b/website/docs/reference/optional-skills-catalog.md index e70f52fe32f..809bd7f8fc7 100644 --- a/website/docs/reference/optional-skills-catalog.md +++ b/website/docs/reference/optional-skills-catalog.md @@ -31,169 +31,170 @@ hermes skills uninstall | Skill | Description | |-------|-------------| -| [**blackbox**](/user-guide/skills/optional/autonomous-ai-agents/autonomous-ai-agents-blackbox) | Delegate coding tasks to Blackbox AI CLI agent. Multi-model agent with built-in judge that runs tasks through multiple LLMs and picks the best result. Requires the blackbox CLI and a Blackbox AI API key. | -| [**honcho**](/user-guide/skills/optional/autonomous-ai-agents/autonomous-ai-agents-honcho) | Configure and use Honcho memory with Hermes -- cross-session user modeling, multi-profile peer isolation, observation config, dialectic reasoning, session summaries, and context budget enforcement. Use when setting up Honcho, troubleshoo... | -| [**openhands**](/user-guide/skills/optional/autonomous-ai-agents/autonomous-ai-agents-openhands) | Delegate coding to OpenHands CLI (model-agnostic, LiteLLM). | +| [**blackbox**](/docs/user-guide/skills/optional/autonomous-ai-agents/autonomous-ai-agents-blackbox) | Delegate coding tasks to Blackbox AI CLI agent. Multi-model agent with built-in judge that runs tasks through multiple LLMs and picks the best result. Requires the blackbox CLI and a Blackbox AI API key. | +| [**honcho**](/docs/user-guide/skills/optional/autonomous-ai-agents/autonomous-ai-agents-honcho) | Configure and use Honcho memory with Hermes -- cross-session user modeling, multi-profile peer isolation, observation config, dialectic reasoning, session summaries, and context budget enforcement. Use when setting up Honcho, troubleshoo... | +| [**openhands**](/docs/user-guide/skills/optional/autonomous-ai-agents/autonomous-ai-agents-openhands) | Delegate coding to OpenHands CLI (model-agnostic, LiteLLM). | ## blockchain | Skill | Description | |-------|-------------| -| [**evm**](/user-guide/skills/optional/blockchain/blockchain-evm) | Read-only EVM client: wallets, tokens, gas across 8 chains. | -| [**hyperliquid**](/user-guide/skills/optional/blockchain/blockchain-hyperliquid) | Hyperliquid market data, account history, trade review. | -| [**solana**](/user-guide/skills/optional/blockchain/blockchain-solana) | Query Solana blockchain data with USD pricing — wallet balances, token portfolios with values, transaction details, NFTs, whale detection, and live network stats. Uses Solana RPC + CoinGecko. No API key required. | +| [**evm**](/docs/user-guide/skills/optional/blockchain/blockchain-evm) | Read-only EVM client: wallets, tokens, gas across 8 chains. | +| [**hyperliquid**](/docs/user-guide/skills/optional/blockchain/blockchain-hyperliquid) | Hyperliquid market data, account history, trade review. | +| [**solana**](/docs/user-guide/skills/optional/blockchain/blockchain-solana) | Query Solana blockchain data with USD pricing — wallet balances, token portfolios with values, transaction details, NFTs, whale detection, and live network stats. Uses Solana RPC + CoinGecko. No API key required. | ## communication | Skill | Description | |-------|-------------| -| [**one-three-one-rule**](/user-guide/skills/optional/communication/communication-one-three-one-rule) | Structured decision-making framework for technical proposals and trade-off analysis. When the user faces a choice between multiple approaches (architecture decisions, tool selection, refactoring strategies, migration paths), this skill p... | +| [**one-three-one-rule**](/docs/user-guide/skills/optional/communication/communication-one-three-one-rule) | Structured decision-making framework for technical proposals and trade-off analysis. When the user faces a choice between multiple approaches (architecture decisions, tool selection, refactoring strategies, migration paths), this skill p... | ## creative | Skill | Description | |-------|-------------| -| [**blender-mcp**](/user-guide/skills/optional/creative/creative-blender-mcp) | Control Blender directly from Hermes via socket connection to the blender-mcp addon. Create 3D objects, materials, animations, and run arbitrary Blender Python (bpy) code. Use when user wants to create or modify anything in Blender. | -| [**concept-diagrams**](/user-guide/skills/optional/creative/creative-concept-diagrams) | Generate flat, minimal light/dark-aware SVG diagrams as standalone HTML files, using a unified educational visual language with 9 semantic color ramps, sentence-case typography, and automatic dark mode. Best suited for educational and no... | -| [**hyperframes**](/user-guide/skills/optional/creative/creative-hyperframes) | Create HTML-based video compositions, animated title cards, social overlays, captioned talking-head videos, audio-reactive visuals, and shader transitions using HyperFrames. HTML is the source of truth for video. Use when the user wants... | -| [**kanban-video-orchestrator**](/user-guide/skills/optional/creative/creative-kanban-video-orchestrator) | Plan, set up, and monitor a multi-agent video production pipeline backed by Hermes Kanban. Use when the user wants to make ANY video — narrative film, product/marketing, music video, explainer, ASCII/terminal art, abstract/generative loo... | -| [**meme-generation**](/user-guide/skills/optional/creative/creative-meme-generation) | Generate real meme images by picking a template and overlaying text with Pillow. Produces actual .png meme files. | +| [**blender-mcp**](/docs/user-guide/skills/optional/creative/creative-blender-mcp) | Control Blender directly from Hermes via socket connection to the blender-mcp addon. Create 3D objects, materials, animations, and run arbitrary Blender Python (bpy) code. Use when user wants to create or modify anything in Blender. | +| [**concept-diagrams**](/docs/user-guide/skills/optional/creative/creative-concept-diagrams) | Generate flat, minimal light/dark-aware SVG diagrams as standalone HTML files, using a unified educational visual language with 9 semantic color ramps, sentence-case typography, and automatic dark mode. Best suited for educational and no... | +| [**hyperframes**](/docs/user-guide/skills/optional/creative/creative-hyperframes) | Create HTML-based video compositions, animated title cards, social overlays, captioned talking-head videos, audio-reactive visuals, and shader transitions using HyperFrames. HTML is the source of truth for video. Use when the user wants... | +| [**kanban-video-orchestrator**](/docs/user-guide/skills/optional/creative/creative-kanban-video-orchestrator) | Plan, set up, and monitor a multi-agent video production pipeline backed by Hermes Kanban. Use when the user wants to make ANY video — narrative film, product/marketing, music video, explainer, ASCII/terminal art, abstract/generative loo... | +| [**meme-generation**](/docs/user-guide/skills/optional/creative/creative-meme-generation) | Generate real meme images by picking a template and overlaying text with Pillow. Produces actual .png meme files. | ## devops | Skill | Description | |-------|-------------| -| [**inference-sh-cli**](/user-guide/skills/optional/devops/devops-cli) | Run 150+ AI apps via inference.sh CLI (infsh) — image generation, video creation, LLMs, search, 3D, social automation. Uses the terminal tool. Triggers: inference.sh, infsh, ai apps, flux, veo, image generation, video generation, seedrea... | -| [**docker-management**](/user-guide/skills/optional/devops/devops-docker-management) | Manage Docker containers, images, volumes, networks, and Compose stacks — lifecycle ops, debugging, cleanup, and Dockerfile optimization. | -| [**pinggy-tunnel**](/user-guide/skills/optional/devops/devops-pinggy-tunnel) | Zero-install localhost tunnels over SSH via Pinggy. | -| [**watchers**](/user-guide/skills/optional/devops/devops-watchers) | Poll RSS, JSON APIs, and GitHub with watermark dedup. | +| [**inference-sh-cli**](/docs/user-guide/skills/optional/devops/devops-cli) | Run 150+ AI apps via inference.sh CLI (infsh) — image generation, video creation, LLMs, search, 3D, social automation. Uses the terminal tool. Triggers: inference.sh, infsh, ai apps, flux, veo, image generation, video generation, seedrea... | +| [**docker-management**](/docs/user-guide/skills/optional/devops/devops-docker-management) | Manage Docker containers, images, volumes, networks, and Compose stacks — lifecycle ops, debugging, cleanup, and Dockerfile optimization. | +| [**pinggy-tunnel**](/docs/user-guide/skills/optional/devops/devops-pinggy-tunnel) | Zero-install localhost tunnels over SSH via Pinggy. | +| [**watchers**](/docs/user-guide/skills/optional/devops/devops-watchers) | Poll RSS, JSON APIs, and GitHub with watermark dedup. | ## dogfood | Skill | Description | |-------|-------------| -| [**adversarial-ux-test**](/user-guide/skills/optional/dogfood/dogfood-adversarial-ux-test) | Roleplay the most difficult, tech-resistant user for your product. Browse the app as that persona, find every UX pain point, then filter complaints through a pragmatism layer to separate real problems from noise. Creates actionable ticke... | +| [**adversarial-ux-test**](/docs/user-guide/skills/optional/dogfood/dogfood-adversarial-ux-test) | Roleplay the most difficult, tech-resistant user for your product. Browse the app as that persona, find every UX pain point, then filter complaints through a pragmatism layer to separate real problems from noise. Creates actionable ticke... | ## email | Skill | Description | |-------|-------------| -| [**agentmail**](/user-guide/skills/optional/email/email-agentmail) | Give the agent its own dedicated email inbox via AgentMail. Send, receive, and manage email autonomously using agent-owned email addresses (e.g. hermes-agent@agentmail.to). | +| [**agentmail**](/docs/user-guide/skills/optional/email/email-agentmail) | Give the agent its own dedicated email inbox via AgentMail. Send, receive, and manage email autonomously using agent-owned email addresses (e.g. hermes-agent@agentmail.to). | ## finance | Skill | Description | |-------|-------------| -| [**3-statement-model**](/user-guide/skills/optional/finance/finance-3-statement-model) | Build fully-integrated 3-statement models (IS, BS, CF) in Excel with working capital schedules, D&A roll-forwards, debt schedule, and the plugs that make cash and retained earnings tie. Pairs with excel-author. | -| [**comps-analysis**](/user-guide/skills/optional/finance/finance-comps-analysis) | Build comparable company analysis in Excel — operating metrics, valuation multiples, statistical benchmarking vs peer sets. Pairs with excel-author. Use for public-company valuation, IPO pricing, sector benchmarking, or outlier detection. | -| [**dcf-model**](/user-guide/skills/optional/finance/finance-dcf-model) | Build institutional-quality DCF valuation models in Excel — revenue projections, FCF build, WACC, terminal value, Bear/Base/Bull scenarios, 5x5 sensitivity tables. Pairs with excel-author. Use for intrinsic-value equity analysis. | -| [**excel-author**](/user-guide/skills/optional/finance/finance-excel-author) | Build auditable Excel workbooks headless with openpyxl — blue/black/green cell conventions, formulas over hardcodes, named ranges, balance checks, sensitivity tables. Use for financial models, audit outputs, reconciliations. | -| [**lbo-model**](/user-guide/skills/optional/finance/finance-lbo-model) | Build leveraged buyout models in Excel — sources & uses, debt schedule, cash sweep, exit multiple, IRR/MOIC sensitivity. Pairs with excel-author. Use for PE screening, sponsor-case valuation, or illustrative LBO in a pitch. | -| [**merger-model**](/user-guide/skills/optional/finance/finance-merger-model) | Build accretion/dilution (merger) models in Excel — pro-forma P&L, synergies, financing mix, EPS impact. Pairs with excel-author. Use for M&A pitches, board materials, or deal evaluation. | -| [**pptx-author**](/user-guide/skills/optional/finance/finance-pptx-author) | Build PowerPoint decks headless with python-pptx. Pairs with excel-author for model-backed decks where every number traces to a workbook cell. Use for pitch decks, IC memos, earnings notes. | -| [**stocks**](/user-guide/skills/optional/finance/finance-stocks) | Stock quotes, history, search, compare, crypto via Yahoo. | +| [**3-statement-model**](/docs/user-guide/skills/optional/finance/finance-3-statement-model) | Build fully-integrated 3-statement models (IS, BS, CF) in Excel with working capital schedules, D&A roll-forwards, debt schedule, and the plugs that make cash and retained earnings tie. Pairs with excel-author. | +| [**comps-analysis**](/docs/user-guide/skills/optional/finance/finance-comps-analysis) | Build comparable company analysis in Excel — operating metrics, valuation multiples, statistical benchmarking vs peer sets. Pairs with excel-author. Use for public-company valuation, IPO pricing, sector benchmarking, or outlier detection. | +| [**dcf-model**](/docs/user-guide/skills/optional/finance/finance-dcf-model) | Build institutional-quality DCF valuation models in Excel — revenue projections, FCF build, WACC, terminal value, Bear/Base/Bull scenarios, 5x5 sensitivity tables. Pairs with excel-author. Use for intrinsic-value equity analysis. | +| [**excel-author**](/docs/user-guide/skills/optional/finance/finance-excel-author) | Build auditable Excel workbooks headless with openpyxl — blue/black/green cell conventions, formulas over hardcodes, named ranges, balance checks, sensitivity tables. Use for financial models, audit outputs, reconciliations. | +| [**lbo-model**](/docs/user-guide/skills/optional/finance/finance-lbo-model) | Build leveraged buyout models in Excel — sources & uses, debt schedule, cash sweep, exit multiple, IRR/MOIC sensitivity. Pairs with excel-author. Use for PE screening, sponsor-case valuation, or illustrative LBO in a pitch. | +| [**merger-model**](/docs/user-guide/skills/optional/finance/finance-merger-model) | Build accretion/dilution (merger) models in Excel — pro-forma P&L, synergies, financing mix, EPS impact. Pairs with excel-author. Use for M&A pitches, board materials, or deal evaluation. | +| [**pptx-author**](/docs/user-guide/skills/optional/finance/finance-pptx-author) | Build PowerPoint decks headless with python-pptx. Pairs with excel-author for model-backed decks where every number traces to a workbook cell. Use for pitch decks, IC memos, earnings notes. | +| [**stocks**](/docs/user-guide/skills/optional/finance/finance-stocks) | Stock quotes, history, search, compare, crypto via Yahoo. | ## health | Skill | Description | |-------|-------------| -| [**fitness-nutrition**](/user-guide/skills/optional/health/health-fitness-nutrition) | Gym workout planner and nutrition tracker. Search 690+ exercises by muscle, equipment, or category via wger. Look up macros and calories for 380,000+ foods via USDA FoodData Central. Compute BMI, TDEE, one-rep max, macro splits, and body... | -| [**neuroskill-bci**](/user-guide/skills/optional/health/health-neuroskill-bci) | Connect to a running NeuroSkill instance and incorporate the user's real-time cognitive and emotional state (focus, relaxation, mood, cognitive load, drowsiness, heart rate, HRV, sleep staging, and 40+ derived EXG scores) into responses.... | +| [**fitness-nutrition**](/docs/user-guide/skills/optional/health/health-fitness-nutrition) | Gym workout planner and nutrition tracker. Search 690+ exercises by muscle, equipment, or category via wger. Look up macros and calories for 380,000+ foods via USDA FoodData Central. Compute BMI, TDEE, one-rep max, macro splits, and body... | +| [**neuroskill-bci**](/docs/user-guide/skills/optional/health/health-neuroskill-bci) | Connect to a running NeuroSkill instance and incorporate the user's real-time cognitive and emotional state (focus, relaxation, mood, cognitive load, drowsiness, heart rate, HRV, sleep staging, and 40+ derived EXG scores) into responses.... | ## mcp | Skill | Description | |-------|-------------| -| [**fastmcp**](/user-guide/skills/optional/mcp/mcp-fastmcp) | Build, test, inspect, install, and deploy MCP servers with FastMCP in Python. Use when creating a new MCP server, wrapping an API or database as MCP tools, exposing resources or prompts, or preparing a FastMCP server for Claude Code, Cur... | -| [**mcporter**](/user-guide/skills/optional/mcp/mcp-mcporter) | Use the mcporter CLI to list, configure, auth, and call MCP servers/tools directly (HTTP or stdio), including ad-hoc servers, config edits, and CLI/type generation. | +| [**fastmcp**](/docs/user-guide/skills/optional/mcp/mcp-fastmcp) | Build, test, inspect, install, and deploy MCP servers with FastMCP in Python. Use when creating a new MCP server, wrapping an API or database as MCP tools, exposing resources or prompts, or preparing a FastMCP server for Claude Code, Cur... | +| [**mcporter**](/docs/user-guide/skills/optional/mcp/mcp-mcporter) | Use the mcporter CLI to list, configure, auth, and call MCP servers/tools directly (HTTP or stdio), including ad-hoc servers, config edits, and CLI/type generation. | ## migration | Skill | Description | |-------|-------------| -| [**openclaw-migration**](/user-guide/skills/optional/migration/migration-openclaw-migration) | Migrate a user's OpenClaw customization footprint into Hermes Agent. Imports Hermes-compatible memories, SOUL.md, command allowlists, user skills, and selected workspace assets from ~/.openclaw, then reports exactly what could not be mig... | +| [**openclaw-migration**](/docs/user-guide/skills/optional/migration/migration-openclaw-migration) | Migrate a user's OpenClaw customization footprint into Hermes Agent. Imports Hermes-compatible memories, SOUL.md, command allowlists, user skills, and selected workspace assets from ~/.openclaw, then reports exactly what could not be mig... | ## mlops | Skill | Description | |-------|-------------| -| [**huggingface-accelerate**](/user-guide/skills/optional/mlops/mlops-accelerate) | Simplest distributed training API. 4 lines to add distributed support to any PyTorch script. Unified API for DeepSpeed/FSDP/Megatron/DDP. Automatic device placement, mixed precision (FP16/BF16/FP8). Interactive config, single launch comm... | -| [**axolotl**](/user-guide/skills/optional/mlops/mlops-training-axolotl) | Axolotl: YAML LLM fine-tuning (LoRA, DPO, GRPO). | -| [**chroma**](/user-guide/skills/optional/mlops/mlops-chroma) | Open-source embedding database for AI applications. Store embeddings and metadata, perform vector and full-text search, filter by metadata. Simple 4-function API. Scales from notebooks to production clusters. Use for semantic search, RAG... | -| [**clip**](/user-guide/skills/optional/mlops/mlops-clip) | OpenAI's model connecting vision and language. Enables zero-shot image classification, image-text matching, and cross-modal retrieval. Trained on 400M image-text pairs. Use for image search, content moderation, or vision-language tasks w... | -| [**faiss**](/user-guide/skills/optional/mlops/mlops-faiss) | Facebook's library for efficient similarity search and clustering of dense vectors. Supports billions of vectors, GPU acceleration, and various index types (Flat, IVF, HNSW). Use for fast k-NN search, large-scale vector retrieval, or whe... | -| [**optimizing-attention-flash**](/user-guide/skills/optional/mlops/mlops-flash-attention) | Optimizes transformer attention with Flash Attention for 2-4x speedup and 10-20x memory reduction. Use when training/running transformers with long sequences (>512 tokens), encountering GPU memory issues with attention, or need faster in... | -| [**guidance**](/user-guide/skills/optional/mlops/mlops-guidance) | Control LLM output with regex and grammars, guarantee valid JSON/XML/code generation, enforce structured formats, and build multi-step workflows with Guidance - Microsoft Research's constrained generation framework | -| [**huggingface-tokenizers**](/user-guide/skills/optional/mlops/mlops-huggingface-tokenizers) | Fast tokenizers optimized for research and production. Rust-based implementation tokenizes 1GB in <20 seconds. Supports BPE, WordPiece, and Unigram algorithms. Train custom vocabularies, track alignments, handle padding/truncation. Integ... | -| [**instructor**](/user-guide/skills/optional/mlops/mlops-instructor) | Extract structured data from LLM responses with Pydantic validation, retry failed extractions automatically, parse complex JSON with type safety, and stream partial results with Instructor - battle-tested structured output library | -| [**lambda-labs-gpu-cloud**](/user-guide/skills/optional/mlops/mlops-lambda-labs) | Reserved and on-demand GPU cloud instances for ML training and inference. Use when you need dedicated GPU instances with simple SSH access, persistent filesystems, or high-performance multi-node clusters for large-scale training. | -| [**llava**](/user-guide/skills/optional/mlops/mlops-llava) | Large Language and Vision Assistant. Enables visual instruction tuning and image-based conversations. Combines CLIP vision encoder with Vicuna/LLaMA language models. Supports multi-turn image chat, visual question answering, and instruct... | -| [**modal-serverless-gpu**](/user-guide/skills/optional/mlops/mlops-modal) | Serverless GPU cloud platform for running ML workloads. Use when you need on-demand GPU access without infrastructure management, deploying ML models as APIs, or running batch jobs with automatic scaling. | -| [**nemo-curator**](/user-guide/skills/optional/mlops/mlops-nemo-curator) | GPU-accelerated data curation for LLM training. Supports text/image/video/audio. Features fuzzy deduplication (16× faster), quality filtering (30+ heuristics), semantic deduplication, PII redaction, NSFW detection. Scales across GPUs wit... | -| [**outlines**](/user-guide/skills/optional/mlops/mlops-inference-outlines) | Outlines: structured JSON/regex/Pydantic LLM generation. | -| [**peft-fine-tuning**](/user-guide/skills/optional/mlops/mlops-peft) | Parameter-efficient fine-tuning for LLMs using LoRA, QLoRA, and 25+ methods. Use when fine-tuning large models (7B-70B) with limited GPU memory, when you need to train <1% of parameters with minimal accuracy loss, or for multi-adapter se... | -| [**pinecone**](/user-guide/skills/optional/mlops/mlops-pinecone) | Managed vector database for production AI applications. Fully managed, auto-scaling, with hybrid search (dense + sparse), metadata filtering, and namespaces. Low latency (<100ms p95). Use for production RAG, recommendation systems, or se... | -| [**pytorch-fsdp**](/user-guide/skills/optional/mlops/mlops-pytorch-fsdp) | Expert guidance for Fully Sharded Data Parallel training with PyTorch FSDP - parameter sharding, mixed precision, CPU offloading, FSDP2 | -| [**pytorch-lightning**](/user-guide/skills/optional/mlops/mlops-pytorch-lightning) | High-level PyTorch framework with Trainer class, automatic distributed training (DDP/FSDP/DeepSpeed), callbacks system, and minimal boilerplate. Scales from laptop to supercomputer with same code. Use when you want clean training loops w... | -| [**qdrant-vector-search**](/user-guide/skills/optional/mlops/mlops-qdrant) | High-performance vector similarity search engine for RAG and semantic search. Use when building production RAG systems requiring fast nearest neighbor search, hybrid search with filtering, or scalable vector storage with Rust-powered per... | -| [**sparse-autoencoder-training**](/user-guide/skills/optional/mlops/mlops-saelens) | Provides guidance for training and analyzing Sparse Autoencoders (SAEs) using SAELens to decompose neural network activations into interpretable features. Use when discovering interpretable features, analyzing superposition, or studying... | -| [**simpo-training**](/user-guide/skills/optional/mlops/mlops-simpo) | Simple Preference Optimization for LLM alignment. Reference-free alternative to DPO with better performance (+6.4 points on AlpacaEval 2.0). No reference model needed, more efficient than DPO. Use for preference alignment when want simpl... | -| [**slime-rl-training**](/user-guide/skills/optional/mlops/mlops-slime) | Provides guidance for LLM post-training with RL using slime, a Megatron+SGLang framework. Use when training GLM models, implementing custom data generation workflows, or needing tight Megatron-LM integration for RL scaling. | -| [**stable-diffusion-image-generation**](/user-guide/skills/optional/mlops/mlops-stable-diffusion) | State-of-the-art text-to-image generation with Stable Diffusion models via HuggingFace Diffusers. Use when generating images from text prompts, performing image-to-image translation, inpainting, or building custom diffusion pipelines. | -| [**tensorrt-llm**](/user-guide/skills/optional/mlops/mlops-tensorrt-llm) | Optimizes LLM inference with NVIDIA TensorRT for maximum throughput and lowest latency. Use for production deployment on NVIDIA GPUs (A100/H100), when you need 10-100x faster inference than PyTorch, or for serving models with quantizatio... | -| [**distributed-llm-pretraining-torchtitan**](/user-guide/skills/optional/mlops/mlops-torchtitan) | Provides PyTorch-native distributed LLM pretraining using torchtitan with 4D parallelism (FSDP2, TP, PP, CP). Use when pretraining Llama 3.1, DeepSeek V3, or custom models at scale from 8 to 512+ GPUs with Float8, torch.compile, and dist... | -| [**fine-tuning-with-trl**](/user-guide/skills/optional/mlops/mlops-training-trl-fine-tuning) | TRL: SFT, DPO, PPO, GRPO, reward modeling for LLM RLHF. | -| [**unsloth**](/user-guide/skills/optional/mlops/mlops-training-unsloth) | Unsloth: 2-5x faster LoRA/QLoRA fine-tuning, less VRAM. | -| [**whisper**](/user-guide/skills/optional/mlops/mlops-whisper) | OpenAI's general-purpose speech recognition model. Supports 99 languages, transcription, translation to English, and language identification. Six model sizes from tiny (39M params) to large (1550M params). Use for speech-to-text, podcast... | +| [**huggingface-accelerate**](/docs/user-guide/skills/optional/mlops/mlops-accelerate) | Simplest distributed training API. 4 lines to add distributed support to any PyTorch script. Unified API for DeepSpeed/FSDP/Megatron/DDP. Automatic device placement, mixed precision (FP16/BF16/FP8). Interactive config, single launch comm... | +| [**axolotl**](/docs/user-guide/skills/optional/mlops/mlops-training-axolotl) | Axolotl: YAML LLM fine-tuning (LoRA, DPO, GRPO). | +| [**chroma**](/docs/user-guide/skills/optional/mlops/mlops-chroma) | Open-source embedding database for AI applications. Store embeddings and metadata, perform vector and full-text search, filter by metadata. Simple 4-function API. Scales from notebooks to production clusters. Use for semantic search, RAG... | +| [**clip**](/docs/user-guide/skills/optional/mlops/mlops-clip) | OpenAI's model connecting vision and language. Enables zero-shot image classification, image-text matching, and cross-modal retrieval. Trained on 400M image-text pairs. Use for image search, content moderation, or vision-language tasks w... | +| [**faiss**](/docs/user-guide/skills/optional/mlops/mlops-faiss) | Facebook's library for efficient similarity search and clustering of dense vectors. Supports billions of vectors, GPU acceleration, and various index types (Flat, IVF, HNSW). Use for fast k-NN search, large-scale vector retrieval, or whe... | +| [**optimizing-attention-flash**](/docs/user-guide/skills/optional/mlops/mlops-flash-attention) | Optimizes transformer attention with Flash Attention for 2-4x speedup and 10-20x memory reduction. Use when training/running transformers with long sequences (>512 tokens), encountering GPU memory issues with attention, or need faster in... | +| [**guidance**](/docs/user-guide/skills/optional/mlops/mlops-guidance) | Control LLM output with regex and grammars, guarantee valid JSON/XML/code generation, enforce structured formats, and build multi-step workflows with Guidance - Microsoft Research's constrained generation framework | +| [**huggingface-tokenizers**](/docs/user-guide/skills/optional/mlops/mlops-huggingface-tokenizers) | Fast tokenizers optimized for research and production. Rust-based implementation tokenizes 1GB in <20 seconds. Supports BPE, WordPiece, and Unigram algorithms. Train custom vocabularies, track alignments, handle padding/truncation. Integ... | +| [**instructor**](/docs/user-guide/skills/optional/mlops/mlops-instructor) | Extract structured data from LLM responses with Pydantic validation, retry failed extractions automatically, parse complex JSON with type safety, and stream partial results with Instructor - battle-tested structured output library | +| [**lambda-labs-gpu-cloud**](/docs/user-guide/skills/optional/mlops/mlops-lambda-labs) | Reserved and on-demand GPU cloud instances for ML training and inference. Use when you need dedicated GPU instances with simple SSH access, persistent filesystems, or high-performance multi-node clusters for large-scale training. | +| [**llava**](/docs/user-guide/skills/optional/mlops/mlops-llava) | Large Language and Vision Assistant. Enables visual instruction tuning and image-based conversations. Combines CLIP vision encoder with Vicuna/LLaMA language models. Supports multi-turn image chat, visual question answering, and instruct... | +| [**modal-serverless-gpu**](/docs/user-guide/skills/optional/mlops/mlops-modal) | Serverless GPU cloud platform for running ML workloads. Use when you need on-demand GPU access without infrastructure management, deploying ML models as APIs, or running batch jobs with automatic scaling. | +| [**nemo-curator**](/docs/user-guide/skills/optional/mlops/mlops-nemo-curator) | GPU-accelerated data curation for LLM training. Supports text/image/video/audio. Features fuzzy deduplication (16× faster), quality filtering (30+ heuristics), semantic deduplication, PII redaction, NSFW detection. Scales across GPUs wit... | +| [**outlines**](/docs/user-guide/skills/optional/mlops/mlops-inference-outlines) | Outlines: structured JSON/regex/Pydantic LLM generation. | +| [**peft-fine-tuning**](/docs/user-guide/skills/optional/mlops/mlops-peft) | Parameter-efficient fine-tuning for LLMs using LoRA, QLoRA, and 25+ methods. Use when fine-tuning large models (7B-70B) with limited GPU memory, when you need to train <1% of parameters with minimal accuracy loss, or for multi-adapter se... | +| [**pinecone**](/docs/user-guide/skills/optional/mlops/mlops-pinecone) | Managed vector database for production AI applications. Fully managed, auto-scaling, with hybrid search (dense + sparse), metadata filtering, and namespaces. Low latency (<100ms p95). Use for production RAG, recommendation systems, or se... | +| [**pytorch-fsdp**](/docs/user-guide/skills/optional/mlops/mlops-pytorch-fsdp) | Expert guidance for Fully Sharded Data Parallel training with PyTorch FSDP - parameter sharding, mixed precision, CPU offloading, FSDP2 | +| [**pytorch-lightning**](/docs/user-guide/skills/optional/mlops/mlops-pytorch-lightning) | High-level PyTorch framework with Trainer class, automatic distributed training (DDP/FSDP/DeepSpeed), callbacks system, and minimal boilerplate. Scales from laptop to supercomputer with same code. Use when you want clean training loops w... | +| [**qdrant-vector-search**](/docs/user-guide/skills/optional/mlops/mlops-qdrant) | High-performance vector similarity search engine for RAG and semantic search. Use when building production RAG systems requiring fast nearest neighbor search, hybrid search with filtering, or scalable vector storage with Rust-powered per... | +| [**sparse-autoencoder-training**](/docs/user-guide/skills/optional/mlops/mlops-saelens) | Provides guidance for training and analyzing Sparse Autoencoders (SAEs) using SAELens to decompose neural network activations into interpretable features. Use when discovering interpretable features, analyzing superposition, or studying... | +| [**simpo-training**](/docs/user-guide/skills/optional/mlops/mlops-simpo) | Simple Preference Optimization for LLM alignment. Reference-free alternative to DPO with better performance (+6.4 points on AlpacaEval 2.0). No reference model needed, more efficient than DPO. Use for preference alignment when want simpl... | +| [**slime-rl-training**](/docs/user-guide/skills/optional/mlops/mlops-slime) | Provides guidance for LLM post-training with RL using slime, a Megatron+SGLang framework. Use when training GLM models, implementing custom data generation workflows, or needing tight Megatron-LM integration for RL scaling. | +| [**stable-diffusion-image-generation**](/docs/user-guide/skills/optional/mlops/mlops-stable-diffusion) | State-of-the-art text-to-image generation with Stable Diffusion models via HuggingFace Diffusers. Use when generating images from text prompts, performing image-to-image translation, inpainting, or building custom diffusion pipelines. | +| [**tensorrt-llm**](/docs/user-guide/skills/optional/mlops/mlops-tensorrt-llm) | Optimizes LLM inference with NVIDIA TensorRT for maximum throughput and lowest latency. Use for production deployment on NVIDIA GPUs (A100/H100), when you need 10-100x faster inference than PyTorch, or for serving models with quantizatio... | +| [**distributed-llm-pretraining-torchtitan**](/docs/user-guide/skills/optional/mlops/mlops-torchtitan) | Provides PyTorch-native distributed LLM pretraining using torchtitan with 4D parallelism (FSDP2, TP, PP, CP). Use when pretraining Llama 3.1, DeepSeek V3, or custom models at scale from 8 to 512+ GPUs with Float8, torch.compile, and dist... | +| [**fine-tuning-with-trl**](/docs/user-guide/skills/optional/mlops/mlops-training-trl-fine-tuning) | TRL: SFT, DPO, PPO, GRPO, reward modeling for LLM RLHF. | +| [**unsloth**](/docs/user-guide/skills/optional/mlops/mlops-training-unsloth) | Unsloth: 2-5x faster LoRA/QLoRA fine-tuning, less VRAM. | +| [**whisper**](/docs/user-guide/skills/optional/mlops/mlops-whisper) | OpenAI's general-purpose speech recognition model. Supports 99 languages, transcription, translation to English, and language identification. Six model sizes from tiny (39M params) to large (1550M params). Use for speech-to-text, podcast... | ## productivity | Skill | Description | |-------|-------------| -| [**canvas**](/user-guide/skills/optional/productivity/productivity-canvas) | Canvas LMS integration — fetch enrolled courses and assignments using API token authentication. | -| [**here.now**](/user-guide/skills/optional/productivity/productivity-here-now) | Publish static sites to {slug}.here.now and store private files in cloud Drives for agent-to-agent handoff. | -| [**memento-flashcards**](/user-guide/skills/optional/productivity/productivity-memento-flashcards) | Spaced-repetition flashcard system. Create cards from facts or text, chat with flashcards using free-text answers graded by the agent, generate quizzes from YouTube transcripts, review due cards with adaptive scheduling, and export/impor... | -| [**shop-app**](/user-guide/skills/optional/productivity/productivity-shop-app) | Shop.app: product search, order tracking, returns, reorder. | -| [**shopify**](/user-guide/skills/optional/productivity/productivity-shopify) | Shopify Admin & Storefront GraphQL APIs via curl. Products, orders, customers, inventory, metafields. | -| [**siyuan**](/user-guide/skills/optional/productivity/productivity-siyuan) | SiYuan Note API for searching, reading, creating, and managing blocks and documents in a self-hosted knowledge base via curl. | -| [**telephony**](/user-guide/skills/optional/productivity/productivity-telephony) | Give Hermes phone capabilities without core tool changes. Provision and persist a Twilio number, send and receive SMS/MMS, make direct calls, and place AI-driven outbound calls through Bland.ai or Vapi. | +| [**canvas**](/docs/user-guide/skills/optional/productivity/productivity-canvas) | Canvas LMS integration — fetch enrolled courses and assignments using API token authentication. | +| [**here.now**](/docs/user-guide/skills/optional/productivity/productivity-here-now) | Publish static sites to {slug}.here.now and store private files in cloud Drives for agent-to-agent handoff. | +| [**memento-flashcards**](/docs/user-guide/skills/optional/productivity/productivity-memento-flashcards) | Spaced-repetition flashcard system. Create cards from facts or text, chat with flashcards using free-text answers graded by the agent, generate quizzes from YouTube transcripts, review due cards with adaptive scheduling, and export/impor... | +| [**shop-app**](/docs/user-guide/skills/optional/productivity/productivity-shop-app) | Shop.app: product search, order tracking, returns, reorder. | +| [**shopify**](/docs/user-guide/skills/optional/productivity/productivity-shopify) | Shopify Admin & Storefront GraphQL APIs via curl. Products, orders, customers, inventory, metafields. | +| [**siyuan**](/docs/user-guide/skills/optional/productivity/productivity-siyuan) | SiYuan Note API for searching, reading, creating, and managing blocks and documents in a self-hosted knowledge base via curl. | +| [**telephony**](/docs/user-guide/skills/optional/productivity/productivity-telephony) | Give Hermes phone capabilities without core tool changes. Provision and persist a Twilio number, send and receive SMS/MMS, make direct calls, and place AI-driven outbound calls through Bland.ai or Vapi. | ## research | Skill | Description | |-------|-------------| -| [**bioinformatics**](/user-guide/skills/optional/research/research-bioinformatics) | Gateway to 400+ bioinformatics skills from bioSkills and ClawBio. Covers genomics, transcriptomics, single-cell, variant calling, pharmacogenomics, metagenomics, structural biology, and more. Fetches domain-specific reference material on... | -| [**darwinian-evolver**](/user-guide/skills/optional/research/research-darwinian-evolver) | Evolve prompts/regex/SQL/code with Imbue's evolution loop. | -| [**domain-intel**](/user-guide/skills/optional/research/research-domain-intel) | Passive domain reconnaissance using Python stdlib. Subdomain discovery, SSL certificate inspection, WHOIS lookups, DNS records, domain availability checks, and bulk multi-domain analysis. No API keys required. | -| [**drug-discovery**](/user-guide/skills/optional/research/research-drug-discovery) | Pharmaceutical research assistant for drug discovery workflows. Search bioactive compounds on ChEMBL, calculate drug-likeness (Lipinski Ro5, QED, TPSA, synthetic accessibility), look up drug-drug interactions via OpenFDA, interpret ADMET... | -| [**duckduckgo-search**](/user-guide/skills/optional/research/research-duckduckgo-search) | Free web search via DuckDuckGo — text, news, images, videos. No API key needed. Prefer the `ddgs` CLI when installed; use the Python DDGS library only after verifying that `ddgs` is available in the current runtime. | -| [**gitnexus-explorer**](/user-guide/skills/optional/research/research-gitnexus-explorer) | Index a codebase with GitNexus and serve an interactive knowledge graph via web UI + Cloudflare tunnel. | -| [**osint-investigation**](/user-guide/skills/optional/research/research-osint-investigation) | Public-records OSINT investigation framework — SEC EDGAR filings, USAspending contracts, Senate lobbying, OFAC sanctions, ICIJ offshore leaks, NYC property records (ACRIS), OpenCorporates registries, CourtListener court records, Wayback... | -| [**parallel-cli**](/user-guide/skills/optional/research/research-parallel-cli) | Optional vendor skill for Parallel CLI — agent-native web search, extraction, deep research, enrichment, FindAll, and monitoring. Prefer JSON output and non-interactive flows. | -| [**qmd**](/user-guide/skills/optional/research/research-qmd) | Search personal knowledge bases, notes, docs, and meeting transcripts locally using qmd — a hybrid retrieval engine with BM25, vector search, and LLM reranking. Supports CLI and MCP integration. | -| [**scrapling**](/user-guide/skills/optional/research/research-scrapling) | Web scraping with Scrapling - HTTP fetching, stealth browser automation, Cloudflare bypass, and spider crawling via CLI and Python. | -| [**searxng-search**](/user-guide/skills/optional/research/research-searxng-search) | Free meta-search via SearXNG — aggregates results from 70+ search engines. Self-hosted or use a public instance. No API key needed. Falls back automatically when the web search toolset is unavailable. | +| [**bioinformatics**](/docs/user-guide/skills/optional/research/research-bioinformatics) | Gateway to 400+ bioinformatics skills from bioSkills and ClawBio. Covers genomics, transcriptomics, single-cell, variant calling, pharmacogenomics, metagenomics, structural biology, and more. Fetches domain-specific reference material on... | +| [**darwinian-evolver**](/docs/user-guide/skills/optional/research/research-darwinian-evolver) | Evolve prompts/regex/SQL/code with Imbue's evolution loop. | +| [**domain-intel**](/docs/user-guide/skills/optional/research/research-domain-intel) | Passive domain reconnaissance using Python stdlib. Subdomain discovery, SSL certificate inspection, WHOIS lookups, DNS records, domain availability checks, and bulk multi-domain analysis. No API keys required. | +| [**drug-discovery**](/docs/user-guide/skills/optional/research/research-drug-discovery) | Pharmaceutical research assistant for drug discovery workflows. Search bioactive compounds on ChEMBL, calculate drug-likeness (Lipinski Ro5, QED, TPSA, synthetic accessibility), look up drug-drug interactions via OpenFDA, interpret ADMET... | +| [**duckduckgo-search**](/docs/user-guide/skills/optional/research/research-duckduckgo-search) | Free web search via DuckDuckGo — text, news, images, videos. No API key needed. Prefer the `ddgs` CLI when installed; use the Python DDGS library only after verifying that `ddgs` is available in the current runtime. | +| [**gitnexus-explorer**](/docs/user-guide/skills/optional/research/research-gitnexus-explorer) | Index a codebase with GitNexus and serve an interactive knowledge graph via web UI + Cloudflare tunnel. | +| [**osint-investigation**](/docs/user-guide/skills/optional/research/research-osint-investigation) | Public-records OSINT investigation framework — SEC EDGAR filings, USAspending contracts, Senate lobbying, OFAC sanctions, ICIJ offshore leaks, NYC property records (ACRIS), OpenCorporates registries, CourtListener court records, Wayback... | +| [**parallel-cli**](/docs/user-guide/skills/optional/research/research-parallel-cli) | Optional vendor skill for Parallel CLI — agent-native web search, extraction, deep research, enrichment, FindAll, and monitoring. Prefer JSON output and non-interactive flows. | +| [**qmd**](/docs/user-guide/skills/optional/research/research-qmd) | Search personal knowledge bases, notes, docs, and meeting transcripts locally using qmd — a hybrid retrieval engine with BM25, vector search, and LLM reranking. Supports CLI and MCP integration. | +| [**scrapling**](/docs/user-guide/skills/optional/research/research-scrapling) | Web scraping with Scrapling - HTTP fetching, stealth browser automation, Cloudflare bypass, and spider crawling via CLI and Python. | +| [**searxng-search**](/docs/user-guide/skills/optional/research/research-searxng-search) | Free meta-search via SearXNG — aggregates results from 70+ search engines. Self-hosted or use a public instance. No API key needed. Falls back automatically when the web search toolset is unavailable. | ## security | Skill | Description | |-------|-------------| -| [**1password**](/user-guide/skills/optional/security/security-1password) | Set up and use 1Password CLI (op). Use when installing the CLI, enabling desktop app integration, signing in, and reading/injecting secrets for commands. | -| [**oss-forensics**](/user-guide/skills/optional/security/security-oss-forensics) | Supply chain investigation, evidence recovery, and forensic analysis for GitHub repositories. Covers deleted commit recovery, force-push detection, IOC extraction, multi-source evidence collection, hypothesis formation/validation, and st... | -| [**sherlock**](/user-guide/skills/optional/security/security-sherlock) | OSINT username search across 400+ social networks. Hunt down social media accounts by username. | +| [**1password**](/docs/user-guide/skills/optional/security/security-1password) | Set up and use 1Password CLI (op). Use when installing the CLI, enabling desktop app integration, signing in, and reading/injecting secrets for commands. | +| [**oss-forensics**](/docs/user-guide/skills/optional/security/security-oss-forensics) | Supply chain investigation, evidence recovery, and forensic analysis for GitHub repositories. Covers deleted commit recovery, force-push detection, IOC extraction, multi-source evidence collection, hypothesis formation/validation, and st... | +| [**sherlock**](/docs/user-guide/skills/optional/security/security-sherlock) | OSINT username search across 400+ social networks. Hunt down social media accounts by username. | +| [**web-pentest**](/docs/user-guide/skills/optional/security/security-web-pentest) | Authorized web application penetration testing — reconnaissance, vulnerability analysis, proof-based exploitation, and professional reporting. Adapts Shannon's "No Exploit, No Report" methodology with hard guardrails for scope, authoriza... | ## software-development | Skill | Description | |-------|-------------| -| [**code-wiki**](/user-guide/skills/optional/software-development/software-development-code-wiki) | Generate wiki docs + Mermaid diagrams for any codebase. | -| [**rest-graphql-debug**](/user-guide/skills/optional/software-development/software-development-rest-graphql-debug) | Debug REST/GraphQL APIs: status codes, auth, schemas, repro. | +| [**code-wiki**](/docs/user-guide/skills/optional/software-development/software-development-code-wiki) | Generate wiki docs + Mermaid diagrams for any codebase. | +| [**rest-graphql-debug**](/docs/user-guide/skills/optional/software-development/software-development-rest-graphql-debug) | Debug REST/GraphQL APIs: status codes, auth, schemas, repro. | ## web-development | Skill | Description | |-------|-------------| -| [**page-agent**](/user-guide/skills/optional/web-development/web-development-page-agent) | Embed alibaba/page-agent into your own web application — a pure-JavaScript in-page GUI agent that ships as a single <script> tag or npm package and lets end-users of your site drive the UI with natural language ("click login, fill userna... | +| [**page-agent**](/docs/user-guide/skills/optional/web-development/web-development-page-agent) | Embed alibaba/page-agent into your own web application — a pure-JavaScript in-page GUI agent that ships as a single <script> tag or npm package and lets end-users of your site drive the UI with natural language ("click login, fill userna... | --- diff --git a/website/docs/reference/skills-catalog.md b/website/docs/reference/skills-catalog.md index 26d2a3d3a4b..5382a4b3537 100644 --- a/website/docs/reference/skills-catalog.md +++ b/website/docs/reference/skills-catalog.md @@ -16,186 +16,188 @@ If a skill is missing from this list but present in the repo, the catalog is reg | Skill | Description | Path | |-------|-------------|------| -| [`apple-notes`](/user-guide/skills/bundled/apple/apple-apple-notes) | Manage Apple Notes via memo CLI: create, search, edit. | `apple/apple-notes` | -| [`apple-reminders`](/user-guide/skills/bundled/apple/apple-apple-reminders) | Apple Reminders via remindctl: add, list, complete. | `apple/apple-reminders` | -| [`findmy`](/user-guide/skills/bundled/apple/apple-findmy) | Track Apple devices/AirTags via FindMy.app on macOS. | `apple/findmy` | -| [`imessage`](/user-guide/skills/bundled/apple/apple-imessage) | Send and receive iMessages/SMS via the imsg CLI on macOS. | `apple/imessage` | -| [`macos-computer-use`](/user-guide/skills/bundled/apple/apple-macos-computer-use) | Drive the macOS desktop in the background — screenshots, mouse, keyboard, scroll, drag — without stealing the user's cursor, keyboard focus, or Space. Works with any tool-capable model. Load this skill whenever the `computer_use` tool is... | `apple/macos-computer-use` | +| [`apple-notes`](/docs/user-guide/skills/bundled/apple/apple-apple-notes) | Manage Apple Notes via memo CLI: create, search, edit. | `apple/apple-notes` | +| [`apple-reminders`](/docs/user-guide/skills/bundled/apple/apple-apple-reminders) | Apple Reminders via remindctl: add, list, complete. | `apple/apple-reminders` | +| [`findmy`](/docs/user-guide/skills/bundled/apple/apple-findmy) | Track Apple devices/AirTags via FindMy.app on macOS. | `apple/findmy` | +| [`imessage`](/docs/user-guide/skills/bundled/apple/apple-imessage) | Send and receive iMessages/SMS via the imsg CLI on macOS. | `apple/imessage` | +| [`macos-computer-use`](/docs/user-guide/skills/bundled/apple/apple-macos-computer-use) | Drive the macOS desktop in the background — screenshots, mouse, keyboard, scroll, drag — without stealing the user's cursor, keyboard focus, or Space. Works with any tool-capable model. Load this skill whenever the `computer_use` tool is... | `apple/macos-computer-use` | ## autonomous-ai-agents | Skill | Description | Path | |-------|-------------|------| -| [`claude-code`](/user-guide/skills/bundled/autonomous-ai-agents/autonomous-ai-agents-claude-code) | Delegate coding to Claude Code CLI (features, PRs). | `autonomous-ai-agents/claude-code` | -| [`codex`](/user-guide/skills/bundled/autonomous-ai-agents/autonomous-ai-agents-codex) | Delegate coding to OpenAI Codex CLI (features, PRs). | `autonomous-ai-agents/codex` | -| [`hermes-agent`](/user-guide/skills/bundled/autonomous-ai-agents/autonomous-ai-agents-hermes-agent) | Configure, extend, or contribute to Hermes Agent. | `autonomous-ai-agents/hermes-agent` | -| [`opencode`](/user-guide/skills/bundled/autonomous-ai-agents/autonomous-ai-agents-opencode) | Delegate coding to OpenCode CLI (features, PR review). | `autonomous-ai-agents/opencode` | +| [`claude-code`](/docs/user-guide/skills/bundled/autonomous-ai-agents/autonomous-ai-agents-claude-code) | Delegate coding to Claude Code CLI (features, PRs). | `autonomous-ai-agents/claude-code` | +| [`codex`](/docs/user-guide/skills/bundled/autonomous-ai-agents/autonomous-ai-agents-codex) | Delegate coding to OpenAI Codex CLI (features, PRs). | `autonomous-ai-agents/codex` | +| [`hermes-agent`](/docs/user-guide/skills/bundled/autonomous-ai-agents/autonomous-ai-agents-hermes-agent) | Configure, extend, or contribute to Hermes Agent. | `autonomous-ai-agents/hermes-agent` | +| [`kanban-codex-lane`](/docs/user-guide/skills/bundled/autonomous-ai-agents/autonomous-ai-agents-kanban-codex-lane) | Use when a Hermes Kanban worker wants to run Codex CLI as an isolated implementation lane while Hermes keeps ownership of task lifecycle, reconciliation, testing, and handoff. | `autonomous-ai-agents/kanban-codex-lane` | +| [`opencode`](/docs/user-guide/skills/bundled/autonomous-ai-agents/autonomous-ai-agents-opencode) | Delegate coding to OpenCode CLI (features, PR review). | `autonomous-ai-agents/opencode` | ## creative | Skill | Description | Path | |-------|-------------|------| -| [`architecture-diagram`](/user-guide/skills/bundled/creative/creative-architecture-diagram) | Dark-themed SVG architecture/cloud/infra diagrams as HTML. | `creative/architecture-diagram` | -| [`ascii-art`](/user-guide/skills/bundled/creative/creative-ascii-art) | ASCII art: pyfiglet, cowsay, boxes, image-to-ascii. | `creative/ascii-art` | -| [`ascii-video`](/user-guide/skills/bundled/creative/creative-ascii-video) | ASCII video: convert video/audio to colored ASCII MP4/GIF. | `creative/ascii-video` | -| [`baoyu-article-illustrator`](/user-guide/skills/bundled/creative/creative-baoyu-article-illustrator) | Article illustrations: type × style × palette consistency. | `creative/baoyu-article-illustrator` | -| [`baoyu-comic`](/user-guide/skills/bundled/creative/creative-baoyu-comic) | Knowledge comics (知识漫画): educational, biography, tutorial. | `creative/baoyu-comic` | -| [`baoyu-infographic`](/user-guide/skills/bundled/creative/creative-baoyu-infographic) | Infographics: 21 layouts x 21 styles (信息图, 可视化). | `creative/baoyu-infographic` | -| [`claude-design`](/user-guide/skills/bundled/creative/creative-claude-design) | Design one-off HTML artifacts (landing, deck, prototype). | `creative/claude-design` | -| [`comfyui`](/user-guide/skills/bundled/creative/creative-comfyui) | Generate images, video, and audio with ComfyUI — install, launch, manage nodes/models, run workflows with parameter injection. Uses the official comfy-cli for lifecycle and direct REST/WebSocket API for execution. | `creative/comfyui` | -| [`ideation`](/user-guide/skills/bundled/creative/creative-creative-ideation) | Generate project ideas via creative constraints. | `creative/creative-ideation` | -| [`design-md`](/user-guide/skills/bundled/creative/creative-design-md) | Author/validate/export Google's DESIGN.md token spec files. | `creative/design-md` | -| [`excalidraw`](/user-guide/skills/bundled/creative/creative-excalidraw) | Hand-drawn Excalidraw JSON diagrams (arch, flow, seq). | `creative/excalidraw` | -| [`humanizer`](/user-guide/skills/bundled/creative/creative-humanizer) | Humanize text: strip AI-isms and add real voice. | `creative/humanizer` | -| [`manim-video`](/user-guide/skills/bundled/creative/creative-manim-video) | Manim CE animations: 3Blue1Brown math/algo videos. | `creative/manim-video` | -| [`p5js`](/user-guide/skills/bundled/creative/creative-p5js) | p5.js sketches: gen art, shaders, interactive, 3D. | `creative/p5js` | -| [`pixel-art`](/user-guide/skills/bundled/creative/creative-pixel-art) | Pixel art w/ era palettes (NES, Game Boy, PICO-8). | `creative/pixel-art` | -| [`popular-web-designs`](/user-guide/skills/bundled/creative/creative-popular-web-designs) | 54 real design systems (Stripe, Linear, Vercel) as HTML/CSS. | `creative/popular-web-designs` | -| [`pretext`](/user-guide/skills/bundled/creative/creative-pretext) | Use when building creative browser demos with @chenglou/pretext — DOM-free text layout for ASCII art, typographic flow around obstacles, text-as-geometry games, kinetic typography, and text-powered generative art. Produces single-file HT... | `creative/pretext` | -| [`sketch`](/user-guide/skills/bundled/creative/creative-sketch) | Throwaway HTML mockups: 2-3 design variants to compare. | `creative/sketch` | -| [`songwriting-and-ai-music`](/user-guide/skills/bundled/creative/creative-songwriting-and-ai-music) | Songwriting craft and Suno AI music prompts. | `creative/songwriting-and-ai-music` | -| [`touchdesigner-mcp`](/user-guide/skills/bundled/creative/creative-touchdesigner-mcp) | Control a running TouchDesigner instance via twozero MCP — create operators, set parameters, wire connections, execute Python, build real-time visuals. 36 native tools. | `creative/touchdesigner-mcp` | +| [`architecture-diagram`](/docs/user-guide/skills/bundled/creative/creative-architecture-diagram) | Dark-themed SVG architecture/cloud/infra diagrams as HTML. | `creative/architecture-diagram` | +| [`ascii-art`](/docs/user-guide/skills/bundled/creative/creative-ascii-art) | ASCII art: pyfiglet, cowsay, boxes, image-to-ascii. | `creative/ascii-art` | +| [`ascii-video`](/docs/user-guide/skills/bundled/creative/creative-ascii-video) | ASCII video: convert video/audio to colored ASCII MP4/GIF. | `creative/ascii-video` | +| [`baoyu-article-illustrator`](/docs/user-guide/skills/bundled/creative/creative-baoyu-article-illustrator) | Article illustrations: type × style × palette consistency. | `creative/baoyu-article-illustrator` | +| [`baoyu-comic`](/docs/user-guide/skills/bundled/creative/creative-baoyu-comic) | Knowledge comics (知识漫画): educational, biography, tutorial. | `creative/baoyu-comic` | +| [`baoyu-infographic`](/docs/user-guide/skills/bundled/creative/creative-baoyu-infographic) | Infographics: 21 layouts x 21 styles (信息图, 可视化). | `creative/baoyu-infographic` | +| [`claude-design`](/docs/user-guide/skills/bundled/creative/creative-claude-design) | Design one-off HTML artifacts (landing, deck, prototype). | `creative/claude-design` | +| [`comfyui`](/docs/user-guide/skills/bundled/creative/creative-comfyui) | Generate images, video, and audio with ComfyUI — install, launch, manage nodes/models, run workflows with parameter injection. Uses the official comfy-cli for lifecycle and direct REST/WebSocket API for execution. | `creative/comfyui` | +| [`ideation`](/docs/user-guide/skills/bundled/creative/creative-creative-ideation) | Generate project ideas via creative constraints. | `creative/creative-ideation` | +| [`design-md`](/docs/user-guide/skills/bundled/creative/creative-design-md) | Author/validate/export Google's DESIGN.md token spec files. | `creative/design-md` | +| [`excalidraw`](/docs/user-guide/skills/bundled/creative/creative-excalidraw) | Hand-drawn Excalidraw JSON diagrams (arch, flow, seq). | `creative/excalidraw` | +| [`humanizer`](/docs/user-guide/skills/bundled/creative/creative-humanizer) | Humanize text: strip AI-isms and add real voice. | `creative/humanizer` | +| [`manim-video`](/docs/user-guide/skills/bundled/creative/creative-manim-video) | Manim CE animations: 3Blue1Brown math/algo videos. | `creative/manim-video` | +| [`p5js`](/docs/user-guide/skills/bundled/creative/creative-p5js) | p5.js sketches: gen art, shaders, interactive, 3D. | `creative/p5js` | +| [`pixel-art`](/docs/user-guide/skills/bundled/creative/creative-pixel-art) | Pixel art w/ era palettes (NES, Game Boy, PICO-8). | `creative/pixel-art` | +| [`popular-web-designs`](/docs/user-guide/skills/bundled/creative/creative-popular-web-designs) | 54 real design systems (Stripe, Linear, Vercel) as HTML/CSS. | `creative/popular-web-designs` | +| [`pretext`](/docs/user-guide/skills/bundled/creative/creative-pretext) | Use when building creative browser demos with @chenglou/pretext — DOM-free text layout for ASCII art, typographic flow around obstacles, text-as-geometry games, kinetic typography, and text-powered generative art. Produces single-file HT... | `creative/pretext` | +| [`sketch`](/docs/user-guide/skills/bundled/creative/creative-sketch) | Throwaway HTML mockups: 2-3 design variants to compare. | `creative/sketch` | +| [`songwriting-and-ai-music`](/docs/user-guide/skills/bundled/creative/creative-songwriting-and-ai-music) | Songwriting craft and Suno AI music prompts. | `creative/songwriting-and-ai-music` | +| [`touchdesigner-mcp`](/docs/user-guide/skills/bundled/creative/creative-touchdesigner-mcp) | Control a running TouchDesigner instance via twozero MCP — create operators, set parameters, wire connections, execute Python, build real-time visuals. 36 native tools. | `creative/touchdesigner-mcp` | ## data-science | Skill | Description | Path | |-------|-------------|------| -| [`jupyter-live-kernel`](/user-guide/skills/bundled/data-science/data-science-jupyter-live-kernel) | Iterative Python via live Jupyter kernel (hamelnb). | `data-science/jupyter-live-kernel` | +| [`jupyter-live-kernel`](/docs/user-guide/skills/bundled/data-science/data-science-jupyter-live-kernel) | Iterative Python via live Jupyter kernel (hamelnb). | `data-science/jupyter-live-kernel` | ## devops | Skill | Description | Path | |-------|-------------|------| -| [`kanban-orchestrator`](/user-guide/skills/bundled/devops/devops-kanban-orchestrator) | Decomposition playbook + anti-temptation rules for an orchestrator profile routing work through Kanban. The "don't do the work yourself" rule and the basic lifecycle are auto-injected into every kanban worker's system prompt; this skill... | `devops/kanban-orchestrator` | -| [`kanban-worker`](/user-guide/skills/bundled/devops/devops-kanban-worker) | Pitfalls, examples, and edge cases for Hermes Kanban workers. The lifecycle itself is auto-injected into every worker's system prompt as KANBAN_GUIDANCE (from agent/prompt_builder.py); this skill is what you load when you want deeper det... | `devops/kanban-worker` | -| [`webhook-subscriptions`](/user-guide/skills/bundled/devops/devops-webhook-subscriptions) | Webhook subscriptions: event-driven agent runs. | `devops/webhook-subscriptions` | +| [`kanban-orchestrator`](/docs/user-guide/skills/bundled/devops/devops-kanban-orchestrator) | Decomposition playbook + anti-temptation rules for an orchestrator profile routing work through Kanban. The "don't do the work yourself" rule and the basic lifecycle are auto-injected into every kanban worker's system prompt; this skill... | `devops/kanban-orchestrator` | +| [`kanban-worker`](/docs/user-guide/skills/bundled/devops/devops-kanban-worker) | Pitfalls, examples, and edge cases for Hermes Kanban workers. The lifecycle itself is auto-injected into every worker's system prompt as KANBAN_GUIDANCE (from agent/prompt_builder.py); this skill is what you load when you want deeper det... | `devops/kanban-worker` | +| [`webhook-subscriptions`](/docs/user-guide/skills/bundled/devops/devops-webhook-subscriptions) | Webhook subscriptions: event-driven agent runs. | `devops/webhook-subscriptions` | ## dogfood | Skill | Description | Path | |-------|-------------|------| -| [`dogfood`](/user-guide/skills/bundled/dogfood/dogfood-dogfood) | Exploratory QA of web apps: find bugs, evidence, reports. | `dogfood` | +| [`dogfood`](/docs/user-guide/skills/bundled/dogfood/dogfood-dogfood) | Exploratory QA of web apps: find bugs, evidence, reports. | `dogfood` | ## email | Skill | Description | Path | |-------|-------------|------| -| [`himalaya`](/user-guide/skills/bundled/email/email-himalaya) | Himalaya CLI: IMAP/SMTP email from terminal. | `email/himalaya` | +| [`himalaya`](/docs/user-guide/skills/bundled/email/email-himalaya) | Himalaya CLI: IMAP/SMTP email from terminal. | `email/himalaya` | ## gaming | Skill | Description | Path | |-------|-------------|------| -| [`minecraft-modpack-server`](/user-guide/skills/bundled/gaming/gaming-minecraft-modpack-server) | Host modded Minecraft servers (CurseForge, Modrinth). | `gaming/minecraft-modpack-server` | -| [`pokemon-player`](/user-guide/skills/bundled/gaming/gaming-pokemon-player) | Play Pokemon via headless emulator + RAM reads. | `gaming/pokemon-player` | +| [`minecraft-modpack-server`](/docs/user-guide/skills/bundled/gaming/gaming-minecraft-modpack-server) | Host modded Minecraft servers (CurseForge, Modrinth). | `gaming/minecraft-modpack-server` | +| [`pokemon-player`](/docs/user-guide/skills/bundled/gaming/gaming-pokemon-player) | Play Pokemon via headless emulator + RAM reads. | `gaming/pokemon-player` | ## github | Skill | Description | Path | |-------|-------------|------| -| [`codebase-inspection`](/user-guide/skills/bundled/github/github-codebase-inspection) | Inspect codebases w/ pygount: LOC, languages, ratios. | `github/codebase-inspection` | -| [`github-auth`](/user-guide/skills/bundled/github/github-github-auth) | GitHub auth setup: HTTPS tokens, SSH keys, gh CLI login. | `github/github-auth` | -| [`github-code-review`](/user-guide/skills/bundled/github/github-github-code-review) | Review PRs: diffs, inline comments via gh or REST. | `github/github-code-review` | -| [`github-issues`](/user-guide/skills/bundled/github/github-github-issues) | Create, triage, label, assign GitHub issues via gh or REST. | `github/github-issues` | -| [`github-pr-workflow`](/user-guide/skills/bundled/github/github-github-pr-workflow) | GitHub PR lifecycle: branch, commit, open, CI, merge. | `github/github-pr-workflow` | -| [`github-repo-management`](/user-guide/skills/bundled/github/github-github-repo-management) | Clone/create/fork repos; manage remotes, releases. | `github/github-repo-management` | +| [`codebase-inspection`](/docs/user-guide/skills/bundled/github/github-codebase-inspection) | Inspect codebases w/ pygount: LOC, languages, ratios. | `github/codebase-inspection` | +| [`github-auth`](/docs/user-guide/skills/bundled/github/github-github-auth) | GitHub auth setup: HTTPS tokens, SSH keys, gh CLI login. | `github/github-auth` | +| [`github-code-review`](/docs/user-guide/skills/bundled/github/github-github-code-review) | Review PRs: diffs, inline comments via gh or REST. | `github/github-code-review` | +| [`github-issues`](/docs/user-guide/skills/bundled/github/github-github-issues) | Create, triage, label, assign GitHub issues via gh or REST. | `github/github-issues` | +| [`github-pr-workflow`](/docs/user-guide/skills/bundled/github/github-github-pr-workflow) | GitHub PR lifecycle: branch, commit, open, CI, merge. | `github/github-pr-workflow` | +| [`github-repo-management`](/docs/user-guide/skills/bundled/github/github-github-repo-management) | Clone/create/fork repos; manage remotes, releases. | `github/github-repo-management` | ## mcp | Skill | Description | Path | |-------|-------------|------| -| [`native-mcp`](/user-guide/skills/bundled/mcp/mcp-native-mcp) | MCP client: connect servers, register tools (stdio/HTTP). | `mcp/native-mcp` | +| [`native-mcp`](/docs/user-guide/skills/bundled/mcp/mcp-native-mcp) | MCP client: connect servers, register tools (stdio/HTTP). | `mcp/native-mcp` | ## media | Skill | Description | Path | |-------|-------------|------| -| [`gif-search`](/user-guide/skills/bundled/media/media-gif-search) | Search/download GIFs from Tenor via curl + jq. | `media/gif-search` | -| [`heartmula`](/user-guide/skills/bundled/media/media-heartmula) | HeartMuLa: Suno-like song generation from lyrics + tags. | `media/heartmula` | -| [`songsee`](/user-guide/skills/bundled/media/media-songsee) | Audio spectrograms/features (mel, chroma, MFCC) via CLI. | `media/songsee` | -| [`spotify`](/user-guide/skills/bundled/media/media-spotify) | Spotify: play, search, queue, manage playlists and devices. | `media/spotify` | -| [`youtube-content`](/user-guide/skills/bundled/media/media-youtube-content) | YouTube transcripts to summaries, threads, blogs. | `media/youtube-content` | +| [`gif-search`](/docs/user-guide/skills/bundled/media/media-gif-search) | Search/download GIFs from Tenor via curl + jq. | `media/gif-search` | +| [`heartmula`](/docs/user-guide/skills/bundled/media/media-heartmula) | HeartMuLa: Suno-like song generation from lyrics + tags. | `media/heartmula` | +| [`songsee`](/docs/user-guide/skills/bundled/media/media-songsee) | Audio spectrograms/features (mel, chroma, MFCC) via CLI. | `media/songsee` | +| [`spotify`](/docs/user-guide/skills/bundled/media/media-spotify) | Spotify: play, search, queue, manage playlists and devices. | `media/spotify` | +| [`youtube-content`](/docs/user-guide/skills/bundled/media/media-youtube-content) | YouTube transcripts to summaries, threads, blogs. | `media/youtube-content` | ## mlops | Skill | Description | Path | |-------|-------------|------| -| [`audiocraft-audio-generation`](/user-guide/skills/bundled/mlops/mlops-models-audiocraft) | AudioCraft: MusicGen text-to-music, AudioGen text-to-sound. | `mlops/models/audiocraft` | -| [`dspy`](/user-guide/skills/bundled/mlops/mlops-research-dspy) | DSPy: declarative LM programs, auto-optimize prompts, RAG. | `mlops/research/dspy` | -| [`huggingface-hub`](/user-guide/skills/bundled/mlops/mlops-huggingface-hub) | HuggingFace hf CLI: search/download/upload models, datasets. | `mlops/huggingface-hub` | -| [`llama-cpp`](/user-guide/skills/bundled/mlops/mlops-inference-llama-cpp) | llama.cpp local GGUF inference + HF Hub model discovery. | `mlops/inference/llama-cpp` | -| [`evaluating-llms-harness`](/user-guide/skills/bundled/mlops/mlops-evaluation-lm-evaluation-harness) | lm-eval-harness: benchmark LLMs (MMLU, GSM8K, etc.). | `mlops/evaluation/lm-evaluation-harness` | -| [`obliteratus`](/user-guide/skills/bundled/mlops/mlops-inference-obliteratus) | OBLITERATUS: abliterate LLM refusals (diff-in-means). | `mlops/inference/obliteratus` | -| [`segment-anything-model`](/user-guide/skills/bundled/mlops/mlops-models-segment-anything) | SAM: zero-shot image segmentation via points, boxes, masks. | `mlops/models/segment-anything` | -| [`serving-llms-vllm`](/user-guide/skills/bundled/mlops/mlops-inference-vllm) | vLLM: high-throughput LLM serving, OpenAI API, quantization. | `mlops/inference/vllm` | -| [`weights-and-biases`](/user-guide/skills/bundled/mlops/mlops-evaluation-weights-and-biases) | W&B: log ML experiments, sweeps, model registry, dashboards. | `mlops/evaluation/weights-and-biases` | +| [`audiocraft-audio-generation`](/docs/user-guide/skills/bundled/mlops/mlops-models-audiocraft) | AudioCraft: MusicGen text-to-music, AudioGen text-to-sound. | `mlops/models/audiocraft` | +| [`dspy`](/docs/user-guide/skills/bundled/mlops/mlops-research-dspy) | DSPy: declarative LM programs, auto-optimize prompts, RAG. | `mlops/research/dspy` | +| [`huggingface-hub`](/docs/user-guide/skills/bundled/mlops/mlops-huggingface-hub) | HuggingFace hf CLI: search/download/upload models, datasets. | `mlops/huggingface-hub` | +| [`llama-cpp`](/docs/user-guide/skills/bundled/mlops/mlops-inference-llama-cpp) | llama.cpp local GGUF inference + HF Hub model discovery. | `mlops/inference/llama-cpp` | +| [`evaluating-llms-harness`](/docs/user-guide/skills/bundled/mlops/mlops-evaluation-lm-evaluation-harness) | lm-eval-harness: benchmark LLMs (MMLU, GSM8K, etc.). | `mlops/evaluation/lm-evaluation-harness` | +| [`obliteratus`](/docs/user-guide/skills/bundled/mlops/mlops-inference-obliteratus) | OBLITERATUS: abliterate LLM refusals (diff-in-means). | `mlops/inference/obliteratus` | +| [`segment-anything-model`](/docs/user-guide/skills/bundled/mlops/mlops-models-segment-anything) | SAM: zero-shot image segmentation via points, boxes, masks. | `mlops/models/segment-anything` | +| [`serving-llms-vllm`](/docs/user-guide/skills/bundled/mlops/mlops-inference-vllm) | vLLM: high-throughput LLM serving, OpenAI API, quantization. | `mlops/inference/vllm` | +| [`weights-and-biases`](/docs/user-guide/skills/bundled/mlops/mlops-evaluation-weights-and-biases) | W&B: log ML experiments, sweeps, model registry, dashboards. | `mlops/evaluation/weights-and-biases` | ## note-taking | Skill | Description | Path | |-------|-------------|------| -| [`obsidian`](/user-guide/skills/bundled/note-taking/note-taking-obsidian) | Read, search, create, and edit notes in the Obsidian vault. | `note-taking/obsidian` | +| [`obsidian`](/docs/user-guide/skills/bundled/note-taking/note-taking-obsidian) | Read, search, create, and edit notes in the Obsidian vault. | `note-taking/obsidian` | ## productivity | Skill | Description | Path | |-------|-------------|------| -| [`airtable`](/user-guide/skills/bundled/productivity/productivity-airtable) | Airtable REST API via curl. Records CRUD, filters, upserts. | `productivity/airtable` | -| [`google-workspace`](/user-guide/skills/bundled/productivity/productivity-google-workspace) | Gmail, Calendar, Drive, Docs, Sheets via gws CLI or Python. | `productivity/google-workspace` | -| [`linear`](/user-guide/skills/bundled/productivity/productivity-linear) | Linear: manage issues, projects, teams via GraphQL + curl. | `productivity/linear` | -| [`maps`](/user-guide/skills/bundled/productivity/productivity-maps) | Geocode, POIs, routes, timezones via OpenStreetMap/OSRM. | `productivity/maps` | -| [`nano-pdf`](/user-guide/skills/bundled/productivity/productivity-nano-pdf) | Edit PDF text/typos/titles via nano-pdf CLI (NL prompts). | `productivity/nano-pdf` | -| [`notion`](/user-guide/skills/bundled/productivity/productivity-notion) | Notion API + ntn CLI: pages, databases, markdown, Workers. | `productivity/notion` | -| [`ocr-and-documents`](/user-guide/skills/bundled/productivity/productivity-ocr-and-documents) | Extract text from PDFs/scans (pymupdf, marker-pdf). | `productivity/ocr-and-documents` | -| [`powerpoint`](/user-guide/skills/bundled/productivity/productivity-powerpoint) | Create, read, edit .pptx decks, slides, notes, templates. | `productivity/powerpoint` | -| [`teams-meeting-pipeline`](/user-guide/skills/bundled/productivity/productivity-teams-meeting-pipeline) | Operate the Teams meeting summary pipeline via Hermes CLI — summarize meetings, inspect pipeline status, replay jobs, manage Microsoft Graph subscriptions. | `productivity/teams-meeting-pipeline` | +| [`airtable`](/docs/user-guide/skills/bundled/productivity/productivity-airtable) | Airtable REST API via curl. Records CRUD, filters, upserts. | `productivity/airtable` | +| [`google-workspace`](/docs/user-guide/skills/bundled/productivity/productivity-google-workspace) | Gmail, Calendar, Drive, Docs, Sheets via gws CLI or Python. | `productivity/google-workspace` | +| [`linear`](/docs/user-guide/skills/bundled/productivity/productivity-linear) | Linear: manage issues, projects, teams via GraphQL + curl. | `productivity/linear` | +| [`maps`](/docs/user-guide/skills/bundled/productivity/productivity-maps) | Geocode, POIs, routes, timezones via OpenStreetMap/OSRM. | `productivity/maps` | +| [`nano-pdf`](/docs/user-guide/skills/bundled/productivity/productivity-nano-pdf) | Edit PDF text/typos/titles via nano-pdf CLI (NL prompts). | `productivity/nano-pdf` | +| [`notion`](/docs/user-guide/skills/bundled/productivity/productivity-notion) | Notion API + ntn CLI: pages, databases, markdown, Workers. | `productivity/notion` | +| [`ocr-and-documents`](/docs/user-guide/skills/bundled/productivity/productivity-ocr-and-documents) | Extract text from PDFs/scans (pymupdf, marker-pdf). | `productivity/ocr-and-documents` | +| [`powerpoint`](/docs/user-guide/skills/bundled/productivity/productivity-powerpoint) | Create, read, edit .pptx decks, slides, notes, templates. | `productivity/powerpoint` | +| [`teams-meeting-pipeline`](/docs/user-guide/skills/bundled/productivity/productivity-teams-meeting-pipeline) | Operate the Teams meeting summary pipeline via Hermes CLI — summarize meetings, inspect pipeline status, replay jobs, manage Microsoft Graph subscriptions. | `productivity/teams-meeting-pipeline` | ## red-teaming | Skill | Description | Path | |-------|-------------|------| -| [`godmode`](/user-guide/skills/bundled/red-teaming/red-teaming-godmode) | Jailbreak LLMs: Parseltongue, GODMODE, ULTRAPLINIAN. | `red-teaming/godmode` | +| [`godmode`](/docs/user-guide/skills/bundled/red-teaming/red-teaming-godmode) | Jailbreak LLMs: Parseltongue, GODMODE, ULTRAPLINIAN. | `red-teaming/godmode` | ## research | Skill | Description | Path | |-------|-------------|------| -| [`arxiv`](/user-guide/skills/bundled/research/research-arxiv) | Search arXiv papers by keyword, author, category, or ID. | `research/arxiv` | -| [`blogwatcher`](/user-guide/skills/bundled/research/research-blogwatcher) | Monitor blogs and RSS/Atom feeds via blogwatcher-cli tool. | `research/blogwatcher` | -| [`llm-wiki`](/user-guide/skills/bundled/research/research-llm-wiki) | Karpathy's LLM Wiki: build/query interlinked markdown KB. | `research/llm-wiki` | -| [`polymarket`](/user-guide/skills/bundled/research/research-polymarket) | Query Polymarket: markets, prices, orderbooks, history. | `research/polymarket` | -| [`research-paper-writing`](/user-guide/skills/bundled/research/research-research-paper-writing) | Write ML papers for NeurIPS/ICML/ICLR: design→submit. | `research/research-paper-writing` | +| [`arxiv`](/docs/user-guide/skills/bundled/research/research-arxiv) | Search arXiv papers by keyword, author, category, or ID. | `research/arxiv` | +| [`blogwatcher`](/docs/user-guide/skills/bundled/research/research-blogwatcher) | Monitor blogs and RSS/Atom feeds via blogwatcher-cli tool. | `research/blogwatcher` | +| [`llm-wiki`](/docs/user-guide/skills/bundled/research/research-llm-wiki) | Karpathy's LLM Wiki: build/query interlinked markdown KB. | `research/llm-wiki` | +| [`polymarket`](/docs/user-guide/skills/bundled/research/research-polymarket) | Query Polymarket: markets, prices, orderbooks, history. | `research/polymarket` | +| [`research-paper-writing`](/docs/user-guide/skills/bundled/research/research-research-paper-writing) | Write ML papers for NeurIPS/ICML/ICLR: design→submit. | `research/research-paper-writing` | ## smart-home | Skill | Description | Path | |-------|-------------|------| -| [`openhue`](/user-guide/skills/bundled/smart-home/smart-home-openhue) | Control Philips Hue lights, scenes, rooms via OpenHue CLI. | `smart-home/openhue` | +| [`openhue`](/docs/user-guide/skills/bundled/smart-home/smart-home-openhue) | Control Philips Hue lights, scenes, rooms via OpenHue CLI. | `smart-home/openhue` | ## social-media | Skill | Description | Path | |-------|-------------|------| -| [`xurl`](/user-guide/skills/bundled/social-media/social-media-xurl) | X/Twitter via xurl CLI: post, search, DM, media, v2 API. | `social-media/xurl` | +| [`xurl`](/docs/user-guide/skills/bundled/social-media/social-media-xurl) | X/Twitter via xurl CLI: post, search, DM, media, v2 API. | `social-media/xurl` | ## software-development | Skill | Description | Path | |-------|-------------|------| -| [`debugging-hermes-tui-commands`](/user-guide/skills/bundled/software-development/software-development-debugging-hermes-tui-commands) | Debug Hermes TUI slash commands: Python, gateway, Ink UI. | `software-development/debugging-hermes-tui-commands` | -| [`hermes-agent-skill-authoring`](/user-guide/skills/bundled/software-development/software-development-hermes-agent-skill-authoring) | Author in-repo SKILL.md: frontmatter, validator, structure. | `software-development/hermes-agent-skill-authoring` | -| [`node-inspect-debugger`](/user-guide/skills/bundled/software-development/software-development-node-inspect-debugger) | Debug Node.js via --inspect + Chrome DevTools Protocol CLI. | `software-development/node-inspect-debugger` | -| [`plan`](/user-guide/skills/bundled/software-development/software-development-plan) | Plan mode: write markdown plan to .hermes/plans/, no exec. | `software-development/plan` | -| [`python-debugpy`](/user-guide/skills/bundled/software-development/software-development-python-debugpy) | Debug Python: pdb REPL + debugpy remote (DAP). | `software-development/python-debugpy` | -| [`requesting-code-review`](/user-guide/skills/bundled/software-development/software-development-requesting-code-review) | Pre-commit review: security scan, quality gates, auto-fix. | `software-development/requesting-code-review` | -| [`spike`](/user-guide/skills/bundled/software-development/software-development-spike) | Throwaway experiments to validate an idea before build. | `software-development/spike` | -| [`subagent-driven-development`](/user-guide/skills/bundled/software-development/software-development-subagent-driven-development) | Execute plans via delegate_task subagents (2-stage review). | `software-development/subagent-driven-development` | -| [`systematic-debugging`](/user-guide/skills/bundled/software-development/software-development-systematic-debugging) | 4-phase root cause debugging: understand bugs before fixing. | `software-development/systematic-debugging` | -| [`test-driven-development`](/user-guide/skills/bundled/software-development/software-development-test-driven-development) | TDD: enforce RED-GREEN-REFACTOR, tests before code. | `software-development/test-driven-development` | -| [`writing-plans`](/user-guide/skills/bundled/software-development/software-development-writing-plans) | Write implementation plans: bite-sized tasks, paths, code. | `software-development/writing-plans` | +| [`debugging-hermes-tui-commands`](/docs/user-guide/skills/bundled/software-development/software-development-debugging-hermes-tui-commands) | Debug Hermes TUI slash commands: Python, gateway, Ink UI. | `software-development/debugging-hermes-tui-commands` | +| [`hermes-agent-skill-authoring`](/docs/user-guide/skills/bundled/software-development/software-development-hermes-agent-skill-authoring) | Author in-repo SKILL.md: frontmatter, validator, structure. | `software-development/hermes-agent-skill-authoring` | +| [`hermes-s6-container-supervision`](/docs/user-guide/skills/bundled/software-development/software-development-hermes-s6-container-supervision) | Modify, debug, or extend the s6-overlay supervision tree inside the Hermes Agent Docker image — adding new services, debugging profile gateways, understanding the Architecture B main-program pattern. | `software-development/hermes-s6-container-supervision` | +| [`node-inspect-debugger`](/docs/user-guide/skills/bundled/software-development/software-development-node-inspect-debugger) | Debug Node.js via --inspect + Chrome DevTools Protocol CLI. | `software-development/node-inspect-debugger` | +| [`plan`](/docs/user-guide/skills/bundled/software-development/software-development-plan) | Plan mode: write markdown plan to .hermes/plans/, no exec. | `software-development/plan` | +| [`python-debugpy`](/docs/user-guide/skills/bundled/software-development/software-development-python-debugpy) | Debug Python: pdb REPL + debugpy remote (DAP). | `software-development/python-debugpy` | +| [`requesting-code-review`](/docs/user-guide/skills/bundled/software-development/software-development-requesting-code-review) | Pre-commit review: security scan, quality gates, auto-fix. | `software-development/requesting-code-review` | +| [`spike`](/docs/user-guide/skills/bundled/software-development/software-development-spike) | Throwaway experiments to validate an idea before build. | `software-development/spike` | +| [`subagent-driven-development`](/docs/user-guide/skills/bundled/software-development/software-development-subagent-driven-development) | Execute plans via delegate_task subagents (2-stage review). | `software-development/subagent-driven-development` | +| [`systematic-debugging`](/docs/user-guide/skills/bundled/software-development/software-development-systematic-debugging) | 4-phase root cause debugging: understand bugs before fixing. | `software-development/systematic-debugging` | +| [`test-driven-development`](/docs/user-guide/skills/bundled/software-development/software-development-test-driven-development) | TDD: enforce RED-GREEN-REFACTOR, tests before code. | `software-development/test-driven-development` | +| [`writing-plans`](/docs/user-guide/skills/bundled/software-development/software-development-writing-plans) | Write implementation plans: bite-sized tasks, paths, code. | `software-development/writing-plans` | ## yuanbao | Skill | Description | Path | |-------|-------------|------| -| [`yuanbao`](/user-guide/skills/bundled/yuanbao/yuanbao-yuanbao) | Yuanbao (元宝) groups: @mention users, query info/members. | `yuanbao` | +| [`yuanbao`](/docs/user-guide/skills/bundled/yuanbao/yuanbao-yuanbao) | Yuanbao (元宝) groups: @mention users, query info/members. | `yuanbao` | diff --git a/website/docs/reference/slash-commands.md b/website/docs/reference/slash-commands.md index 7bb00442be5..776d53089e8 100644 --- a/website/docs/reference/slash-commands.md +++ b/website/docs/reference/slash-commands.md @@ -87,6 +87,7 @@ Type `/` in the CLI to open the autocomplete menu. Built-in commands are case-in | `/toolsets` | List available toolsets | | `/browser [connect\|disconnect\|status]` | Manage a local Chromium-family CDP connection. `connect` attaches browser tools to a running Chrome, Brave, Chromium, or Edge instance (default: `http://127.0.0.1:9222`). `disconnect` detaches. `status` shows current connection. Auto-launches a supported Chromium-family browser if no debugger is detected. | | `/skills` | Search, install, inspect, or manage skills from online registries | +| `/bundles` | List configured skill bundles — `/` slash aliases that preload several skills at once. Configure under `bundles:` in `~/.hermes/config.yaml`. See [Skill Bundles](/user-guide/features/skills#skill-bundles). | | `/cron` | Manage scheduled tasks (list, add/create, edit, pause, resume, run, remove) | | `/curator` | Background skill maintenance — `status`, `run`, `pin`, `archive`. See [Curator](/user-guide/features/curator). | | `/kanban ` | Drive the multi-profile, multi-project collaboration board without leaving chat. Full `hermes kanban` surface is available: `/kanban list`, `/kanban show t_abc`, `/kanban create "title" --assignee X`, `/kanban comment t_abc "text"`, `/kanban unblock t_abc`, `/kanban dispatch`, etc. Multi-board support included: `/kanban boards list`, `/kanban boards create `, `/kanban boards switch `, `/kanban --board `. See [Kanban slash command](/user-guide/features/kanban#kanban-slash-command). | @@ -193,6 +194,7 @@ The messaging gateway supports the following built-in commands inside Telegram, | Command | Description | |---------|-------------| +| `/start` | Platform-protocol command. Many chat platforms (Telegram, Discord, …) send `/start` automatically the first time a user opens a bot conversation. Hermes acknowledges the ping silently — no agent reply, no session burn — so first-contact handshakes don't waste a turn. You can also send it explicitly to confirm the gateway is reachable. | | `/new` | Start a new conversation. | | `/reset` | Reset conversation history. | | `/status` | Show session info, followed by a local **Session recap** block (recent turn counts, top tools used, files touched, latest prompt + reply). | diff --git a/website/docs/reference/tools-reference.md b/website/docs/reference/tools-reference.md index 184680520ab..bc0f62043f2 100644 --- a/website/docs/reference/tools-reference.md +++ b/website/docs/reference/tools-reference.md @@ -8,7 +8,7 @@ description: "Authoritative reference for Hermes built-in tools, grouped by tool This page documents Hermes' built-in tools, grouped by toolset. Availability varies by platform, credentials, and enabled toolsets. -**Quick counts (current registry):** ~70 tools — 10 browser tools (core) + 2 CDP-gated browser tools, 4 file tools, 10 RL tools, 4 Home Assistant tools, 2 terminal tools, 2 web tools, 5 Feishu tools, 7 Spotify tools (registered by the bundled `spotify` plugin), 5 Yuanbao tools, 7 kanban tools (registered when the kanban dispatcher spawns the agent), 2 Discord tools, and a handful of standalone tools (`memory`, `clarify`, `delegate_task`, `execute_code`, `cronjob`, `session_search`, `skill_view`/`skill_manage`/`skills_list`, `text_to_speech`, `image_generate`, `video_generate`, `vision_analyze`, `video_analyze`, `mixture_of_agents`, `send_message`, `todo`, `computer_use`, `process`). +**Quick counts (current registry):** ~64 tools — 10 browser tools (core) + 2 CDP-gated browser tools, 4 file tools, 4 Home Assistant tools, 2 terminal tools, 2 web tools, 5 Feishu tools, 7 Spotify tools (registered by the bundled `spotify` plugin), 5 Yuanbao tools, 9 kanban tools (registered when the kanban dispatcher spawns the agent), 2 Discord tools, and a handful of standalone tools (`memory`, `clarify`, `delegate_task`, `execute_code`, `cronjob`, `session_search`, `skill_view`/`skill_manage`/`skills_list`, `text_to_speech`, `image_generate`, `video_generate`, `vision_analyze`, `video_analyze`, `mixture_of_agents`, `send_message`, `todo`, `computer_use`, `process`). :::tip MCP Tools In addition to built-in tools, Hermes can load tools dynamically from MCP servers. MCP tools appear with the prefix `mcp__` (e.g., `mcp_github_create_issue` for the `github` MCP server). See [MCP Integration](/user-guide/features/mcp) for configuration. diff --git a/website/docs/user-guide/cli.md b/website/docs/user-guide/cli.md index 2a768eb12e2..a81baab7d03 100644 --- a/website/docs/user-guide/cli.md +++ b/website/docs/user-guide/cli.md @@ -8,6 +8,10 @@ description: "Master the Hermes Agent terminal interface — commands, keybindin Hermes Agent's CLI is a full terminal user interface (TUI) — not a web UI. It features multiline editing, slash-command autocomplete, conversation history, interrupt-and-redirect, and streaming tool output. Built for people who live in the terminal. +:::tip First-time setup +One command — `hermes setup --portal` — and you're ready to `hermes chat`. See [Nous Portal](/integrations/nous-portal). +::: + :::tip Hermes also ships a modern TUI with modal overlays, mouse selection, and non-blocking input. Launch it with `hermes --tui` — see the [TUI](tui.md) guide. ::: diff --git a/website/docs/user-guide/configuration.md b/website/docs/user-guide/configuration.md index 39d8232f532..96205b922f8 100644 --- a/website/docs/user-guide/configuration.md +++ b/website/docs/user-guide/configuration.md @@ -8,6 +8,10 @@ description: "Configure Hermes Agent — config.yaml, providers, models, API key All settings are stored in the `~/.hermes/` directory for easy access. +:::tip Easiest path to a working `config.yaml` +Run `hermes setup --portal` — one OAuth gets you a model provider and all four Tool Gateway tools without hand-editing YAML. Portal subscribers also get 10% off token-billed providers. See [Nous Portal](/integrations/nous-portal). +::: + ## Directory Structure ```text @@ -566,6 +570,7 @@ compression: threshold: 0.50 # Compress at this % of context limit target_ratio: 0.20 # Fraction of threshold to preserve as recent tail protect_last_n: 20 # Min recent messages to keep uncompressed + protect_first_n: 3 # Non-system head messages pinned across compactions (0 = pin nothing) hygiene_hard_message_limit: 400 # Gateway safety valve — see below # The summarization model/provider is configured under auxiliary: @@ -582,6 +587,8 @@ Older configs with `compression.summary_model`, `compression.summary_provider`, `hygiene_hard_message_limit` is a gateway-only **pre-compression safety valve**. Runaway sessions with thousands of messages can hit model context limits before the normal percent-of-context threshold fires; when message count crosses this ceiling, Hermes forces compression regardless of token usage. Default `400` — raise it for platforms where very long sessions are normal, lower it to force more aggressive compression. Editing this value on a running gateway takes effect on the next message (see below). +`protect_first_n` controls how many **non-system** head messages are pinned across every compaction. Default `3` — the opening user/assistant exchange survives every summarizer pass so the original goal stays visible. On long-running rolling-compaction sessions where the opening turn is no longer relevant, set `protect_first_n: 0` to pin nothing but the system prompt + summary + tail. The system prompt itself is always preserved regardless of this setting. + :::tip Gateway hot-reload of compression and context length As of recent releases, editing `model.context_length` or any `compression.*` key in `config.yaml` on a running gateway takes effect on the next message — no gateway restart, no `/reset`, no session rotation required. The cached-agent signature includes these keys, so the gateway transparently rebuilds the agent when it sees a change. API keys and tool/skill config still require the usual reload paths. ::: @@ -866,7 +873,7 @@ Each auxiliary task has a configurable `timeout` (in seconds). Defaults: vision ::: :::info -Context compression has its own `compression:` block for thresholds and an `auxiliary.compression:` block for model/provider settings — see [Context Compression](#context-compression) above. The fallback model uses a `fallback_model:` block — see [Fallback Model](/integrations/providers#fallback-model). All three follow the same provider/model/base_url pattern. +Context compression has its own `compression:` block for thresholds and an `auxiliary.compression:` block for model/provider settings — see [Context Compression](#context-compression) above. The fallback model uses a `fallback_model:` block — see [Fallback Model](/integrations/providers#fallback-providers). All three follow the same provider/model/base_url pattern. ::: ### OpenRouter routing & Pareto Code for auxiliary tasks diff --git a/website/docs/user-guide/configuring-models.md b/website/docs/user-guide/configuring-models.md index 52816095f91..f1ef2aa6f13 100644 --- a/website/docs/user-guide/configuring-models.md +++ b/website/docs/user-guide/configuring-models.md @@ -13,6 +13,12 @@ This page covers configuring both from the dashboard. If you prefer config files :::tip Fastest path: Nous Portal [Nous Portal](/user-guide/features/tool-gateway) provides 300+ models under one subscription. On a fresh install, run `hermes setup --portal` to log in and set Nous as your provider in one command. Inspect what's wired up with `hermes portal status`. + +- Portal subscribers also get **10% off token-billed providers**. +::: + +:::note `model:` schema — empty string vs. mapping +On a brand-new install the bundled default config has `model: ""` (an empty string sentinel meaning "not configured yet"). The first time you run `hermes setup` or `hermes model`, that key is upgraded in-place to a mapping with `provider`, `default`, `base_url`, and `api_mode` sub-keys — the shape shown throughout this page and in [`profiles.md`](./profiles.md) / [`configuration.md`](./configuration.md). If you ever see an empty string in `config.yaml`, run `hermes model` (or click **Change** in the dashboard) and Hermes will write the dict form for you. ::: ## The Models page @@ -166,7 +172,9 @@ Inside any `hermes chat` session: ### Custom aliases -Define your own short names for models you reach for often, then use `/model ` in the CLI or any messaging platform: +Define your own short names for models you reach for often, then use `/model ` in the CLI or any messaging platform. There are two equivalent formats — pick whichever fits your workflow. + +**Canonical (top-level `model_aliases:`)** — full control over provider + base_url: ```yaml # ~/.hermes/config.yaml @@ -179,13 +187,15 @@ model_aliases: provider: x-ai ``` -Or from the shell (short form, `provider/model`): +**Short string form (`model.aliases.: provider/model`)** — convenient from the shell because `hermes config set` only writes scalar values, but it can't carry a custom `base_url`: ```bash hermes config set model.aliases.fav anthropic/claude-opus-4.6 hermes config set model.aliases.grok x-ai/grok-4 ``` +Both paths feed the same loader (`hermes_cli/model_switch.py`). Entries declared in `model_aliases:` take precedence over `model.aliases:` entries with the same name. + Then `/model fav` or `/model grok` in chat. User aliases shadow built-in short names (`sonnet`, `kimi`, `opus`, etc.). See [Custom model aliases](/reference/slash-commands#custom-model-aliases) for the full reference. ### `hermes model` subcommand diff --git a/website/docs/user-guide/docker.md b/website/docs/user-guide/docker.md index c81cadbf588..bb049fac8d3 100644 --- a/website/docs/user-guide/docker.md +++ b/website/docs/user-guide/docker.md @@ -26,6 +26,10 @@ docker run -it --rm \ This drops you into the setup wizard, which will prompt you for your API keys and write them to `~/.hermes/.env`. You only need to do this once. It is highly recommended to set up a chat system for the gateway to work with at this point. +:::tip +Inside the container, run `hermes setup --portal` once — the refresh token persists in the mounted `~/.hermes` volume. See [Nous Portal](/integrations/nous-portal). +::: + ## Running in gateway mode Once configured, run the container in the background as a persistent gateway (Telegram, Discord, Slack, WhatsApp, etc.): diff --git a/website/docs/user-guide/features/api-server.md b/website/docs/user-guide/features/api-server.md index 7cc28f56a4a..b059e40dff0 100644 --- a/website/docs/user-guide/features/api-server.md +++ b/website/docs/user-guide/features/api-server.md @@ -308,6 +308,66 @@ Resume a previously paused job. Trigger the job to run immediately, out of schedule. +## Sessions API (session control over REST) + +External UIs can manage Hermes sessions over REST without standing up the dashboard. All endpoints are gated by `API_SERVER_KEY` and live under `/api/sessions/*`. + +| Method | Path | Description | +|--------|------|-------------| +| `GET` | `/api/sessions` | List sessions (paginated — `limit`, `offset`, `source`, `include_children`) | +| `POST` | `/api/sessions` | Create an empty session | +| `GET` | `/api/sessions/{id}` | Read session metadata | +| `PATCH` | `/api/sessions/{id}` | Update title or `end_reason` | +| `DELETE` | `/api/sessions/{id}` | Delete a session | +| `GET` | `/api/sessions/{id}/messages` | Message history for a session | +| `POST` | `/api/sessions/{id}/fork` | Branch the session via `SessionDB` lineage (matches CLI `/branch` semantics) | +| `POST` | `/api/sessions/{id}/chat` | Run one synchronous agent turn | +| `POST` | `/api/sessions/{id}/chat/stream` | SSE wrapper over a single turn — emits `assistant.delta`, `tool.started`, `tool.completed`, `run.completed` events | + +`/v1/capabilities` advertises the full surface via `session_*` feature flags and `endpoints.session_*` entries so external UIs can detect support and fall back safely. Inline images are supported in `chat` and `chat/stream` payloads (multimodal-aware path). + +```bash +# fork a session and run one turn +curl -X POST http://localhost:8642/api/sessions/$ID/fork \ + -H "Authorization: Bearer $API_SERVER_KEY" \ + -d '{"title": "explore alt path"}' + +# stream a turn over SSE +curl -N -X POST http://localhost:8642/api/sessions/$ID/chat/stream \ + -H "Authorization: Bearer $API_SERVER_KEY" \ + -d '{"input": "what files changed in the last hour?"}' +``` + +## Skills and toolsets discovery + +`GET /v1/skills` and `GET /v1/toolsets` let external clients enumerate the agent's capabilities deterministically over REST instead of asking the model. Both are read-only and gated by `API_SERVER_KEY`. + +```bash +curl http://localhost:8642/v1/skills \ + -H "Authorization: Bearer $API_SERVER_KEY" +# → [{"name": "github-pr-workflow", "description": "...", "category": "..."}, ...] + +curl http://localhost:8642/v1/toolsets \ + -H "Authorization: Bearer $API_SERVER_KEY" +# → [{"name": "core", "label": "...", "description": "...", "enabled": true, +# "configured": true, "tools": ["read_file", "write_file", ...]}, ...] +``` + +`/v1/skills` returns the same metadata the skills hub uses internally. `/v1/toolsets` returns toolsets resolved for the `api_server` platform with the concrete `tools` list each one expands to. Both are advertised under `endpoints.*` in `/v1/capabilities`. + +## Long-term memory scoping (`X-Hermes-Session-Key`) + +Multi-user frontends like Open WebUI need a stable per-channel identifier for long-term memory (Honcho, etc.) that is **independent** of the transcript-scoped `X-Hermes-Session-Id` (which rotates on `/new`). Pass `X-Hermes-Session-Key` on `/v1/chat/completions`, `/v1/responses`, or `/v1/runs` and Hermes threads it through to `AIAgent(gateway_session_key=...)`, where the Honcho memory provider uses it to derive a stable scope. + +```http +POST /v1/chat/completions HTTP/1.1 +Authorization: Bearer *** +X-Hermes-Session-Id: transcript-alpha +X-Hermes-Session-Key: agent:main:webui:dm:user-42 +``` + +Rules: max 256 chars, control characters (`\r`, `\n`, `\x00`) are rejected, and the value is echoed back on responses (JSON + SSE). `/v1/capabilities` advertises support via `"session_key_header": "X-Hermes-Session-Key"`. Without the key, Honcho's `per-session` strategy produces a different scope per `session_id` — exactly the behavior Hermes had before. + ## System Prompt Handling When a frontend sends a `system` message (Chat Completions) or `instructions` field (Responses API), hermes-agent **layers it on top** of its core system prompt. Your agent keeps all its tools, memory, and skills — the frontend's system prompt adds extra instructions. diff --git a/website/docs/user-guide/features/codex-app-server-runtime.md b/website/docs/user-guide/features/codex-app-server-runtime.md index 928b6d2d66b..3a96f604cc3 100644 --- a/website/docs/user-guide/features/codex-app-server-runtime.md +++ b/website/docs/user-guide/features/codex-app-server-runtime.md @@ -9,6 +9,10 @@ Hermes can optionally hand `openai/*` and `openai-codex/*` turns to the [Codex C This is **opt-in only**. Default Hermes behavior is unchanged unless you flip the flag. Hermes never auto-routes you onto this runtime. +:::tip +Not using OpenAI Codex? `hermes setup --portal` configures a non-Codex backend with Claude/Gemini/etc. in one step. See [Nous Portal](/integrations/nous-portal). +::: + ## Why - Run OpenAI agent turns against your **ChatGPT subscription** (no API key required) using the same auth flow Codex CLI uses. diff --git a/website/docs/user-guide/features/credential-pools.md b/website/docs/user-guide/features/credential-pools.md index 508feee5b69..57bf3552b6a 100644 --- a/website/docs/user-guide/features/credential-pools.md +++ b/website/docs/user-guide/features/credential-pools.md @@ -11,6 +11,10 @@ Credential pools let you register multiple API keys or OAuth tokens for the same This is different from [fallback providers](./fallback-providers.md), which switch to a *different* provider entirely. Credential pools are same-provider rotation; fallback providers are cross-provider failover. Pools are tried first — if all pool keys are exhausted, *then* the fallback provider activates. +:::tip +Credential pools are mainly for API-key providers (OpenRouter, Anthropic). A single [Nous Portal](/integrations/nous-portal) OAuth covers 300+ models, so most users don't need a pool when on Portal. +::: + ## How It Works ``` diff --git a/website/docs/user-guide/features/cron.md b/website/docs/user-guide/features/cron.md index 8b82e56150a..53e03fe63e9 100644 --- a/website/docs/user-guide/features/cron.md +++ b/website/docs/user-guide/features/cron.md @@ -21,6 +21,10 @@ Cron jobs can: All of this is available to Hermes itself through the `cronjob` tool, so you can create, pause, edit, and remove jobs by asking in plain language — no CLI required. +:::tip +Cron jobs use whatever provider `hermes model` selected. `hermes setup --portal` is the lowest-friction option for unattended runs since OAuth refresh is automatic. See [Nous Portal](/integrations/nous-portal). +::: + :::warning Cron-run sessions cannot recursively create more cron jobs. Hermes disables cron management tools inside cron executions to prevent runaway scheduling loops. ::: @@ -204,10 +208,11 @@ Cron jobs now have a fuller lifecycle than just create/remove. ```bash hermes cron list -hermes cron pause -hermes cron resume -hermes cron run -hermes cron remove +hermes cron pause +hermes cron resume +hermes cron run +hermes cron remove +hermes cron edit [...flags] hermes cron status hermes cron tick ``` @@ -218,6 +223,9 @@ What they do: - `resume` — re-enable the job and compute the next future run - `run` — trigger the job on the next scheduler tick - `remove` — delete it entirely +- `edit` — modify schedule, prompt, profile, delivery, etc. + +**Name-based lookup.** All four mutating verbs (`pause`, `resume`, `run`, `remove`, `edit`) plus the agent's `cronjob` tool now accept a job **name** (case-insensitive) in place of the hex ID. The agent and CLI both prefer an exact ID match if one exists; ambiguous name matches (multiple jobs sharing the same name) are refused with the full list of candidate IDs so you can pick one explicitly. Names are not unique, so this guard is load-bearing — it prevents silently mutating the wrong job when two share a name. ## How it works diff --git a/website/docs/user-guide/features/deliverable-mode.md b/website/docs/user-guide/features/deliverable-mode.md index e08e3966fa6..65df8b535cd 100644 --- a/website/docs/user-guide/features/deliverable-mode.md +++ b/website/docs/user-guide/features/deliverable-mode.md @@ -63,8 +63,10 @@ personality entry that biases toward artifact-style replies on messaging platforms. **Project-level:** add the bias to `AGENTS.md` / `CLAUDE.md` / -`.cursorrules` in a project the agent works from, or to your global -custom instructions in `~/.hermes/config.yaml` under `agent.custom_instructions`. +`.cursorrules` in a project the agent works from, to your global +persona in `~/.hermes/SOUL.md`, or as a named preset under +`agent.personalities` in `~/.hermes/config.yaml` (switchable per session +via `/personality`). The mechanic the agent has to use is simple: render the file to an absolute path (e.g. `/tmp/q3-revenue.png`) and mention that path as diff --git a/website/docs/user-guide/features/extending-the-dashboard.md b/website/docs/user-guide/features/extending-the-dashboard.md index 9f4fd95e15e..0efbe8adb4c 100644 --- a/website/docs/user-guide/features/extending-the-dashboard.md +++ b/website/docs/user-guide/features/extending-the-dashboard.md @@ -17,7 +17,7 @@ All three are **drop-in at runtime**: no repo clone, no `npm run build`, no patc If you just want to use the dashboard, see [Web Dashboard](./web-dashboard). If you want to reskin the terminal CLI (not the web dashboard), see [Skins & Themes](./skins) — the CLI skin system is unrelated to dashboard themes. :::note How the pieces compose -Themes and plugins are independent but synergistic. A theme can stand alone (just a YAML file). A plugin can stand alone (just a tab). Together they let you build a complete visual reskin with custom HUDs — the bundled `strike-freedom-cockpit` demo does exactly that. See [Combined theme + plugin demo](#combined-theme--plugin-demo). +Themes and plugins are independent but synergistic. A theme can stand alone (just a YAML file). A plugin can stand alone (just a tab). Together they let you build a complete visual reskin with custom HUDs — the example `strike-freedom-cockpit` demo (lives in the `hermes-example-plugins` companion repo — see [Combined theme + plugin demo](#combined-theme--plugin-demo) for install steps) does exactly that. ::: --- diff --git a/website/docs/user-guide/features/image-generation.md b/website/docs/user-guide/features/image-generation.md index 73fa4b334fc..4f225ee00b1 100644 --- a/website/docs/user-guide/features/image-generation.md +++ b/website/docs/user-guide/features/image-generation.md @@ -1,13 +1,13 @@ --- title: Image Generation -description: Generate images via FAL.ai — 9 models including FLUX 2, GPT Image (1.5 & 2), Nano Banana Pro, Ideogram, Recraft V4 Pro, and more, selectable via `hermes tools`. +description: Generate images via FAL.ai — 11 models including FLUX 2, GPT Image (1.5 & 2), Nano Banana Pro, Ideogram, Recraft V4 Pro, Krea 2, and more, selectable via `hermes tools`. sidebar_label: Image Generation sidebar_position: 6 --- # Image Generation -Hermes Agent generates images from text prompts via FAL.ai. Nine models are supported out of the box, each with different speed, quality, and cost tradeoffs. The active model is user-configurable via `hermes tools` and persists in `config.yaml`. +Hermes Agent generates images from text prompts via FAL.ai. Eleven models are supported out of the box, each with different speed, quality, and cost tradeoffs. The active model is user-configurable via `hermes tools` and persists in `config.yaml`. ## Supported Models @@ -22,6 +22,8 @@ Hermes Agent generates images from text prompts via FAL.ai. Nine models are supp | `fal-ai/ideogram/v3` | ~5s | Best typography | $0.03–0.09/image | | `fal-ai/recraft/v4/pro/text-to-image` | ~8s | Design, brand systems, production-ready | $0.25/image | | `fal-ai/qwen-image` | ~12s | LLM-based, complex text | $0.02/MP | +| `fal-ai/krea/v2/medium/text-to-image` | ~15-25s | Illustration, anime, painting, expressive/artistic styles | $0.030–0.035/image | +| `fal-ai/krea/v2/large/text-to-image` | ~25-60s | Photorealism, raw textured looks (motion blur, grain, film) | $0.060–0.065/image | Prices are FAL's pricing at time of writing; check [fal.ai](https://fal.ai/) for current numbers. diff --git a/website/docs/user-guide/features/kanban.md b/website/docs/user-guide/features/kanban.md index 7a51957828d..ede083b0590 100644 --- a/website/docs/user-guide/features/kanban.md +++ b/website/docs/user-guide/features/kanban.md @@ -604,7 +604,10 @@ hermes kanban create "" [--body ...] [--assignee <profile>] [--max-retries N] [--skill <name>]... [--json] -hermes kanban list [--mine] [--assignee P] [--status S] [--tenant T] [--archived] [--json] +hermes kanban list [--mine] [--assignee P] [--status S] [--tenant T] [--archived] + [--workflow-template-id <id>] [--current-step-key <key>] + [--sort created|created-desc|priority|priority-desc|status|assignee|title|updated] + [--json] hermes kanban show <id> [--json] hermes kanban assign <id> <profile> # or 'none' to unassign hermes kanban link <parent_id> <child_id> @@ -646,6 +649,62 @@ All commands are also available as a slash command in the interactive CLI and in `--max-retries` is a per-task circuit-breaker override for the dispatcher. `--max-retries 1` blocks the task on the first non-successful attempt, while `--max-retries 3` allows two retries and blocks on the third failure. Omit it to use `kanban.failure_limit` from `config.yaml`, then the built-in default. +### Concurrency, scheduling, and child promotion config + +| Config key | Default | What it does | +|------------|---------|--------------| +| `kanban.max_in_progress` | unset (unlimited) | Caps the number of simultaneously running tasks. When the board already has N running, the dispatcher skips spawning more — useful for slow workers (local LLMs, resource-constrained hosts) so they finish what they have before more pile up and time out. Invalid or below-1 values log a warning and behave as unlimited. | +| `kanban.auto_promote_children` | `true` | After `decompose_triage_task()` produces children with no parent-blocker dependencies, they're automatically promoted to `ready` so the dispatcher can pick them up. Set to `false` to require manual review — children stay in `todo` until you promote them. | +| `kanban.default_workdir` | unset | Board-level default working directory applied to new tasks when neither `--workspace` nor the task itself overrides it. Per-task `workspace:` still wins. | + +```yaml +kanban: + max_in_progress: 2 + auto_promote_children: false + default_workdir: ~/work/active-project +``` + +### Scheduled task starts (`scheduled_at`) + +Set `scheduled_at` on a task to delay dispatch until a specific time. The dispatcher skips ready tasks whose `scheduled_at` is in the future and picks them up on the first tick after that timestamp. + +```bash +hermes kanban create "nightly backup audit" \ + --assignee ops --scheduled-at "2026-06-01T03:00:00Z" +``` + +### Respawn guard + +The dispatcher refuses to re-spawn a ready task when it hit a quota/auth/429 error on the previous run (`blocker_auth`), or completed a run successfully within the guard window (`recent_success`), or a recent task comment links to a GitHub PR (`active_pr`). This prevents repeat worker storms on the same bug or task while a human catches up. See the `respawn_guarded` row in the [event reference](#event-reference). + +### Drag-to-delete and bulk delete (dashboard) + +The dashboard exposes a **trash drop zone** on the kanban page — drag any card into it to delete the task (cascades through `task_events`, child links, and subscriptions). A confirmation prompt protects against accidents. Bulk delete is also reachable via `DELETE /api/plugins/kanban/tasks` with a JSON body `{"ids": ["t_abc", "t_def", ...]}`. + +### Worker visibility endpoints + +The dashboard plugin API now exposes three read-only endpoints for external monitors: + +| Endpoint | Returns | +|----------|---------| +| `GET /api/plugins/kanban/workers/active` | Currently spawned workers with PID, profile, task id, started-at, last heartbeat | +| `GET /api/plugins/kanban/runs/{id}` | Single-run detail — task id, status, started/ended, exit code, log path | +| `GET /api/plugins/kanban/inspect` | Combined dispatcher snapshot — backlog, in-progress count vs. `max_in_progress`, recent events | + +All three are gated by the same dashboard plugin auth as the rest of the kanban plugin API. + +### Kanban Swarm topology helper + +`hermes kanban swarm` creates a durable **Kanban Swarm v1** graph in one shot: a completed root/blackboard card, N parallel worker cards, a verifier card gated on all workers, and a synthesizer card gated on the verifier. Shared swarm context (the "blackboard") is stored as structured JSON comments on the root card so any worker can read it. + +```bash +hermes kanban swarm "Design a multi-region failover plan" \ + --workers researcher,architect,sre \ + --verifier reviewer --synthesizer writer +``` + +The resulting graph dispatches normally — workers run in parallel, the verifier wakes after they all finish, the synthesizer wakes after the verifier marks the work clean. + ## `/kanban` slash command {#kanban-slash-command} Every `hermes kanban <action>` verb is also reachable as `/kanban <action>` — from inside an interactive `hermes chat` session **and** from any gateway platform (Telegram, Discord, Slack, WhatsApp, Signal, Matrix, Mattermost, email, SMS). Both surfaces call the exact same `hermes_cli.kanban.run_slash()` entry point that reuses the `hermes kanban` argparse tree, so the argument surface, flags, and output format are identical across CLI, `/kanban`, and `hermes kanban`. You don't have to leave the chat to drive the board. diff --git a/website/docs/user-guide/features/overview.md b/website/docs/user-guide/features/overview.md index 5ad06641540..5f6c04f5ca8 100644 --- a/website/docs/user-guide/features/overview.md +++ b/website/docs/user-guide/features/overview.md @@ -8,6 +8,10 @@ sidebar_position: 1 Hermes Agent includes a rich set of capabilities that extend far beyond basic chat. From persistent memory and file-aware context to browser automation and voice conversations, these features work together to make Hermes a powerful autonomous assistant. +:::tip Don't know where to start? +`hermes setup --portal` covers a model provider plus all four Tool Gateway tools (web search, image generation, TTS, browser) in one command. See [Nous Portal](/integrations/nous-portal). +::: + ## Core - **[Tools & Toolsets](tools.md)** — Tools are functions that extend the agent's capabilities. They're organized into logical toolsets that can be enabled or disabled per platform, covering web search, terminal execution, file editing, memory, delegation, and more. @@ -43,7 +47,7 @@ Hermes Agent includes a rich set of capabilities that extend far beyond basic ch - **[Memory Providers](memory-providers.md)** — Plug in external memory backends (Honcho, OpenViking, Mem0, Hindsight, Holographic, RetainDB, ByteRover, Supermemory) for cross-session user modeling and personalization beyond the built-in memory system. - **[API Server](api-server.md)** — Expose Hermes as an OpenAI-compatible HTTP endpoint. Connect any frontend that speaks the OpenAI format — Open WebUI, LobeChat, LibreChat, and more. - **[IDE Integration (ACP)](acp.md)** — Use Hermes inside ACP-compatible editors such as VS Code, Zed, and JetBrains. Chat, tool activity, file diffs, and terminal commands render inside your editor. -- **[RL Training](rl-training.md)** — Generate trajectory data from agent sessions for reinforcement learning and model fine-tuning. +- **[Batch Processing](batch-processing.md)** — Run the agent over many prompts or tasks in parallel from the CLI, with structured outputs and trajectory capture suitable for evals or downstream training pipelines. ## Customization diff --git a/website/docs/user-guide/features/provider-routing.md b/website/docs/user-guide/features/provider-routing.md index 6da57a58e5b..3dd6e69787e 100644 --- a/website/docs/user-guide/features/provider-routing.md +++ b/website/docs/user-guide/features/provider-routing.md @@ -11,6 +11,10 @@ When using [OpenRouter](https://openrouter.ai) as your LLM provider, Hermes Agen OpenRouter routes requests to many providers (e.g., Anthropic, Google, AWS Bedrock, Together AI). Provider routing lets you optimize for cost, speed, quality, or enforce specific provider requirements. +:::tip +Traffic routed through [Nous Portal](/integrations/nous-portal) still respects per-model routing and priority configs — and Portal subscribers get 10% off token-billed providers. +::: + ## Configuration Add a `provider_routing` section to your `~/.hermes/config.yaml`: diff --git a/website/docs/user-guide/features/skills.md b/website/docs/user-guide/features/skills.md index c58dbb391cd..df88c1369dd 100644 --- a/website/docs/user-guide/features/skills.md +++ b/website/docs/user-guide/features/skills.md @@ -411,7 +411,7 @@ hermes skills tap add myorg/skills-repo # Add a custom GitHub source | `well-known` | `well-known:https://mintlify.com/docs/.well-known/skills/mintlify` | Skills served directly from `/.well-known/skills/index.json` on a website. Search using the site or docs URL. | | `url` | `https://sharethis.chat/SKILL.md` | Direct HTTP(S) URL to a single-file `SKILL.md`. Name resolution: frontmatter → URL slug → interactive prompt → `--name` flag. | | `github` | `openai/skills/k8s` | Direct GitHub repo/path installs and custom taps. | -| `clawhub`, `lobehub`, `browse-sh`, `claude-marketplace` | Source-specific identifiers | Community or marketplace integrations. | +| `clawhub`, `lobehub`, `browse-sh` | Source-specific identifiers | Community or marketplace integrations. | ### Integrated hubs and registries diff --git a/website/docs/user-guide/features/subscription-proxy.md b/website/docs/user-guide/features/subscription-proxy.md index 0625ba45b32..5aa4cfeabb6 100644 --- a/website/docs/user-guide/features/subscription-proxy.md +++ b/website/docs/user-guide/features/subscription-proxy.md @@ -72,9 +72,9 @@ automatically when the bearer approaches expiry. hermes proxy providers ``` -Currently shipped: `nous` (Nous Portal). More OAuth providers can be -added by implementing the `UpstreamAdapter` interface in -`hermes_cli/proxy/adapters/`. +Currently shipped: `nous` (Nous Portal) and `xai` (xAI / Grok). More +OAuth providers can be added by implementing the `UpstreamAdapter` +interface in `hermes_cli/proxy/adapters/`. ## Check status diff --git a/website/docs/user-guide/features/tts.md b/website/docs/user-guide/features/tts.md index fa879cac17f..96c33d745b9 100644 --- a/website/docs/user-guide/features/tts.md +++ b/website/docs/user-guide/features/tts.md @@ -113,6 +113,7 @@ Each provider has a documented per-request input-character cap. Hermes truncates | ElevenLabs | Model-aware (see below) | | NeuTTS | 2000 | | KittenTTS | 2000 | +| Piper | 5000 | **ElevenLabs** picks a cap from the configured `model_id`: diff --git a/website/docs/user-guide/features/vision.md b/website/docs/user-guide/features/vision.md index efe1a344ab2..44352af392d 100644 --- a/website/docs/user-guide/features/vision.md +++ b/website/docs/user-guide/features/vision.md @@ -9,6 +9,10 @@ sidebar_position: 7 Hermes Agent supports **multimodal vision** — you can paste images from your clipboard directly into the CLI and ask the agent to analyze, describe, or work with them. Images are sent to the model as base64-encoded content blocks, so any vision-capable model can process them. +:::tip +Portal subscribers get vision-capable models (Claude, GPT-5, Gemini) in the same catalog — no extra credentials needed. See [Nous Portal](/integrations/nous-portal). +::: + ## How It Works 1. Copy an image to your clipboard (screenshot, browser image, etc.) diff --git a/website/docs/user-guide/features/web-dashboard.md b/website/docs/user-guide/features/web-dashboard.md index dca431523b3..54b058f2250 100644 --- a/website/docs/user-guide/features/web-dashboard.md +++ b/website/docs/user-guide/features/web-dashboard.md @@ -8,6 +8,10 @@ description: "Browser-based dashboard for managing configuration, API keys, sess The web dashboard is a browser-based UI for managing your Hermes Agent installation. Instead of editing YAML files or running CLI commands, you can configure settings, manage API keys, and monitor sessions from a clean web interface. +:::tip +Hosted-mode auth uses Nous Portal OAuth; if you also want the dashboard to talk to a real backend, `hermes setup --portal` wires up the model and tool gateway too. See [Nous Portal](/integrations/nous-portal). +::: + ## Quick Start ```bash diff --git a/website/docs/user-guide/features/x-search.md b/website/docs/user-guide/features/x-search.md index 98d7b4584a1..2e2004cabe0 100644 --- a/website/docs/user-guide/features/x-search.md +++ b/website/docs/user-guide/features/x-search.md @@ -11,6 +11,10 @@ The `x_search` tool lets the agent search X (Twitter) posts, profiles, and threa **Use this instead of `web_search`** when you specifically want current discussion, reactions, or claims **on X**. For general web pages, keep using `web_search` / `web_extract`. +:::tip +If you're paying Portal for an xAI model anyway, Live Search calls bill against the same xAI key configured for chat. See [Nous Portal](/integrations/nous-portal). +::: + ## Authentication `x_search` registers when **either** xAI credential path is available: diff --git a/website/docs/user-guide/messaging/google_chat.md b/website/docs/user-guide/messaging/google_chat.md index 8cf2d01d7a3..d9565b154c5 100644 --- a/website/docs/user-guide/messaging/google_chat.md +++ b/website/docs/user-guide/messaging/google_chat.md @@ -13,6 +13,8 @@ process does not need a public URL, a tunnel, or a TLS certificate. It connects, authenticates, and listens on a subscription — the same way a Telegram bot listens on a token. +> Run `hermes gateway setup` and pick **Google Chat** for a guided walk-through. + :::note Workspace edition Google Chat is part of Google Workspace. You can use this integration with a personal Workspace (`@yourdomain.com` registered through Google) or a work @@ -237,7 +239,7 @@ specifically, as the user who asked for the file. 4. On the host, register the client with Hermes: ```bash -python -m gateway.platforms.google_chat_user_oauth \ +python -m plugins.platforms.google_chat.oauth \ --client-secret /path/to/client_secret.json ``` @@ -330,7 +332,7 @@ The one-time host setup wasn't done. From a terminal on the host that runs Hermes: ```bash -python -m gateway.platforms.google_chat_user_oauth \ +python -m plugins.platforms.google_chat.oauth \ --client-secret /path/to/client_secret.json ``` diff --git a/website/docs/user-guide/messaging/homeassistant.md b/website/docs/user-guide/messaging/homeassistant.md index f57b439775d..e96cc22cc02 100644 --- a/website/docs/user-guide/messaging/homeassistant.md +++ b/website/docs/user-guide/messaging/homeassistant.md @@ -250,3 +250,26 @@ Agent automatically: entity_id="light.hallway") 3. Sends notification: "Front door opened. Hallway lights turned on." ``` + +## Troubleshooting + +**Environment variables not picked up.** +The adapter reads credentials from `~/.hermes/.env` (auto-merged at startup) or +from `config.yaml`. Double-check the file lives under the active Hermes profile +home and that there's no stray quoting around the URL/token. Restart the gateway +after editing — env changes are only applied on process start. + +**`conversation entity not found` / agent never replies.** +Home Assistant's conversation API requires a configured *Assist* conversation +agent. In HA, open **Settings → Voice assistants → Add assistant** and note the +resulting entity id (looks like `conversation.home_assistant` or +`conversation.openai_<name>`). Set that entity id in the adapter's +`conversation_entity` setting; the default may not exist on your instance. + +**REST auth failing (`401 Unauthorized`).** +The token must be a *Long-Lived Access Token* created from your HA user profile +page (**Profile → Security → Long-lived access tokens**). Short-lived UI +session tokens won't work. Also verify the base URL includes the scheme and +port (e.g. `http://homeassistant.local:8123`) and is reachable from the host +running Hermes — `curl -H "Authorization: Bearer <token>" <url>/api/` should +return `{"message": "API running."}`. diff --git a/website/docs/user-guide/messaging/index.md b/website/docs/user-guide/messaging/index.md index b1cc6232525..ff40628544f 100644 --- a/website/docs/user-guide/messaging/index.md +++ b/website/docs/user-guide/messaging/index.md @@ -10,6 +10,10 @@ Chat with Hermes from Telegram, Discord, Slack, WhatsApp, Signal, SMS, Email, Ho For the full voice feature set — including CLI microphone mode, spoken replies in messaging, and Discord voice-channel conversations — see [Voice Mode](/user-guide/features/voice-mode) and [Use Voice Mode with Hermes](/guides/use-voice-mode-with-hermes). +:::tip +Bots need both a model provider and tool providers (TTS, web). A [Nous Portal](/integrations/nous-portal) subscription bundles all of them. +::: + ## Platform Comparison | Platform | Voice | Images | Files | Threads | Reactions | Typing | Streaming | diff --git a/website/docs/user-guide/messaging/line.md b/website/docs/user-guide/messaging/line.md index 1aa3a753816..075afdbd9d5 100644 --- a/website/docs/user-guide/messaging/line.md +++ b/website/docs/user-guide/messaging/line.md @@ -10,6 +10,8 @@ Run Hermes Agent as a [LINE](https://line.me/) bot via the official LINE Messagi LINE is the dominant messaging app in Japan, Taiwan, and Thailand. If your users live there, this is how they reach you. +> Run `hermes gateway setup` and pick **LINE** for a guided walk-through. + ## How the bot responds | Context | Behavior | diff --git a/website/docs/user-guide/messaging/msgraph-webhook.md b/website/docs/user-guide/messaging/msgraph-webhook.md index 5240dfb81cc..80ae063b3e6 100644 --- a/website/docs/user-guide/messaging/msgraph-webhook.md +++ b/website/docs/user-guide/messaging/msgraph-webhook.md @@ -36,12 +36,13 @@ Or via env vars in `~/.hermes/.env` (auto-merged on startup): ```bash MSGRAPH_WEBHOOK_ENABLED=true -MSGRAPH_WEBHOOK_HOST=127.0.0.1 MSGRAPH_WEBHOOK_PORT=8646 MSGRAPH_WEBHOOK_CLIENT_STATE=<generate-with-openssl-rand-hex-32> MSGRAPH_WEBHOOK_ACCEPTED_RESOURCES=communications/onlineMeetings ``` +Note: the bind host is read from `extra.host` in `config.yaml` (see the example above); there is no `MSGRAPH_WEBHOOK_HOST` env-var override. + Start the gateway: `hermes gateway run`. The listener exposes: - `POST /msgraph/webhook` — change notifications from Graph diff --git a/website/docs/user-guide/messaging/ntfy.md b/website/docs/user-guide/messaging/ntfy.md index c7ee2593e4c..6bacac84f2b 100644 --- a/website/docs/user-guide/messaging/ntfy.md +++ b/website/docs/user-guide/messaging/ntfy.md @@ -4,6 +4,8 @@ ntfy makes a great lightweight push channel for Hermes: subscribe to a topic from the [ntfy mobile app](https://ntfy.sh/docs/subscribe/phone/), send messages to the topic to talk to the agent, get the response back on your phone. +> Run `hermes gateway setup` and pick **ntfy** for a guided walk-through. + ## Prerequisites - A topic name (any unique string — `hermes-myname-2026` works fine) diff --git a/website/docs/user-guide/messaging/simplex.md b/website/docs/user-guide/messaging/simplex.md index 601cd2736f6..69df498aff3 100644 --- a/website/docs/user-guide/messaging/simplex.md +++ b/website/docs/user-guide/messaging/simplex.md @@ -2,6 +2,8 @@ [SimpleX Chat](https://simplex.chat/) is a private, decentralised messaging platform where users own their contacts and groups. Unlike other platforms, SimpleX assigns no persistent user IDs — every contact is identified by an opaque internal ID generated at connection time, which makes it one of the most private messengers available. +> Run `hermes gateway setup` and pick **SimpleX** for a guided walk-through. + ## Prerequisites - The **simplex-chat** CLI installed and running as a daemon diff --git a/website/docs/user-guide/messaging/teams-meetings.md b/website/docs/user-guide/messaging/teams-meetings.md index ec3c055c613..e0e118cc091 100644 --- a/website/docs/user-guide/messaging/teams-meetings.md +++ b/website/docs/user-guide/messaging/teams-meetings.md @@ -8,6 +8,10 @@ description: "Set up the Microsoft Teams meeting summary pipeline with Microsoft Use the Teams meeting pipeline when you want Hermes to ingest Microsoft Graph meeting events, fetch transcripts first, fall back to recordings plus STT when needed, and deliver a structured summary to downstream sinks. +Prerequisites: see [Microsoft Teams](./teams.md) for the underlying bot/credential setup. + +> Run `hermes gateway setup` and pick **Teams Meetings** for a guided walk-through. + This page focuses on setup and enablement: - Graph credentials - webhook listener configuration diff --git a/website/docs/user-guide/messaging/teams.md b/website/docs/user-guide/messaging/teams.md index 07c91fa0262..ae30d4a5856 100644 --- a/website/docs/user-guide/messaging/teams.md +++ b/website/docs/user-guide/messaging/teams.md @@ -10,6 +10,8 @@ Connect Hermes Agent to Microsoft Teams as a bot. Unlike Slack's Socket Mode, Te Need meeting summaries from Microsoft Graph events rather than normal bot conversations? Use the dedicated setup page: [Teams Meetings](/user-guide/messaging/teams-meetings). +> Run `hermes gateway setup` and pick **Microsoft Teams** for a guided walk-through. + ## How the Bot Responds | Context | Behavior | diff --git a/website/docs/user-guide/messaging/telegram.md b/website/docs/user-guide/messaging/telegram.md index f20bdfee5e3..aab215cf2e2 100644 --- a/website/docs/user-guide/messaging/telegram.md +++ b/website/docs/user-guide/messaging/telegram.md @@ -319,7 +319,7 @@ With STT disabled, the gateway still downloads the voice/audio attachment into H Your tools or skills can then read that path directly (e.g., hand it off to a local diarization pipeline, a richer transcription model, or upload it to long-term storage). The file extension reflects the original format Telegram delivered (`.ogg` for voice notes, `.mp3`/`.m4a`/etc. for audio attachments). -This pairs naturally with the [local Bot API server](#large-files-20mb--via-local-bot-api-server) section below, which lifts Telegram's 20MB getFile ceiling to 2GB — useful when the recordings you want to process are longer than a couple of minutes. +This pairs naturally with the [local Bot API server](#large-files-20mb-via-local-bot-api-server) section below, which lifts Telegram's 20MB getFile ceiling to 2GB — useful when the recordings you want to process are longer than a couple of minutes. ### Outgoing Voice (Text-to-Speech) @@ -1233,6 +1233,14 @@ HERMES_TELEGRAM_NOTIFICATIONS=all Unknown values log a warning and fall back to `important`. +## Status messages edited in place + +The Telegram adapter routes recurring agent status callbacks (e.g. "Compressing context…", "Calling tool…") through `send_or_update_status()`, which keeps a `{(chat_id, status_key) → message_id}` cache and **edits the existing bubble** on subsequent emits instead of appending a new one each time. Distinct `status_key` values get their own messages; distinct chats never collide. If the edit fails (e.g. the user deleted the message, or it's older than Telegram allows for edits), the cache entry is dropped and the next emit posts a fresh message and re-caches its ID. No config required — this is the default Telegram behavior. Other adapters that don't implement `send_or_update_status` fall through to plain `send()` unchanged. + +## Pin incoming user message during agent turn + +When a user sends a message that triggers an agent turn, the Telegram adapter pins that incoming message for the duration of the turn and unpins it when the response is finished — a lightweight visual indicator that the bot is actively working on the message rather than ignoring it. The pin uses `disable_notification=true` to avoid extra pings. No config required. + ## Security :::warning diff --git a/website/docs/user-guide/messaging/wecom-callback.md b/website/docs/user-guide/messaging/wecom-callback.md index a9c6be56b7a..8a45ab8cb3c 100644 --- a/website/docs/user-guide/messaging/wecom-callback.md +++ b/website/docs/user-guide/messaging/wecom-callback.md @@ -12,6 +12,10 @@ Hermes supports two WeCom integration modes: - **WeCom Callback** (this page) — self-built app, receives encrypted XML callbacks. Shows as a first-class app in users' WeCom sidebar. Supports multi-corp routing. ::: +See also: [WeCom Bot](./wecom.md) for the bot-style integration. + +> Run `hermes gateway setup` and pick **WeCom Callback** for a guided walk-through. + ## How It Works 1. You register a self-built application in the WeCom Admin Console @@ -147,3 +151,28 @@ The crypto implementation is compatible with Tencent's official WXBizMsgCrypt SD - **No typing indicators** — the callback model doesn't support typing status - **Text only** — currently supports text messages for input; image/file/voice input not yet implemented. The agent is aware of outbound media capabilities via the WeCom platform hint (images, documents, video, voice). - **Response latency** — agent sessions take 3–30 minutes; users see the reply when processing completes + +## Troubleshooting + +**Signature verification failing.** +WeCom signs every request with the **Token** you registered in the admin +console. A mismatch between the token configured in Hermes and the token the +admin console expects is the most common cause. Re-copy both the **Token** and +**EncodingAESKey** from the admin console — they're easy to truncate. Whitespace +in `~/.hermes/.env` values around `=` will also break signature checks. After +fixing, restart `hermes gateway run`. + +**Callback URL not reachable / verification step fails.** +WeCom hits the public URL you registered. Confirm: +1. Your reverse proxy / tunnel forwards `/wecom/callback` to the gateway's port. +2. The URL in the admin console is HTTPS (WeCom rejects plain HTTP). +3. From outside your network, `curl -i https://<your-domain>/wecom/callback` + returns something other than a timeout (a 4xx without query params is fine — + it just means the listener is reachable). + +**Port not reachable / listener not bound.** +Check `hermes gateway run` logs for the bound host/port. If the adapter bound to +`127.0.0.1` you must front it with a reverse proxy or tunnel — WeCom's servers +can't reach loopback. Set `extra.host: 0.0.0.0` in `config.yaml` (plus +`allowed_source_cidrs` if exposing directly) or keep loopback and use a tunnel +such as Cloudflare Tunnel / nginx. diff --git a/website/docs/user-guide/messaging/wecom.md b/website/docs/user-guide/messaging/wecom.md index 1a98c82255a..aa98b6b303d 100644 --- a/website/docs/user-guide/messaging/wecom.md +++ b/website/docs/user-guide/messaging/wecom.md @@ -8,6 +8,8 @@ description: "Connect Hermes Agent to WeCom via the AI Bot WebSocket gateway" Connect Hermes to [WeCom](https://work.weixin.qq.com/) (企业微信), Tencent's enterprise messaging platform. The adapter uses WeCom's AI Bot WebSocket gateway for real-time bidirectional communication — no public endpoint or webhook needed. +See also: [WeCom Callback](./wecom-callback.md) for inbound webhook setup. + ## Prerequisites - A WeCom organization account diff --git a/website/docs/user-guide/messaging/whatsapp.md b/website/docs/user-guide/messaging/whatsapp.md index acda8de4063..d2bd52a56b3 100644 --- a/website/docs/user-guide/messaging/whatsapp.md +++ b/website/docs/user-guide/messaging/whatsapp.md @@ -8,6 +8,8 @@ description: "Set up Hermes Agent as a WhatsApp bot via the built-in Baileys bri Hermes connects to WhatsApp through a built-in bridge based on **Baileys**. This works by emulating a WhatsApp Web session — **not** through the official WhatsApp Business API. No Meta developer account or Business verification is required. +> Run `hermes gateway setup` and pick **WhatsApp** for a guided walk-through. + :::warning Unofficial API — Ban Risk WhatsApp does **not** officially support third-party bots outside the Business API. Using a third-party bridge carries a small risk of account restrictions. To minimize risk: - **Use a dedicated phone number** for the bot (not your personal number) diff --git a/website/docs/user-guide/profiles.md b/website/docs/user-guide/profiles.md index b09911e637a..494e7ec4241 100644 --- a/website/docs/user-guide/profiles.md +++ b/website/docs/user-guide/profiles.md @@ -24,6 +24,10 @@ That's it. `coder` is now its own Hermes profile with its own config, memory, an ## Creating a profile +:::tip +Quickest setup: run `hermes setup --portal` inside the new profile to wire up models + tools at once. See [Nous Portal](/integrations/nous-portal). +::: + ### Blank profile ```bash diff --git a/website/docs/user-guide/security.md b/website/docs/user-guide/security.md index 80a615c2f9e..2bc088ab9b2 100644 --- a/website/docs/user-guide/security.md +++ b/website/docs/user-guide/security.md @@ -30,10 +30,23 @@ The approval system supports three modes, configured via `approvals.mode` in `~/ ```yaml approvals: - mode: manual # manual | smart | off - timeout: 60 # seconds to wait for user response (default: 60) + mode: manual # manual | smart | off + timeout: 60 # seconds to wait for user response (default: 60) + cron_mode: deny # deny | approve — what cron jobs do when they hit a dangerous command + mcp_reload_confirm: true # /reload-mcp asks before invalidating the MCP tool cache + destructive_slash_confirm: true # /clear, /new, /reset, /undo prompt before discarding state ``` +The full set of keys: + +| Key | Default | What it controls | +|---|---|---| +| `mode` | `manual` | Approval policy for dangerous shell commands — see the table below. | +| `timeout` | `60` | Seconds Hermes waits for an approval reply before timing out. | +| `cron_mode` | `deny` | How [cron jobs](./features/cron.md) behave headlessly when they trigger a dangerous-command prompt. `deny` blocks the command (the agent must find another path); `approve` auto-approves everything in cron context. | +| `mcp_reload_confirm` | `true` | When true, `/reload-mcp` asks before rebuilding the MCP tool set. Rebuilding invalidates the provider prompt cache (tool schemas live in the system prompt), so the next message re-sends full input tokens. Users who click **Always Approve** flip this key to `false`. | +| `destructive_slash_confirm` | `true` | When true, destructive session slash commands (`/clear`, `/new`, `/reset`, `/undo`) prompt before discarding conversation state. Three-option dialog (Approve Once / Always Approve / Cancel) routed through native yes/no buttons on Telegram, Discord, and Slack; text fallback elsewhere. Users who click **Always Approve** flip this key to `false`. TUI uses its own modal overlay (set `HERMES_TUI_NO_CONFIRM=1` to opt out there). | + | Mode | Behavior | |------|----------| | **manual** (default) | Always prompt the user for approval on dangerous commands | @@ -73,7 +86,7 @@ When YOLO is active, Hermes shows two persistent visual reminders so it's hard t YOLO mode disables **all** dangerous command safety checks for the session — **except** the hardline blocklist (see below). Use only when you fully trust the commands being generated (e.g., well-tested automation scripts in disposable environments). ::: -For destructive session slash commands (`/clear`, `/new` / `/reset`, `/undo`, `/exit --delete`), the CLI also prompts for confirmation before running them. See [Slash Commands — Confirmation prompts for destructive commands](../reference/slash-commands.md#confirmation-prompts-for-destructive-commands). +For destructive session slash commands (`/clear`, `/new` / `/reset`, `/undo`, `/quit --delete` — `/exit --delete` is an alias), the CLI also prompts for confirmation before running them. See [Slash Commands — Confirmation prompts for destructive commands](../reference/slash-commands.md#confirmation-prompts-for-destructive-commands). ### Hardline Blocklist (Always-On Floor) @@ -422,7 +435,7 @@ terminal: - my_custom_oauth_token.json ``` -Paths are relative to `~/.hermes/`. Files are mounted to `/root/.hermes/` inside the container. +Paths are relative to `~/.hermes/`. Files are mounted to `/root/.hermes/` inside the container. This list is read by `tools/credential_files.py` (`terminal.credential_files`) — it lives under the `terminal:` block but is loaded by the credential-files module, not the core terminal backend, so it isn't part of the bundled `DEFAULT_CONFIG` snapshot. ### What Each Sandbox Filters diff --git a/website/docs/user-guide/skills/bundled/apple/apple-apple-notes.md b/website/docs/user-guide/skills/bundled/apple/apple-apple-notes.md index edad8b671af..637d56a3267 100644 --- a/website/docs/user-guide/skills/bundled/apple/apple-apple-notes.md +++ b/website/docs/user-guide/skills/bundled/apple/apple-apple-notes.md @@ -21,7 +21,7 @@ Manage Apple Notes via memo CLI: create, search, edit. | License | MIT | | Platforms | macos | | Tags | `Notes`, `Apple`, `macOS`, `note-taking` | -| Related skills | [`obsidian`](/user-guide/skills/bundled/note-taking/note-taking-obsidian) | +| Related skills | [`obsidian`](/docs/user-guide/skills/bundled/note-taking/note-taking-obsidian) | ## Reference: full SKILL.md diff --git a/website/docs/user-guide/skills/bundled/autonomous-ai-agents/autonomous-ai-agents-claude-code.md b/website/docs/user-guide/skills/bundled/autonomous-ai-agents/autonomous-ai-agents-claude-code.md index c56fca7ec55..6d537901861 100644 --- a/website/docs/user-guide/skills/bundled/autonomous-ai-agents/autonomous-ai-agents-claude-code.md +++ b/website/docs/user-guide/skills/bundled/autonomous-ai-agents/autonomous-ai-agents-claude-code.md @@ -21,7 +21,7 @@ Delegate coding to Claude Code CLI (features, PRs). | License | MIT | | Platforms | linux, macos, windows | | Tags | `Coding-Agent`, `Claude`, `Anthropic`, `Code-Review`, `Refactoring`, `PTY`, `Automation` | -| Related skills | [`codex`](/user-guide/skills/bundled/autonomous-ai-agents/autonomous-ai-agents-codex), [`hermes-agent`](/user-guide/skills/bundled/autonomous-ai-agents/autonomous-ai-agents-hermes-agent), [`opencode`](/user-guide/skills/bundled/autonomous-ai-agents/autonomous-ai-agents-opencode) | +| Related skills | [`codex`](/docs/user-guide/skills/bundled/autonomous-ai-agents/autonomous-ai-agents-codex), [`hermes-agent`](/docs/user-guide/skills/bundled/autonomous-ai-agents/autonomous-ai-agents-hermes-agent), [`opencode`](/docs/user-guide/skills/bundled/autonomous-ai-agents/autonomous-ai-agents-opencode) | ## Reference: full SKILL.md diff --git a/website/docs/user-guide/skills/bundled/autonomous-ai-agents/autonomous-ai-agents-codex.md b/website/docs/user-guide/skills/bundled/autonomous-ai-agents/autonomous-ai-agents-codex.md index 1e142db15db..3482f2303c1 100644 --- a/website/docs/user-guide/skills/bundled/autonomous-ai-agents/autonomous-ai-agents-codex.md +++ b/website/docs/user-guide/skills/bundled/autonomous-ai-agents/autonomous-ai-agents-codex.md @@ -21,7 +21,7 @@ Delegate coding to OpenAI Codex CLI (features, PRs). | License | MIT | | Platforms | linux, macos, windows | | Tags | `Coding-Agent`, `Codex`, `OpenAI`, `Code-Review`, `Refactoring` | -| Related skills | [`claude-code`](/user-guide/skills/bundled/autonomous-ai-agents/autonomous-ai-agents-claude-code), [`hermes-agent`](/user-guide/skills/bundled/autonomous-ai-agents/autonomous-ai-agents-hermes-agent) | +| Related skills | [`claude-code`](/docs/user-guide/skills/bundled/autonomous-ai-agents/autonomous-ai-agents-claude-code), [`hermes-agent`](/docs/user-guide/skills/bundled/autonomous-ai-agents/autonomous-ai-agents-hermes-agent) | ## Reference: full SKILL.md diff --git a/website/docs/user-guide/skills/bundled/autonomous-ai-agents/autonomous-ai-agents-kanban-codex-lane.md b/website/docs/user-guide/skills/bundled/autonomous-ai-agents/autonomous-ai-agents-kanban-codex-lane.md new file mode 100644 index 00000000000..aac59a16d04 --- /dev/null +++ b/website/docs/user-guide/skills/bundled/autonomous-ai-agents/autonomous-ai-agents-kanban-codex-lane.md @@ -0,0 +1,295 @@ +--- +title: "Kanban Codex Lane" +sidebar_label: "Kanban Codex Lane" +description: "Use when a Hermes Kanban worker wants to run Codex CLI as an isolated implementation lane while Hermes keeps ownership of task lifecycle, reconciliation, tes..." +--- + +{/* This page is auto-generated from the skill's SKILL.md by website/scripts/generate-skill-docs.py. Edit the source SKILL.md, not this page. */} + +# Kanban Codex Lane + +Use when a Hermes Kanban worker wants to run Codex CLI as an isolated implementation lane while Hermes keeps ownership of task lifecycle, reconciliation, testing, and handoff. + +## Skill metadata + +| | | +|---|---| +| Source | Bundled (installed by default) | +| Path | `skills/autonomous-ai-agents/kanban-codex-lane` | +| Version | `1.0.0` | +| Author | Hermes Agent | +| License | MIT | +| Tags | `kanban`, `codex`, `worktrees`, `autonomous-agents`, `prediction-market-bot` | +| Related skills | [`kanban-worker`](/docs/user-guide/skills/bundled/devops/devops-kanban-worker), [`codex`](/docs/user-guide/skills/bundled/autonomous-ai-agents/autonomous-ai-agents-codex), [`hermes-agent`](/docs/user-guide/skills/bundled/autonomous-ai-agents/autonomous-ai-agents-hermes-agent) | + +## Reference: full SKILL.md + +:::info +The following is the complete skill definition that Hermes loads when this skill is triggered. This is what the agent sees as instructions when the skill is active. +::: + +# Kanban Codex Lane + +## Overview + +This skill defines the lightweight Hermes+Codex dual-lane convention for Kanban workers. Hermes is always the task owner: it calls `kanban_show`, decides whether Codex is appropriate, creates or selects an isolated workspace, starts and monitors Codex, reconciles any diff, runs verification, and writes the final `kanban_complete` or `kanban_block` handoff. Codex is an input lane only. Codex output is not a task completion signal, not a trusted reviewer, and not allowed to write durable Kanban state directly. + +The convention exists so a Hermes worker can use Codex for bounded implementation help without changing the dispatcher. The dispatcher must still spawn Hermes workers. A worker may optionally spawn Codex inside its own run, then accept, partially accept, or reject the lane after independent review and tests. + +## When to Use + +Use the Codex lane when all of these are true: + +- The Kanban task is a coding, refactor, documentation, test, or mechanical migration task with clear acceptance criteria. +- A bounded diff can be evaluated by Hermes in one run. +- The repo can be copied or checked out in an isolated git worktree/branch. +- Hermes can run the relevant tests itself after Codex exits. +- The prompt can state all safety constraints and files that must not change. + +Do not use the Codex lane when any of these are true: + +- The task requires human judgment that is not already captured in the Kanban body. +- The worker lacks repo access, Codex auth, or time to reconcile the result. +- The change touches secrets, credential stores, private user data, or production order-entry systems. +- A small direct edit is faster and safer than spawning another agent. +- The task is research-only and should produce a written handoff rather than a diff. +- The worker would be tempted to mark Done based only on Codex self-report. + +## Ownership Rules + +1. Hermes owns the Kanban lifecycle. Codex must never call `kanban_complete`, `kanban_block`, `kanban_create`, gateway messaging, or any Hermes board CLI as a substitute for the worker. +2. Hermes owns final acceptance. Treat Codex commits/diffs as untrusted patches until reviewed and verified. +3. Hermes owns test execution. Codex may run tests, but those runs are advisory; repeat required verification from Hermes with the repo's canonical wrapper. +4. Hermes owns safety. If Codex changes safety boundaries, risk gates, live trading behavior, or secrets handling, reject the lane even if tests pass. +5. Hermes owns cleanup. Kill stuck Codex processes and remove temporary worktrees when they are no longer needed. + +## Required Worktree and Branch Pattern + +Never run Codex directly in a shared dirty checkout. Use a branch/worktree name that ties the lane to the Kanban task and keeps untrusted edits isolated. + +Recommended variables: + +```bash +TASK_ID="${HERMES_KANBAN_TASK:-t_manual}" +REPO="/path/to/repo" +BASE="$(git -C "$REPO" rev-parse --abbrev-ref HEAD)" +SAFE_TASK="$(printf '%s' "$TASK_ID" | tr -cd '[:alnum:]_-')" +BRANCH="codex/${SAFE_TASK}/$(date -u +%Y%m%d%H%M%S)" +WORKTREE="/tmp/${SAFE_TASK}-codex-lane" +``` + +Create the isolated lane: + +```bash +git -C "$REPO" fetch --all --prune +git -C "$REPO" worktree add -b "$BRANCH" "$WORKTREE" "$BASE" +git -C "$WORKTREE" status --short --branch +``` + +If the current Kanban workspace is already an isolated git worktree created for this task, you may create a sibling Codex branch inside it only if `git status --short` is clean except for intentional Hermes edits. Otherwise create a separate temporary worktree and cherry-pick or copy accepted commits back after reconciliation. + +Cleanup after reconciliation: + +```bash +git -C "$REPO" worktree remove "$WORKTREE" +git -C "$REPO" branch -D "$BRANCH" # only after accepted commits were copied/cherry-picked or intentionally rejected +``` + +Keep the worktree if it is needed as an artifact for review; record it in `codex_lane.artifacts` and mention it in the handoff. + +## Codex Capability Checks + +Run these before spawning Codex. Missing Codex is a normal reason to skip the lane, not a task blocker if Hermes can do the task directly. + +```bash +command -v codex +codex --version +codex features list | grep -i goals || true +``` + +If `/goal` support is required, enable or launch with the feature flag only after checking availability: + +```bash +codex features enable goals || true +codex --enable goals --version +``` + +Authentication can be via `OPENAI_API_KEY` or the Codex CLI OAuth state (often `~/.codex/auth.json`). Do not print token files. A missing `OPENAI_API_KEY` is not proof that auth is unavailable. + +## Mode Selection + +Use `codex exec` for bounded one-shot edits where Codex should exit on its own: + +```python +terminal( + command="codex exec --full-auto '$(cat /tmp/codex_prompt.md)'", + workdir=WORKTREE, + background=True, + pty=True, + notify_on_complete=True, +) +``` + +Use Codex `/goal` only for broader multi-step work that benefits from durable objective tracking. Launch interactively in a PTY/tmux session or with `codex --enable goals` if the feature is disabled by default. Keep the goal objective self-contained: repo path, task id, safety constraints, allowed scope, acceptance criteria, tests, and commit expectations. + +Example `/goal` objective text to paste into Codex: + +```text +/goal Work in this repository only: <WORKTREE>. Task: <TASK_ID> <TITLE>. +Hermes owns the Kanban lifecycle; do not call Hermes kanban tools or messaging. +Create small commits on branch <BRANCH>. Follow the PMB safety constraints in the prompt. +Run the requested verification commands and report exact outputs. Stop after producing a diff and summary. +``` + +Do not use `--yolo` for prediction-market-bot or safety-sensitive repos. Prefer `--full-auto` inside the isolated worktree, then rely on Hermes reconciliation. + +## Prompt Construction + +Use the linked template at `templates/pmb-codex-lane-prompt.md` for prediction-market-bot work. For other repos, keep the same structure and replace the PMB-specific safety block with repo-specific invariants. + +Every Codex prompt must include: + +- `task_id`, title, and full Kanban acceptance criteria. +- Repo path, worktree path, branch name, and allowed file scope. +- Explicit statement: Hermes owns Kanban lifecycle; Codex is an input lane only. +- Required output: concise summary, files changed, commits, tests run, and known risks. +- Prohibited actions: secrets access, external messaging, board mutation, unrelated refactors, dependency upgrades unless required. +- Verification commands Codex may run and commands Hermes will run afterward. + +For PMB, include these mandatory safety constraints verbatim: + +```text +PMB safety constraints: +- live-SIM is paper-only; do not add or enable live REST order entry. +- Never use market orders. +- Do not add execution crossing or bypass price/risk checks. +- Do not fake passive fills, fills, PnL, order states, or reconciliation evidence. +- Do not weaken risk gates, limits, kill switches, or fail-closed behavior. +- Keep research/selection outside the C++ hot path unless explicitly requested. +- Do not read, print, write, or require secrets/tokens/credentials. +``` + +## Monitoring, Timeout, and Kill Behavior + +Start long Codex lanes in the background with PTY and completion notification: + +```python +result = terminal( + command="codex exec --full-auto '$(cat /tmp/codex_prompt.md)'", + workdir=WORKTREE, + background=True, + pty=True, + notify_on_complete=True, +) +session_id = result["session_id"] +``` + +Monitor without interfering: + +```python +process(action="poll", session_id=session_id) +process(action="log", session_id=session_id, limit=200) +process(action="wait", session_id=session_id, timeout=300) +``` + +Send a Kanban heartbeat every few minutes for lanes longer than two minutes, e.g. `kanban_heartbeat(note="Codex lane running in <WORKTREE>; waiting for tests/diff")`. + +Kill conditions: + +- No useful output for the task's remaining runtime budget. +- Codex requests secrets, production credentials, or external permissions. +- Codex attempts to modify files outside the worktree. +- Codex starts unrelated rewrites or dependency churn. +- Codex is still running near the worker timeout and no safe partial artifact exists. + +Kill command: + +```python +process(action="kill", session_id=session_id) +``` + +After kill, inspect `git status --short`, preserve useful patches only if safe, and record `codex_lane.result: timed_out` or `rejected` with a concrete `rejected_reason`. + +## Reconciliation Checklist + +Hermes must perform this checklist before accepting any Codex lane result: + +- [ ] `git -C <WORKTREE> status --short --branch` shows only expected files. +- [ ] `git -C <WORKTREE> diff --stat` and `git diff` were reviewed by Hermes. +- [ ] No secrets, credentials, generated caches, unrelated data, or local artifacts are included. +- [ ] PMB safety constraints were preserved: no live REST order entry, no market orders, no execution crossing, no fake passive fills/PnL, no risk-gate weakening, no secrets. +- [ ] Codex commits are small enough to cherry-pick or squash cleanly. +- [ ] Hermes ran the canonical tests itself, using `scripts/run_tests.sh` for Hermes Agent or the repo's documented wrapper for other repos. +- [ ] Any Codex-run tests are listed separately from Hermes-run tests. +- [ ] Accepted commits/diffs were applied to the Hermes-owned workspace/branch. +- [ ] Rejected or partial work has a concrete reason and artifact path if useful. + +Acceptance outcomes: + +- `accepted`: Codex diff/commits were reviewed, applied, and verified. +- `partial`: Some Codex work was accepted after edits or cherry-picks; rejected parts are documented. +- `rejected`: No Codex changes were accepted; reason is documented. +- `timed_out`: Codex exceeded the lane budget; useful artifacts may or may not exist. + +## kanban_complete Metadata Schema + +Include this object under `metadata.codex_lane` for every task where the lane was considered. If Codex was not used, set `used: false` and explain why in `rejected_reason` or a sibling `notes` field. + +```json +{ + "codex_lane": { + "used": true, + "mode": "exec | goal | skipped", + "worktree": "/absolute/path/to/codex/worktree", + "branch": "codex/t_caa69668/20260508100000", + "command": "codex exec --full-auto ...", + "result": "accepted | rejected | partial | timed_out", + "accepted_commits": ["<sha1>", "<sha2>"], + "rejected_reason": "empty when fully accepted; otherwise concrete reason", + "tests_run": [ + {"command": "scripts/run_tests.sh tests/tools/test_x.py", "exit_code": 0, "owner": "hermes"}, + {"command": "codex-reported: npm test", "exit_code": 0, "owner": "codex"} + ], + "artifacts": ["/absolute/path/to/log-or-patch"] + } +} +``` + +For tasks that intentionally skip Codex: + +```json +{ + "codex_lane": { + "used": false, + "mode": "skipped", + "worktree": null, + "branch": null, + "command": null, + "result": "rejected", + "accepted_commits": [], + "rejected_reason": "Direct Hermes edit was smaller and safer than spawning Codex.", + "tests_run": [], + "artifacts": [] + } +} +``` + +## Common Pitfalls + +1. Treating Codex self-report as verification. Always inspect the diff and rerun tests from Hermes. +2. Running Codex in the user's dirty main checkout. Always isolate in a worktree/branch. +3. Letting Codex own Kanban. Codex may summarize progress, but Hermes writes board state. +4. Forgetting PMB safety invariants in the prompt. Missing safety text is a lane setup failure. +5. Using `/goal` for quick edits. Prefer `codex exec` unless durable multi-step continuation is needed. +6. Killing a stuck lane without recording why. `rejected_reason` must explain the decision. +7. Accepting broad unrelated cleanup because tests pass. Reject or cherry-pick only the scoped changes. + +## Verification Checklist + +- [ ] Codex was skipped or started only after `command -v codex`, `codex --version`, and optional goals feature checks. +- [ ] Codex ran only in an isolated worktree/branch. +- [ ] Prompt included task scope, ownership rules, PMB safety constraints when applicable, and verification commands. +- [ ] Hermes reviewed `git diff` and safety-sensitive files. +- [ ] Hermes ran canonical tests independently. +- [ ] `kanban_complete.metadata.codex_lane` follows the schema above. +- [ ] Temporary processes and unnecessary worktrees were cleaned up. diff --git a/website/docs/user-guide/skills/bundled/autonomous-ai-agents/autonomous-ai-agents-opencode.md b/website/docs/user-guide/skills/bundled/autonomous-ai-agents/autonomous-ai-agents-opencode.md index 848ecfa5b96..37c6c1d15dc 100644 --- a/website/docs/user-guide/skills/bundled/autonomous-ai-agents/autonomous-ai-agents-opencode.md +++ b/website/docs/user-guide/skills/bundled/autonomous-ai-agents/autonomous-ai-agents-opencode.md @@ -21,7 +21,7 @@ Delegate coding to OpenCode CLI (features, PR review). | License | MIT | | Platforms | linux, macos, windows | | Tags | `Coding-Agent`, `OpenCode`, `Autonomous`, `Refactoring`, `Code-Review` | -| Related skills | [`claude-code`](/user-guide/skills/bundled/autonomous-ai-agents/autonomous-ai-agents-claude-code), [`codex`](/user-guide/skills/bundled/autonomous-ai-agents/autonomous-ai-agents-codex), [`hermes-agent`](/user-guide/skills/bundled/autonomous-ai-agents/autonomous-ai-agents-hermes-agent) | +| Related skills | [`claude-code`](/docs/user-guide/skills/bundled/autonomous-ai-agents/autonomous-ai-agents-claude-code), [`codex`](/docs/user-guide/skills/bundled/autonomous-ai-agents/autonomous-ai-agents-codex), [`hermes-agent`](/docs/user-guide/skills/bundled/autonomous-ai-agents/autonomous-ai-agents-hermes-agent) | ## Reference: full SKILL.md diff --git a/website/docs/user-guide/skills/bundled/creative/creative-architecture-diagram.md b/website/docs/user-guide/skills/bundled/creative/creative-architecture-diagram.md index c8802c6faf2..ad816a370ad 100644 --- a/website/docs/user-guide/skills/bundled/creative/creative-architecture-diagram.md +++ b/website/docs/user-guide/skills/bundled/creative/creative-architecture-diagram.md @@ -21,7 +21,7 @@ Dark-themed SVG architecture/cloud/infra diagrams as HTML. | License | MIT | | Platforms | linux, macos, windows | | Tags | `architecture`, `diagrams`, `SVG`, `HTML`, `visualization`, `infrastructure`, `cloud` | -| Related skills | [`concept-diagrams`](/user-guide/skills/optional/creative/creative-concept-diagrams), [`excalidraw`](/user-guide/skills/bundled/creative/creative-excalidraw) | +| Related skills | [`concept-diagrams`](/docs/user-guide/skills/optional/creative/creative-concept-diagrams), [`excalidraw`](/docs/user-guide/skills/bundled/creative/creative-excalidraw) | ## Reference: full SKILL.md diff --git a/website/docs/user-guide/skills/bundled/creative/creative-ascii-art.md b/website/docs/user-guide/skills/bundled/creative/creative-ascii-art.md index 17737e20dd7..ba08d77c059 100644 --- a/website/docs/user-guide/skills/bundled/creative/creative-ascii-art.md +++ b/website/docs/user-guide/skills/bundled/creative/creative-ascii-art.md @@ -21,7 +21,7 @@ ASCII art: pyfiglet, cowsay, boxes, image-to-ascii. | License | MIT | | Platforms | linux, macos, windows | | Tags | `ASCII`, `Art`, `Banners`, `Creative`, `Unicode`, `Text-Art`, `pyfiglet`, `figlet`, `cowsay`, `boxes` | -| Related skills | [`excalidraw`](/user-guide/skills/bundled/creative/creative-excalidraw) | +| Related skills | [`excalidraw`](/docs/user-guide/skills/bundled/creative/creative-excalidraw) | ## Reference: full SKILL.md diff --git a/website/docs/user-guide/skills/bundled/creative/creative-claude-design.md b/website/docs/user-guide/skills/bundled/creative/creative-claude-design.md index 331db0fa687..bf6f4eafaa3 100644 --- a/website/docs/user-guide/skills/bundled/creative/creative-claude-design.md +++ b/website/docs/user-guide/skills/bundled/creative/creative-claude-design.md @@ -21,7 +21,7 @@ Design one-off HTML artifacts (landing, deck, prototype). | License | MIT | | Platforms | linux, macos, windows | | Tags | `design`, `html`, `prototype`, `ux`, `ui`, `creative`, `artifact`, `deck`, `motion`, `design-system` | -| Related skills | [`design-md`](/user-guide/skills/bundled/creative/creative-design-md), [`popular-web-designs`](/user-guide/skills/bundled/creative/creative-popular-web-designs), [`excalidraw`](/user-guide/skills/bundled/creative/creative-excalidraw), [`architecture-diagram`](/user-guide/skills/bundled/creative/creative-architecture-diagram) | +| Related skills | [`design-md`](/docs/user-guide/skills/bundled/creative/creative-design-md), [`popular-web-designs`](/docs/user-guide/skills/bundled/creative/creative-popular-web-designs), [`excalidraw`](/docs/user-guide/skills/bundled/creative/creative-excalidraw), [`architecture-diagram`](/docs/user-guide/skills/bundled/creative/creative-architecture-diagram) | ## Reference: full SKILL.md diff --git a/website/docs/user-guide/skills/bundled/creative/creative-comfyui.md b/website/docs/user-guide/skills/bundled/creative/creative-comfyui.md index c2f93b89919..38610be8b83 100644 --- a/website/docs/user-guide/skills/bundled/creative/creative-comfyui.md +++ b/website/docs/user-guide/skills/bundled/creative/creative-comfyui.md @@ -21,7 +21,7 @@ Generate images, video, and audio with ComfyUI — install, launch, manage nodes | License | MIT | | Platforms | macos, linux, windows | | Tags | `comfyui`, `image-generation`, `stable-diffusion`, `flux`, `sd3`, `wan-video`, `hunyuan-video`, `creative`, `generative-ai`, `video-generation` | -| Related skills | [`stable-diffusion-image-generation`](/user-guide/skills/optional/mlops/mlops-stable-diffusion), `image_gen` | +| Related skills | [`stable-diffusion-image-generation`](/docs/user-guide/skills/optional/mlops/mlops-stable-diffusion), `image_gen` | ## Reference: full SKILL.md diff --git a/website/docs/user-guide/skills/bundled/creative/creative-design-md.md b/website/docs/user-guide/skills/bundled/creative/creative-design-md.md index 8ee856676ff..a96723ddb7f 100644 --- a/website/docs/user-guide/skills/bundled/creative/creative-design-md.md +++ b/website/docs/user-guide/skills/bundled/creative/creative-design-md.md @@ -21,7 +21,7 @@ Author/validate/export Google's DESIGN.md token spec files. | License | MIT | | Platforms | linux, macos, windows | | Tags | `design`, `design-system`, `tokens`, `ui`, `accessibility`, `wcag`, `tailwind`, `dtcg`, `google` | -| Related skills | [`popular-web-designs`](/user-guide/skills/bundled/creative/creative-popular-web-designs), [`claude-design`](/user-guide/skills/bundled/creative/creative-claude-design), [`excalidraw`](/user-guide/skills/bundled/creative/creative-excalidraw), [`architecture-diagram`](/user-guide/skills/bundled/creative/creative-architecture-diagram) | +| Related skills | [`popular-web-designs`](/docs/user-guide/skills/bundled/creative/creative-popular-web-designs), [`claude-design`](/docs/user-guide/skills/bundled/creative/creative-claude-design), [`excalidraw`](/docs/user-guide/skills/bundled/creative/creative-excalidraw), [`architecture-diagram`](/docs/user-guide/skills/bundled/creative/creative-architecture-diagram) | ## Reference: full SKILL.md diff --git a/website/docs/user-guide/skills/bundled/creative/creative-humanizer.md b/website/docs/user-guide/skills/bundled/creative/creative-humanizer.md index 2f7dea08152..178c2502b47 100644 --- a/website/docs/user-guide/skills/bundled/creative/creative-humanizer.md +++ b/website/docs/user-guide/skills/bundled/creative/creative-humanizer.md @@ -21,7 +21,7 @@ Humanize text: strip AI-isms and add real voice. | License | MIT | | Platforms | linux, macos, windows | | Tags | `writing`, `editing`, `humanize`, `anti-ai-slop`, `voice`, `prose`, `text` | -| Related skills | [`songwriting-and-ai-music`](/user-guide/skills/bundled/creative/creative-songwriting-and-ai-music) | +| Related skills | [`songwriting-and-ai-music`](/docs/user-guide/skills/bundled/creative/creative-songwriting-and-ai-music) | ## Reference: full SKILL.md diff --git a/website/docs/user-guide/skills/bundled/creative/creative-p5js.md b/website/docs/user-guide/skills/bundled/creative/creative-p5js.md index 75643a1ec56..cb175f61801 100644 --- a/website/docs/user-guide/skills/bundled/creative/creative-p5js.md +++ b/website/docs/user-guide/skills/bundled/creative/creative-p5js.md @@ -19,7 +19,7 @@ p5.js sketches: gen art, shaders, interactive, 3D. | Version | `1.0.0` | | Platforms | linux, macos, windows | | Tags | `creative-coding`, `generative-art`, `p5js`, `canvas`, `interactive`, `visualization`, `webgl`, `shaders`, `animation` | -| Related skills | [`ascii-video`](/user-guide/skills/bundled/creative/creative-ascii-video), [`manim-video`](/user-guide/skills/bundled/creative/creative-manim-video), [`excalidraw`](/user-guide/skills/bundled/creative/creative-excalidraw) | +| Related skills | [`ascii-video`](/docs/user-guide/skills/bundled/creative/creative-ascii-video), [`manim-video`](/docs/user-guide/skills/bundled/creative/creative-manim-video), [`excalidraw`](/docs/user-guide/skills/bundled/creative/creative-excalidraw) | ## Reference: full SKILL.md diff --git a/website/docs/user-guide/skills/bundled/creative/creative-pretext.md b/website/docs/user-guide/skills/bundled/creative/creative-pretext.md index 32ccdd89ba4..78ed86c8e61 100644 --- a/website/docs/user-guide/skills/bundled/creative/creative-pretext.md +++ b/website/docs/user-guide/skills/bundled/creative/creative-pretext.md @@ -21,7 +21,7 @@ Use when building creative browser demos with @chenglou/pretext — DOM-free tex | License | MIT | | Platforms | linux, macos, windows | | Tags | `creative-coding`, `typography`, `pretext`, `ascii-art`, `canvas`, `generative`, `text-layout`, `kinetic-typography` | -| Related skills | [`p5js`](/user-guide/skills/bundled/creative/creative-p5js), [`claude-design`](/user-guide/skills/bundled/creative/creative-claude-design), [`excalidraw`](/user-guide/skills/bundled/creative/creative-excalidraw), [`architecture-diagram`](/user-guide/skills/bundled/creative/creative-architecture-diagram) | +| Related skills | [`p5js`](/docs/user-guide/skills/bundled/creative/creative-p5js), [`claude-design`](/docs/user-guide/skills/bundled/creative/creative-claude-design), [`excalidraw`](/docs/user-guide/skills/bundled/creative/creative-excalidraw), [`architecture-diagram`](/docs/user-guide/skills/bundled/creative/creative-architecture-diagram) | ## Reference: full SKILL.md diff --git a/website/docs/user-guide/skills/bundled/creative/creative-sketch.md b/website/docs/user-guide/skills/bundled/creative/creative-sketch.md index 25c3e9fe8d8..05ee5d343e6 100644 --- a/website/docs/user-guide/skills/bundled/creative/creative-sketch.md +++ b/website/docs/user-guide/skills/bundled/creative/creative-sketch.md @@ -21,7 +21,7 @@ Throwaway HTML mockups: 2-3 design variants to compare. | License | MIT | | Platforms | linux, macos, windows | | Tags | `sketch`, `mockup`, `design`, `ui`, `prototype`, `html`, `variants`, `exploration`, `wireframe`, `comparison` | -| Related skills | [`spike`](/user-guide/skills/bundled/software-development/software-development-spike), [`claude-design`](/user-guide/skills/bundled/creative/creative-claude-design), [`popular-web-designs`](/user-guide/skills/bundled/creative/creative-popular-web-designs), [`excalidraw`](/user-guide/skills/bundled/creative/creative-excalidraw) | +| Related skills | [`spike`](/docs/user-guide/skills/bundled/software-development/software-development-spike), [`claude-design`](/docs/user-guide/skills/bundled/creative/creative-claude-design), [`popular-web-designs`](/docs/user-guide/skills/bundled/creative/creative-popular-web-designs), [`excalidraw`](/docs/user-guide/skills/bundled/creative/creative-excalidraw) | ## Reference: full SKILL.md diff --git a/website/docs/user-guide/skills/bundled/creative/creative-touchdesigner-mcp.md b/website/docs/user-guide/skills/bundled/creative/creative-touchdesigner-mcp.md index dac3c7a37b2..2577f1f741c 100644 --- a/website/docs/user-guide/skills/bundled/creative/creative-touchdesigner-mcp.md +++ b/website/docs/user-guide/skills/bundled/creative/creative-touchdesigner-mcp.md @@ -21,7 +21,7 @@ Control a running TouchDesigner instance via twozero MCP — create operators, s | License | MIT | | Platforms | linux, macos, windows | | Tags | `TouchDesigner`, `MCP`, `twozero`, `creative-coding`, `real-time-visuals`, `generative-art`, `audio-reactive`, `VJ`, `installation`, `GLSL` | -| Related skills | [`native-mcp`](/user-guide/skills/bundled/mcp/mcp-native-mcp), [`ascii-video`](/user-guide/skills/bundled/creative/creative-ascii-video), [`manim-video`](/user-guide/skills/bundled/creative/creative-manim-video), `hermes-video` | +| Related skills | [`native-mcp`](/docs/user-guide/skills/bundled/mcp/mcp-native-mcp), [`ascii-video`](/docs/user-guide/skills/bundled/creative/creative-ascii-video), [`manim-video`](/docs/user-guide/skills/bundled/creative/creative-manim-video), `hermes-video` | ## Reference: full SKILL.md diff --git a/website/docs/user-guide/skills/bundled/devops/devops-kanban-orchestrator.md b/website/docs/user-guide/skills/bundled/devops/devops-kanban-orchestrator.md index 0af138f8cca..be60ff79733 100644 --- a/website/docs/user-guide/skills/bundled/devops/devops-kanban-orchestrator.md +++ b/website/docs/user-guide/skills/bundled/devops/devops-kanban-orchestrator.md @@ -19,7 +19,7 @@ Decomposition playbook + anti-temptation rules for an orchestrator profile routi | Version | `3.0.0` | | Platforms | linux, macos, windows | | Tags | `kanban`, `multi-agent`, `orchestration`, `routing` | -| Related skills | [`kanban-worker`](/user-guide/skills/bundled/devops/devops-kanban-worker) | +| Related skills | [`kanban-worker`](/docs/user-guide/skills/bundled/devops/devops-kanban-worker) | ## Reference: full SKILL.md diff --git a/website/docs/user-guide/skills/bundled/devops/devops-kanban-worker.md b/website/docs/user-guide/skills/bundled/devops/devops-kanban-worker.md index b38db49eab7..6312dafbbae 100644 --- a/website/docs/user-guide/skills/bundled/devops/devops-kanban-worker.md +++ b/website/docs/user-guide/skills/bundled/devops/devops-kanban-worker.md @@ -19,7 +19,7 @@ Pitfalls, examples, and edge cases for Hermes Kanban workers. The lifecycle itse | Version | `2.0.0` | | Platforms | linux, macos, windows | | Tags | `kanban`, `multi-agent`, `collaboration`, `workflow`, `pitfalls` | -| Related skills | [`kanban-orchestrator`](/user-guide/skills/bundled/devops/devops-kanban-orchestrator) | +| Related skills | [`kanban-orchestrator`](/docs/user-guide/skills/bundled/devops/devops-kanban-orchestrator) | ## Reference: full SKILL.md @@ -39,7 +39,7 @@ Your workspace kind determines how you should behave inside `$HERMES_KANBAN_WORK |---|---|---| | `scratch` | Fresh tmp dir, yours alone | Read/write freely; it gets GC'd when the task is archived. | | `dir:<path>` | Shared persistent directory | Other runs will read what you write. Treat it like long-lived state. Path is guaranteed absolute (the kernel rejects relative paths). | -| `worktree` | Git worktree at the resolved path | If `.git` doesn't exist, run `git worktree add <path> <branch>` from the main repo first, then cd and work normally. Commit work here. | +| `worktree` | Git worktree at the resolved path | If `.git` doesn't exist, run `git worktree add <path> ${HERMES_KANBAN_BRANCH:-wt/$HERMES_KANBAN_TASK}` from the main repo first, then cd and work normally. Commit work here. | ## Tenant isolation @@ -175,6 +175,13 @@ If you open the task and `kanban_show` returns `runs: [...]` with one or more cl - `outcome: "reclaimed"` + `summary: "task archived..."` — operator archived the task out from under the previous run; you probably shouldn't be running at all, check status carefully. - `outcome: "blocked"` — a previous attempt blocked; the unblock comment should be in the thread by now. +## Notification routing + +You can configure the gateway to receive cross-profile Kanban task notifications by adding `notification_sources` to `~/.hermes/config.yaml`. +- `notification_sources: ['*']` accepts subscriptions from all profiles. +- `notification_sources: ['default', 'zilor-ppt']` or `"default,zilor-ppt"` restricts subscriptions to specified profiles. +- Omitting the key keeps the default behavior (profile isolation). + ## Do NOT - Call `delegate_task` as a substitute for `kanban_create`. `delegate_task` is for short reasoning subtasks inside YOUR run; `kanban_create` is for cross-agent handoffs that outlive one API loop. diff --git a/website/docs/user-guide/skills/bundled/github/github-codebase-inspection.md b/website/docs/user-guide/skills/bundled/github/github-codebase-inspection.md index f039f9578c7..f727c1cd311 100644 --- a/website/docs/user-guide/skills/bundled/github/github-codebase-inspection.md +++ b/website/docs/user-guide/skills/bundled/github/github-codebase-inspection.md @@ -21,7 +21,7 @@ Inspect codebases w/ pygount: LOC, languages, ratios. | License | MIT | | Platforms | linux, macos, windows | | Tags | `LOC`, `Code Analysis`, `pygount`, `Codebase`, `Metrics`, `Repository` | -| Related skills | [`github-repo-management`](/user-guide/skills/bundled/github/github-github-repo-management) | +| Related skills | [`github-repo-management`](/docs/user-guide/skills/bundled/github/github-github-repo-management) | ## Reference: full SKILL.md diff --git a/website/docs/user-guide/skills/bundled/github/github-github-auth.md b/website/docs/user-guide/skills/bundled/github/github-github-auth.md index ef38b9ba45d..92b9d9f6690 100644 --- a/website/docs/user-guide/skills/bundled/github/github-github-auth.md +++ b/website/docs/user-guide/skills/bundled/github/github-github-auth.md @@ -21,7 +21,7 @@ GitHub auth setup: HTTPS tokens, SSH keys, gh CLI login. | License | MIT | | Platforms | linux, macos, windows | | Tags | `GitHub`, `Authentication`, `Git`, `gh-cli`, `SSH`, `Setup` | -| Related skills | [`github-pr-workflow`](/user-guide/skills/bundled/github/github-github-pr-workflow), [`github-code-review`](/user-guide/skills/bundled/github/github-github-code-review), [`github-issues`](/user-guide/skills/bundled/github/github-github-issues), [`github-repo-management`](/user-guide/skills/bundled/github/github-github-repo-management) | +| Related skills | [`github-pr-workflow`](/docs/user-guide/skills/bundled/github/github-github-pr-workflow), [`github-code-review`](/docs/user-guide/skills/bundled/github/github-github-code-review), [`github-issues`](/docs/user-guide/skills/bundled/github/github-github-issues), [`github-repo-management`](/docs/user-guide/skills/bundled/github/github-github-repo-management) | ## Reference: full SKILL.md diff --git a/website/docs/user-guide/skills/bundled/github/github-github-code-review.md b/website/docs/user-guide/skills/bundled/github/github-github-code-review.md index b16e2a7aa5d..56e8fa97ad2 100644 --- a/website/docs/user-guide/skills/bundled/github/github-github-code-review.md +++ b/website/docs/user-guide/skills/bundled/github/github-github-code-review.md @@ -21,7 +21,7 @@ Review PRs: diffs, inline comments via gh or REST. | License | MIT | | Platforms | linux, macos, windows | | Tags | `GitHub`, `Code-Review`, `Pull-Requests`, `Git`, `Quality` | -| Related skills | [`github-auth`](/user-guide/skills/bundled/github/github-github-auth), [`github-pr-workflow`](/user-guide/skills/bundled/github/github-github-pr-workflow) | +| Related skills | [`github-auth`](/docs/user-guide/skills/bundled/github/github-github-auth), [`github-pr-workflow`](/docs/user-guide/skills/bundled/github/github-github-pr-workflow) | ## Reference: full SKILL.md diff --git a/website/docs/user-guide/skills/bundled/github/github-github-issues.md b/website/docs/user-guide/skills/bundled/github/github-github-issues.md index bd8af680af3..6f99685d71a 100644 --- a/website/docs/user-guide/skills/bundled/github/github-github-issues.md +++ b/website/docs/user-guide/skills/bundled/github/github-github-issues.md @@ -21,7 +21,7 @@ Create, triage, label, assign GitHub issues via gh or REST. | License | MIT | | Platforms | linux, macos, windows | | Tags | `GitHub`, `Issues`, `Project-Management`, `Bug-Tracking`, `Triage` | -| Related skills | [`github-auth`](/user-guide/skills/bundled/github/github-github-auth), [`github-pr-workflow`](/user-guide/skills/bundled/github/github-github-pr-workflow) | +| Related skills | [`github-auth`](/docs/user-guide/skills/bundled/github/github-github-auth), [`github-pr-workflow`](/docs/user-guide/skills/bundled/github/github-github-pr-workflow) | ## Reference: full SKILL.md diff --git a/website/docs/user-guide/skills/bundled/github/github-github-pr-workflow.md b/website/docs/user-guide/skills/bundled/github/github-github-pr-workflow.md index 2341829c326..48aa4ea9fff 100644 --- a/website/docs/user-guide/skills/bundled/github/github-github-pr-workflow.md +++ b/website/docs/user-guide/skills/bundled/github/github-github-pr-workflow.md @@ -21,7 +21,7 @@ GitHub PR lifecycle: branch, commit, open, CI, merge. | License | MIT | | Platforms | linux, macos, windows | | Tags | `GitHub`, `Pull-Requests`, `CI/CD`, `Git`, `Automation`, `Merge` | -| Related skills | [`github-auth`](/user-guide/skills/bundled/github/github-github-auth), [`github-code-review`](/user-guide/skills/bundled/github/github-github-code-review) | +| Related skills | [`github-auth`](/docs/user-guide/skills/bundled/github/github-github-auth), [`github-code-review`](/docs/user-guide/skills/bundled/github/github-github-code-review) | ## Reference: full SKILL.md diff --git a/website/docs/user-guide/skills/bundled/github/github-github-repo-management.md b/website/docs/user-guide/skills/bundled/github/github-github-repo-management.md index abdd6f4c913..0921e3dbccc 100644 --- a/website/docs/user-guide/skills/bundled/github/github-github-repo-management.md +++ b/website/docs/user-guide/skills/bundled/github/github-github-repo-management.md @@ -21,7 +21,7 @@ Clone/create/fork repos; manage remotes, releases. | License | MIT | | Platforms | linux, macos, windows | | Tags | `GitHub`, `Repositories`, `Git`, `Releases`, `Secrets`, `Configuration` | -| Related skills | [`github-auth`](/user-guide/skills/bundled/github/github-github-auth), [`github-pr-workflow`](/user-guide/skills/bundled/github/github-github-pr-workflow), [`github-issues`](/user-guide/skills/bundled/github/github-github-issues) | +| Related skills | [`github-auth`](/docs/user-guide/skills/bundled/github/github-github-auth), [`github-pr-workflow`](/docs/user-guide/skills/bundled/github/github-github-pr-workflow), [`github-issues`](/docs/user-guide/skills/bundled/github/github-github-issues) | ## Reference: full SKILL.md diff --git a/website/docs/user-guide/skills/bundled/mcp/mcp-native-mcp.md b/website/docs/user-guide/skills/bundled/mcp/mcp-native-mcp.md index 843529acf6e..eeeb44d6a4d 100644 --- a/website/docs/user-guide/skills/bundled/mcp/mcp-native-mcp.md +++ b/website/docs/user-guide/skills/bundled/mcp/mcp-native-mcp.md @@ -21,7 +21,7 @@ MCP client: connect servers, register tools (stdio/HTTP). | License | MIT | | Platforms | linux, macos, windows | | Tags | `MCP`, `Tools`, `Integrations` | -| Related skills | [`mcporter`](/user-guide/skills/optional/mcp/mcp-mcporter) | +| Related skills | [`mcporter`](/docs/user-guide/skills/optional/mcp/mcp-mcporter) | ## Reference: full SKILL.md diff --git a/website/docs/user-guide/skills/bundled/media/media-spotify.md b/website/docs/user-guide/skills/bundled/media/media-spotify.md index e0b67cc4f67..7df9764f080 100644 --- a/website/docs/user-guide/skills/bundled/media/media-spotify.md +++ b/website/docs/user-guide/skills/bundled/media/media-spotify.md @@ -21,7 +21,7 @@ Spotify: play, search, queue, manage playlists and devices. | License | MIT | | Platforms | linux, macos, windows | | Tags | `spotify`, `music`, `playback`, `playlists`, `media` | -| Related skills | [`gif-search`](/user-guide/skills/bundled/media/media-gif-search) | +| Related skills | [`gif-search`](/docs/user-guide/skills/bundled/media/media-gif-search) | ## Reference: full SKILL.md diff --git a/website/docs/user-guide/skills/bundled/mlops/mlops-inference-obliteratus.md b/website/docs/user-guide/skills/bundled/mlops/mlops-inference-obliteratus.md index 5ab8cd7b2de..3ac4e0ff7ad 100644 --- a/website/docs/user-guide/skills/bundled/mlops/mlops-inference-obliteratus.md +++ b/website/docs/user-guide/skills/bundled/mlops/mlops-inference-obliteratus.md @@ -22,7 +22,7 @@ OBLITERATUS: abliterate LLM refusals (diff-in-means). | Dependencies | `obliteratus`, `torch`, `transformers`, `bitsandbytes`, `accelerate`, `safetensors` | | Platforms | linux, macos | | Tags | `Abliteration`, `Uncensoring`, `Refusal-Removal`, `LLM`, `Weight-Projection`, `SVD`, `Mechanistic-Interpretability`, `HuggingFace`, `Model-Surgery` | -| Related skills | `vllm`, `gguf`, [`huggingface-tokenizers`](/user-guide/skills/optional/mlops/mlops-huggingface-tokenizers) | +| Related skills | `vllm`, `gguf`, [`huggingface-tokenizers`](/docs/user-guide/skills/optional/mlops/mlops-huggingface-tokenizers) | ## Reference: full SKILL.md diff --git a/website/docs/user-guide/skills/bundled/productivity/productivity-google-workspace.md b/website/docs/user-guide/skills/bundled/productivity/productivity-google-workspace.md index fc8e85742b5..9fc82ced642 100644 --- a/website/docs/user-guide/skills/bundled/productivity/productivity-google-workspace.md +++ b/website/docs/user-guide/skills/bundled/productivity/productivity-google-workspace.md @@ -21,7 +21,7 @@ Gmail, Calendar, Drive, Docs, Sheets via gws CLI or Python. | License | MIT | | Platforms | linux, macos, windows | | Tags | `Google`, `Gmail`, `Calendar`, `Drive`, `Sheets`, `Docs`, `Contacts`, `Email`, `OAuth` | -| Related skills | [`himalaya`](/user-guide/skills/bundled/email/email-himalaya) | +| Related skills | [`himalaya`](/docs/user-guide/skills/bundled/email/email-himalaya) | ## Reference: full SKILL.md diff --git a/website/docs/user-guide/skills/bundled/productivity/productivity-ocr-and-documents.md b/website/docs/user-guide/skills/bundled/productivity/productivity-ocr-and-documents.md index 93525e63f32..b41c8601022 100644 --- a/website/docs/user-guide/skills/bundled/productivity/productivity-ocr-and-documents.md +++ b/website/docs/user-guide/skills/bundled/productivity/productivity-ocr-and-documents.md @@ -21,7 +21,7 @@ Extract text from PDFs/scans (pymupdf, marker-pdf). | License | MIT | | Platforms | linux, macos, windows | | Tags | `PDF`, `Documents`, `Research`, `Arxiv`, `Text-Extraction`, `OCR` | -| Related skills | [`powerpoint`](/user-guide/skills/bundled/productivity/productivity-powerpoint) | +| Related skills | [`powerpoint`](/docs/user-guide/skills/bundled/productivity/productivity-powerpoint) | ## Reference: full SKILL.md diff --git a/website/docs/user-guide/skills/bundled/red-teaming/red-teaming-godmode.md b/website/docs/user-guide/skills/bundled/red-teaming/red-teaming-godmode.md index 95544c67b74..cdd34ca3946 100644 --- a/website/docs/user-guide/skills/bundled/red-teaming/red-teaming-godmode.md +++ b/website/docs/user-guide/skills/bundled/red-teaming/red-teaming-godmode.md @@ -21,7 +21,7 @@ Jailbreak LLMs: Parseltongue, GODMODE, ULTRAPLINIAN. | License | MIT | | Platforms | linux, macos, windows | | Tags | `jailbreak`, `red-teaming`, `G0DM0D3`, `Parseltongue`, `GODMODE`, `uncensoring`, `safety-bypass`, `prompt-engineering`, `L1B3RT4S` | -| Related skills | [`obliteratus`](/user-guide/skills/bundled/mlops/mlops-inference-obliteratus) | +| Related skills | [`obliteratus`](/docs/user-guide/skills/bundled/mlops/mlops-inference-obliteratus) | ## Reference: full SKILL.md diff --git a/website/docs/user-guide/skills/bundled/research/research-arxiv.md b/website/docs/user-guide/skills/bundled/research/research-arxiv.md index 0532089c144..4425858d747 100644 --- a/website/docs/user-guide/skills/bundled/research/research-arxiv.md +++ b/website/docs/user-guide/skills/bundled/research/research-arxiv.md @@ -21,7 +21,7 @@ Search arXiv papers by keyword, author, category, or ID. | License | MIT | | Platforms | linux, macos, windows | | Tags | `Research`, `Arxiv`, `Papers`, `Academic`, `Science`, `API` | -| Related skills | [`ocr-and-documents`](/user-guide/skills/bundled/productivity/productivity-ocr-and-documents) | +| Related skills | [`ocr-and-documents`](/docs/user-guide/skills/bundled/productivity/productivity-ocr-and-documents) | ## Reference: full SKILL.md diff --git a/website/docs/user-guide/skills/bundled/research/research-llm-wiki.md b/website/docs/user-guide/skills/bundled/research/research-llm-wiki.md index 793d3438901..419c7cd7cb2 100644 --- a/website/docs/user-guide/skills/bundled/research/research-llm-wiki.md +++ b/website/docs/user-guide/skills/bundled/research/research-llm-wiki.md @@ -21,7 +21,7 @@ Karpathy's LLM Wiki: build/query interlinked markdown KB. | License | MIT | | Platforms | linux, macos, windows | | Tags | `wiki`, `knowledge-base`, `research`, `notes`, `markdown`, `rag-alternative` | -| Related skills | [`obsidian`](/user-guide/skills/bundled/note-taking/note-taking-obsidian), [`arxiv`](/user-guide/skills/bundled/research/research-arxiv) | +| Related skills | [`obsidian`](/docs/user-guide/skills/bundled/note-taking/note-taking-obsidian), [`arxiv`](/docs/user-guide/skills/bundled/research/research-arxiv) | ## Reference: full SKILL.md diff --git a/website/docs/user-guide/skills/bundled/research/research-research-paper-writing.md b/website/docs/user-guide/skills/bundled/research/research-research-paper-writing.md index 1ecefcce1d2..9dc216ebac7 100644 --- a/website/docs/user-guide/skills/bundled/research/research-research-paper-writing.md +++ b/website/docs/user-guide/skills/bundled/research/research-research-paper-writing.md @@ -22,7 +22,7 @@ Write ML papers for NeurIPS/ICML/ICLR: design→submit. | Dependencies | `semanticscholar`, `arxiv`, `habanero`, `requests`, `scipy`, `numpy`, `matplotlib`, `SciencePlots` | | Platforms | linux, macos | | Tags | `Research`, `Paper Writing`, `Experiments`, `ML`, `AI`, `NeurIPS`, `ICML`, `ICLR`, `ACL`, `AAAI`, `COLM`, `LaTeX`, `Citations`, `Statistical Analysis` | -| Related skills | [`arxiv`](/user-guide/skills/bundled/research/research-arxiv), `ml-paper-writing`, [`subagent-driven-development`](/user-guide/skills/bundled/software-development/software-development-subagent-driven-development), [`plan`](/user-guide/skills/bundled/software-development/software-development-plan) | +| Related skills | [`arxiv`](/docs/user-guide/skills/bundled/research/research-arxiv), `ml-paper-writing`, [`subagent-driven-development`](/docs/user-guide/skills/bundled/software-development/software-development-subagent-driven-development), [`plan`](/docs/user-guide/skills/bundled/software-development/software-development-plan) | ## Reference: full SKILL.md diff --git a/website/docs/user-guide/skills/bundled/software-development/software-development-debugging-hermes-tui-commands.md b/website/docs/user-guide/skills/bundled/software-development/software-development-debugging-hermes-tui-commands.md index 86ebd065fa9..00c3388e3a4 100644 --- a/website/docs/user-guide/skills/bundled/software-development/software-development-debugging-hermes-tui-commands.md +++ b/website/docs/user-guide/skills/bundled/software-development/software-development-debugging-hermes-tui-commands.md @@ -21,7 +21,7 @@ Debug Hermes TUI slash commands: Python, gateway, Ink UI. | License | MIT | | Platforms | linux, macos, windows | | Tags | `debugging`, `hermes-agent`, `tui`, `slash-commands`, `typescript`, `python` | -| Related skills | [`python-debugpy`](/user-guide/skills/bundled/software-development/software-development-python-debugpy), [`node-inspect-debugger`](/user-guide/skills/bundled/software-development/software-development-node-inspect-debugger), [`systematic-debugging`](/user-guide/skills/bundled/software-development/software-development-systematic-debugging) | +| Related skills | [`python-debugpy`](/docs/user-guide/skills/bundled/software-development/software-development-python-debugpy), [`node-inspect-debugger`](/docs/user-guide/skills/bundled/software-development/software-development-node-inspect-debugger), [`systematic-debugging`](/docs/user-guide/skills/bundled/software-development/software-development-systematic-debugging) | ## Reference: full SKILL.md diff --git a/website/docs/user-guide/skills/bundled/software-development/software-development-hermes-agent-skill-authoring.md b/website/docs/user-guide/skills/bundled/software-development/software-development-hermes-agent-skill-authoring.md index 82653d1535f..dcca5752b1a 100644 --- a/website/docs/user-guide/skills/bundled/software-development/software-development-hermes-agent-skill-authoring.md +++ b/website/docs/user-guide/skills/bundled/software-development/software-development-hermes-agent-skill-authoring.md @@ -21,7 +21,7 @@ Author in-repo SKILL.md: frontmatter, validator, structure. | License | MIT | | Platforms | linux, macos, windows | | Tags | `skills`, `authoring`, `hermes-agent`, `conventions`, `skill-md` | -| Related skills | [`writing-plans`](/user-guide/skills/bundled/software-development/software-development-writing-plans), [`requesting-code-review`](/user-guide/skills/bundled/software-development/software-development-requesting-code-review) | +| Related skills | [`writing-plans`](/docs/user-guide/skills/bundled/software-development/software-development-writing-plans), [`requesting-code-review`](/docs/user-guide/skills/bundled/software-development/software-development-requesting-code-review) | ## Reference: full SKILL.md diff --git a/website/docs/user-guide/skills/bundled/software-development/software-development-hermes-s6-container-supervision.md b/website/docs/user-guide/skills/bundled/software-development/software-development-hermes-s6-container-supervision.md new file mode 100644 index 00000000000..4f35a9a38fc --- /dev/null +++ b/website/docs/user-guide/skills/bundled/software-development/software-development-hermes-s6-container-supervision.md @@ -0,0 +1,196 @@ +--- +title: "Hermes S6 Container Supervision" +sidebar_label: "Hermes S6 Container Supervision" +description: "Modify, debug, or extend the s6-overlay supervision tree inside the Hermes Agent Docker image — adding new services, debugging profile gateways, understandin..." +--- + +{/* This page is auto-generated from the skill's SKILL.md by website/scripts/generate-skill-docs.py. Edit the source SKILL.md, not this page. */} + +# Hermes S6 Container Supervision + +Modify, debug, or extend the s6-overlay supervision tree inside the Hermes Agent Docker image — adding new services, debugging profile gateways, understanding the Architecture B main-program pattern. + +## Skill metadata + +| | | +|---|---| +| Source | Bundled (installed by default) | +| Path | `skills/software-development/hermes-s6-container-supervision` | +| Version | `1.0.0` | +| Author | Hermes Agent | +| License | MIT | +| Tags | `docker`, `s6`, `supervision`, `gateway`, `profiles` | +| Related skills | [`hermes-agent`](/docs/user-guide/skills/bundled/autonomous-ai-agents/autonomous-ai-agents-hermes-agent), `hermes-agent-dev` | + +## Reference: full SKILL.md + +:::info +The following is the complete skill definition that Hermes loads when this skill is triggered. This is what the agent sees as instructions when the skill is active. +::: + +# Hermes s6-overlay Container Supervision + +## When to use this skill + +Load this skill when you're working on: +- Adding or removing a static service in the Hermes Docker image (something that should be supervised at every container start, like the dashboard) +- Diagnosing why a per-profile gateway isn't starting, restarting, or surviving `docker restart` +- Understanding why the container's CMD is `/opt/hermes/docker/main-wrapper.sh` and how leading-dash args reach the user's program +- Modifying `cont-init.d` boot scripts (UID remap, volume seeding, profile reconciliation) +- Changing the rendered run-script for per-profile gateways (Phase 4) + +If you're just running the Hermes Agent and want to use Docker, see `website/docs/user-guide/docker.md` instead. + +## Architecture at a glance + +<!-- ascii-guard-ignore --> +``` +/init ← PID 1 (s6-overlay v3.2.3.0) +├── cont-init.d ← oneshot setup, runs as root +│ ├── 01-hermes-setup ← docker/stage2-hook.sh +│ │ ├── UID/GID remap +│ │ ├── chown /opt/data +│ │ ├── chown /opt/data/profiles (every boot) +│ │ ├── seed .env / config.yaml / SOUL.md +│ │ └── skills_sync.py +│ └── 02-reconcile-profiles ← hermes_cli.container_boot +│ ├── chown /run/service (hermes-writable for runtime register) +│ └── walk $HERMES_HOME/profiles/<name>/gateway_state.json +│ → recreate /run/service/gateway-<name>/ +│ → auto-start only those with prior_state == "running" +│ +├── s6-rc.d (static services, in /etc/s6-overlay/s6-rc.d/) +│ ├── main-hermes/run ← exec sleep infinity (no-op slot) +│ └── dashboard/run ← if HERMES_DASHBOARD=1, runs `hermes dashboard` +│ +├── /run/service (s6-svscan watches; tmpfs) +│ ├── gateway-coder/ ← runtime-registered per-profile +│ │ ├── type ("longrun") +│ │ ├── run ("#!/command/with-contenv sh ... exec s6-setuidgid hermes hermes -p coder gateway run") +│ │ ├── down (marker — present means "registered but don't auto-start") +│ │ └── log/run (s6-log → $HERMES_HOME/logs/gateways/coder/current) +│ └── ... +│ +└── CMD ("main program") ← /opt/hermes/docker/main-wrapper.sh + └── routes user args: bare exec | hermes subcommand | hermes (no args) + — exec'd by /init with stdin/stdout/stderr inherited (TTY for --tui) +``` +<!-- ascii-guard-ignore-end --> + +## Key files + +| Path | Role | +|---|---| +| `Dockerfile` | s6-overlay install + cont-init.d wiring + `ENTRYPOINT ["/init", "/opt/hermes/docker/main-wrapper.sh"]` | +| `docker/stage2-hook.sh` | The "old entrypoint logic" — UID remap, chown, seed, skills sync. Runs as cont-init.d/01-hermes-setup. | +| `docker/cont-init.d/02-reconcile-profiles` | Calls `hermes_cli.container_boot` on every boot to restore profile gateway slots from the persistent volume. | +| `docker/main-wrapper.sh` | The container's CMD. Routes user args, drops to hermes via `s6-setuidgid`, exec's the chosen program. | +| `docker/s6-rc.d/main-hermes/run` | No-op `sleep infinity` — slot exists so the s6-rc user bundle is valid; main hermes runs as the CMD, not as a supervised service. | +| `docker/s6-rc.d/dashboard/run` | Conditional service — `exec sleep infinity` unless `HERMES_DASHBOARD` is truthy. | +| `docker/entrypoint.sh` | Back-compat shim that `exec`s the stage2 hook. External scripts that hard-coded the old entrypoint path still work. | +| `hermes_cli/service_manager.py` | `S6ServiceManager`: `register_profile_gateway`, `unregister_profile_gateway`, `start/stop/restart/is_running`, `list_profile_gateways`. | +| `hermes_cli/container_boot.py` | `reconcile_profile_gateways()` — walks persistent profiles, regenerates s6 slots, emits `container-boot.log`. | +| `hermes_cli/gateway.py::_dispatch_via_service_manager_if_s6` | Intercepts `hermes gateway start/stop/restart` and routes to s6 when running in a container. | + +## Why Architecture B (CMD as main program, not s6-supervised) + +The original plan (v1–v3) called for main hermes to run as a supervised s6-rc service. Two real s6-overlay v3 mechanics blocked that: + +1. **cont-init.d scripts receive no CMD args** — so the stage2 hook can't parse `docker run <image> chat -q "hi"` to set `HERMES_ARGS` for a service `run` script to consume. +2. **`/run/s6/basedir/bin/halt` does NOT propagate the exit code** written to `/run/s6-linux-init-container-results/exitcode`. Containers always exit 143 (SIGTERM) regardless. Confirmed by skarnet (s6 author) in [issue #477](https://github.com/just-containers/s6-overlay/issues/477): _"if you want a container shutdown, you need to either have your CMD exit, or, if you have no CMD, write the container exit code you want then call halt"_. + +So we use the s6-overlay-native CMD pattern: `ENTRYPOINT ["/init", "/opt/hermes/docker/main-wrapper.sh"]`. /init prepends the wrapper to user args automatically — so `docker run <image> --version` becomes `/init main-wrapper.sh --version`, and `--version` doesn't get intercepted by /init's POSIX shell. The wrapper drops to hermes via `s6-setuidgid`, then exec's the chosen program. The program's exit code becomes the container exit code, exactly matching the pre-s6 tini contract. + +Trade-off: main hermes is unsupervised under s6. That exactly matches its behavior under tini (the pre-s6 image). Dashboard supervision is the only **new** guarantee — and per-profile gateways under `/run/service/` get full supervision. + +## Quick recipes + +### Verify s6 is PID 1 in a running container + +```sh +docker exec <c> sh -c 'cat /proc/1/comm; readlink /proc/1/exe' +# Expect: s6-svscan or init / /package/admin/s6/.../s6-svscan +``` + +### Inspect a profile gateway service + +```sh +# /command/ isn't on docker-exec PATH — use absolute path +docker exec <c> /command/s6-svstat /run/service/gateway-<name> +# "up (pid …) … seconds" → running +# "down (exitcode N) … seconds, normally up, want up, …" → s6 wants it up but the process keeps exiting (crash loop) +# "down … normally up, ready …" → user stopped it +``` + +### Bring a service up/down manually + +```sh +docker exec <c> /command/s6-svc -u /run/service/gateway-<name> # up +docker exec <c> /command/s6-svc -d /run/service/gateway-<name> # down +docker exec <c> /command/s6-svc -t /run/service/gateway-<name> # SIGTERM (restart) +``` + +### Watch the cont-init reconciler log + +```sh +docker exec <c> tail -n 50 /opt/data/logs/container-boot.log +# 2026-05-21T06:18:05+0000 profile=coder prior_state=running action=started +# 2026-05-21T06:18:05+0000 profile=writer prior_state=stopped action=registered +``` + +### Add a new static service + +1. Create `docker/s6-rc.d/<name>/type` with `longrun\n` and `docker/s6-rc.d/<name>/run` (use `#!/command/with-contenv sh` + `# shellcheck shell=sh`). +2. Drop to hermes via `s6-setuidgid hermes` at the top of run (unless you specifically need root). +3. Create empty `docker/s6-rc.d/<name>/dependencies.d/base` so it waits for the base bundle. +4. Create empty `docker/s6-rc.d/user/contents.d/<name>` so it joins the user bundle. +5. The `COPY docker/s6-rc.d/` in the Dockerfile picks it up automatically — no other changes. + +### Change the per-profile gateway run command + +Edit `S6ServiceManager._render_run_script` in `hermes_cli/service_manager.py`. The function is also called by `hermes_cli/container_boot.py::_register_service` during boot reconciliation, so it's the single source of truth. Update the corresponding assertion in `tests/hermes_cli/test_service_manager.py::test_s6_register_creates_service_dir_and_triggers_scan`. + +### Run the docker test harness + +```sh +docker build -t hermes-agent-harness:latest . +HERMES_TEST_IMAGE=hermes-agent-harness:latest scripts/run_tests.sh tests/docker/ -v +# Expect 19 passed, 0 xfailed against the s6 image +``` + +The harness lives in `tests/docker/` and skips when Docker isn't available. The per-test timeout is bumped to 180s (see `tests/docker/conftest.py`). + +## Common pitfalls + +### "command not found" via `docker exec` + +`/command/` (where s6-overlay puts its binaries) is on PATH only for processes spawned by the supervision tree — services, cont-init.d, main-wrapper.sh. `docker exec <c> s6-svstat …` will fail with "command not found"; always use the absolute path `/command/s6-svstat`. The `hermes` binary works because the Dockerfile adds `/opt/hermes/.venv/bin` to the runtime `ENV PATH`. + +### Profile directory ownership + +The cont-init reconciler runs as hermes (`s6-setuidgid hermes` in `02-reconcile-profiles`). If a profile dir ends up root-owned (e.g. because `docker exec <c> hermes profile create …` ran as root by default), the reconciler can't read SOUL.md and fails with `PermissionError`. Mitigation: `stage2-hook.sh` chowns `$HERMES_HOME/profiles` to hermes on **every** boot, idempotently. Don't remove that block. + +### Files written by `docker exec` are root-owned + +`docker exec` defaults to root. Either pass `--user hermes` or rely on the stage2 chown sweep next reboot. Don't write files under `$HERMES_HOME/profiles/<name>/` as root manually — the next reconcile pass will sweep them but in-flight operations may hit perm errors. + +### Service slot exists but s6-svstat says "s6-supervise not running" + +The service directory is on tmpfs and was wiped on container restart. Either the cont-init reconciler hasn't run yet (give it a moment after `docker restart`) or it failed. Check `docker logs <c> | grep '02-reconcile'`. + +### Gateway starts then immediately exits (`down (exitcode 1)` in svstat) + +Most likely the profile has no model or auth configured. The service slot is correct — the gateway itself is unconfigured. Run `hermes -p <profile> setup` first. The s6 supervisor will keep restarting it; that's the desired behavior (when you fix the config, the next attempt succeeds and stays up). + +### Reconciler skipped a profile + +The reconciler keys on the **presence of `SOUL.md`** as the "real profile" marker. `hermes profile create` always seeds it. If a profile dir is missing SOUL.md (stray directory, partial restore, backup-in-progress), the reconciler skips it intentionally. Add a `SOUL.md` (even empty) to opt back in. + +### "Help, the container exits 143!" + +Check whether something is invoking `s6-svscanctl -t` or `/run/s6/basedir/bin/halt` — both cause /init to begin stage 3 shutdown but return 143 (SIGTERM) rather than the desired exit code. This was the Phase 2 architecture pivot from A to B. For container shutdown with a real exit code, you must let the CMD (main-wrapper.sh) exit normally; do **not** try to control exit from a finish script. + +## Related skills + +- `hermes-agent-dev`: General hermes-agent codebase navigation +- `hermes-tool-quirks`: Specific Hermes-tool workarounds (sed/grep/etc.) — load when debugging the s6 stack's interaction with hermes built-in tools. diff --git a/website/docs/user-guide/skills/bundled/software-development/software-development-node-inspect-debugger.md b/website/docs/user-guide/skills/bundled/software-development/software-development-node-inspect-debugger.md index 273ac492353..deddf5dafdb 100644 --- a/website/docs/user-guide/skills/bundled/software-development/software-development-node-inspect-debugger.md +++ b/website/docs/user-guide/skills/bundled/software-development/software-development-node-inspect-debugger.md @@ -21,7 +21,7 @@ Debug Node.js via --inspect + Chrome DevTools Protocol CLI. | License | MIT | | Platforms | linux, macos, windows | | Tags | `debugging`, `nodejs`, `node-inspect`, `cdp`, `breakpoints`, `ui-tui` | -| Related skills | [`systematic-debugging`](/user-guide/skills/bundled/software-development/software-development-systematic-debugging), [`python-debugpy`](/user-guide/skills/bundled/software-development/software-development-python-debugpy), [`debugging-hermes-tui-commands`](/user-guide/skills/bundled/software-development/software-development-debugging-hermes-tui-commands) | +| Related skills | [`systematic-debugging`](/docs/user-guide/skills/bundled/software-development/software-development-systematic-debugging), [`python-debugpy`](/docs/user-guide/skills/bundled/software-development/software-development-python-debugpy), [`debugging-hermes-tui-commands`](/docs/user-guide/skills/bundled/software-development/software-development-debugging-hermes-tui-commands) | ## Reference: full SKILL.md diff --git a/website/docs/user-guide/skills/bundled/software-development/software-development-plan.md b/website/docs/user-guide/skills/bundled/software-development/software-development-plan.md index 96c18627a5e..254f7bc4f30 100644 --- a/website/docs/user-guide/skills/bundled/software-development/software-development-plan.md +++ b/website/docs/user-guide/skills/bundled/software-development/software-development-plan.md @@ -21,7 +21,7 @@ Plan mode: write markdown plan to .hermes/plans/, no exec. | License | MIT | | Platforms | linux, macos, windows | | Tags | `planning`, `plan-mode`, `implementation`, `workflow` | -| Related skills | [`writing-plans`](/user-guide/skills/bundled/software-development/software-development-writing-plans), [`subagent-driven-development`](/user-guide/skills/bundled/software-development/software-development-subagent-driven-development) | +| Related skills | [`writing-plans`](/docs/user-guide/skills/bundled/software-development/software-development-writing-plans), [`subagent-driven-development`](/docs/user-guide/skills/bundled/software-development/software-development-subagent-driven-development) | ## Reference: full SKILL.md diff --git a/website/docs/user-guide/skills/bundled/software-development/software-development-python-debugpy.md b/website/docs/user-guide/skills/bundled/software-development/software-development-python-debugpy.md index 5826404a120..0524b1f3ab9 100644 --- a/website/docs/user-guide/skills/bundled/software-development/software-development-python-debugpy.md +++ b/website/docs/user-guide/skills/bundled/software-development/software-development-python-debugpy.md @@ -21,7 +21,7 @@ Debug Python: pdb REPL + debugpy remote (DAP). | License | MIT | | Platforms | linux, macos | | Tags | `debugging`, `python`, `pdb`, `debugpy`, `breakpoints`, `dap`, `post-mortem` | -| Related skills | [`systematic-debugging`](/user-guide/skills/bundled/software-development/software-development-systematic-debugging), [`node-inspect-debugger`](/user-guide/skills/bundled/software-development/software-development-node-inspect-debugger), [`debugging-hermes-tui-commands`](/user-guide/skills/bundled/software-development/software-development-debugging-hermes-tui-commands) | +| Related skills | [`systematic-debugging`](/docs/user-guide/skills/bundled/software-development/software-development-systematic-debugging), [`node-inspect-debugger`](/docs/user-guide/skills/bundled/software-development/software-development-node-inspect-debugger), [`debugging-hermes-tui-commands`](/docs/user-guide/skills/bundled/software-development/software-development-debugging-hermes-tui-commands) | ## Reference: full SKILL.md diff --git a/website/docs/user-guide/skills/bundled/software-development/software-development-requesting-code-review.md b/website/docs/user-guide/skills/bundled/software-development/software-development-requesting-code-review.md index f01bb9a0277..30a0be6613d 100644 --- a/website/docs/user-guide/skills/bundled/software-development/software-development-requesting-code-review.md +++ b/website/docs/user-guide/skills/bundled/software-development/software-development-requesting-code-review.md @@ -21,7 +21,7 @@ Pre-commit review: security scan, quality gates, auto-fix. | License | MIT | | Platforms | linux, macos, windows | | Tags | `code-review`, `security`, `verification`, `quality`, `pre-commit`, `auto-fix` | -| Related skills | [`subagent-driven-development`](/user-guide/skills/bundled/software-development/software-development-subagent-driven-development), [`writing-plans`](/user-guide/skills/bundled/software-development/software-development-writing-plans), [`test-driven-development`](/user-guide/skills/bundled/software-development/software-development-test-driven-development), [`github-code-review`](/user-guide/skills/bundled/github/github-github-code-review) | +| Related skills | [`subagent-driven-development`](/docs/user-guide/skills/bundled/software-development/software-development-subagent-driven-development), [`writing-plans`](/docs/user-guide/skills/bundled/software-development/software-development-writing-plans), [`test-driven-development`](/docs/user-guide/skills/bundled/software-development/software-development-test-driven-development), [`github-code-review`](/docs/user-guide/skills/bundled/github/github-github-code-review) | ## Reference: full SKILL.md diff --git a/website/docs/user-guide/skills/bundled/software-development/software-development-spike.md b/website/docs/user-guide/skills/bundled/software-development/software-development-spike.md index 05ca2396f02..695a6cbde00 100644 --- a/website/docs/user-guide/skills/bundled/software-development/software-development-spike.md +++ b/website/docs/user-guide/skills/bundled/software-development/software-development-spike.md @@ -21,7 +21,7 @@ Throwaway experiments to validate an idea before build. | License | MIT | | Platforms | linux, macos, windows | | Tags | `spike`, `prototype`, `experiment`, `feasibility`, `throwaway`, `exploration`, `research`, `planning`, `mvp`, `proof-of-concept` | -| Related skills | [`sketch`](/user-guide/skills/bundled/creative/creative-sketch), [`writing-plans`](/user-guide/skills/bundled/software-development/software-development-writing-plans), [`subagent-driven-development`](/user-guide/skills/bundled/software-development/software-development-subagent-driven-development), [`plan`](/user-guide/skills/bundled/software-development/software-development-plan) | +| Related skills | [`sketch`](/docs/user-guide/skills/bundled/creative/creative-sketch), [`writing-plans`](/docs/user-guide/skills/bundled/software-development/software-development-writing-plans), [`subagent-driven-development`](/docs/user-guide/skills/bundled/software-development/software-development-subagent-driven-development), [`plan`](/docs/user-guide/skills/bundled/software-development/software-development-plan) | ## Reference: full SKILL.md diff --git a/website/docs/user-guide/skills/bundled/software-development/software-development-subagent-driven-development.md b/website/docs/user-guide/skills/bundled/software-development/software-development-subagent-driven-development.md index 5ac70ba30a5..1ad7859918f 100644 --- a/website/docs/user-guide/skills/bundled/software-development/software-development-subagent-driven-development.md +++ b/website/docs/user-guide/skills/bundled/software-development/software-development-subagent-driven-development.md @@ -21,7 +21,7 @@ Execute plans via delegate_task subagents (2-stage review). | License | MIT | | Platforms | linux, macos, windows | | Tags | `delegation`, `subagent`, `implementation`, `workflow`, `parallel` | -| Related skills | [`writing-plans`](/user-guide/skills/bundled/software-development/software-development-writing-plans), [`requesting-code-review`](/user-guide/skills/bundled/software-development/software-development-requesting-code-review), [`test-driven-development`](/user-guide/skills/bundled/software-development/software-development-test-driven-development) | +| Related skills | [`writing-plans`](/docs/user-guide/skills/bundled/software-development/software-development-writing-plans), [`requesting-code-review`](/docs/user-guide/skills/bundled/software-development/software-development-requesting-code-review), [`test-driven-development`](/docs/user-guide/skills/bundled/software-development/software-development-test-driven-development) | ## Reference: full SKILL.md diff --git a/website/docs/user-guide/skills/bundled/software-development/software-development-systematic-debugging.md b/website/docs/user-guide/skills/bundled/software-development/software-development-systematic-debugging.md index 8872bc0c366..e86f46c9ae7 100644 --- a/website/docs/user-guide/skills/bundled/software-development/software-development-systematic-debugging.md +++ b/website/docs/user-guide/skills/bundled/software-development/software-development-systematic-debugging.md @@ -21,7 +21,7 @@ description: "4-phase root cause debugging: understand bugs before fixing" | License | MIT | | Platforms | linux, macos, windows | | Tags | `debugging`, `troubleshooting`, `problem-solving`, `root-cause`, `investigation` | -| Related skills | [`test-driven-development`](/user-guide/skills/bundled/software-development/software-development-test-driven-development), [`writing-plans`](/user-guide/skills/bundled/software-development/software-development-writing-plans), [`subagent-driven-development`](/user-guide/skills/bundled/software-development/software-development-subagent-driven-development) | +| Related skills | [`test-driven-development`](/docs/user-guide/skills/bundled/software-development/software-development-test-driven-development), [`writing-plans`](/docs/user-guide/skills/bundled/software-development/software-development-writing-plans), [`subagent-driven-development`](/docs/user-guide/skills/bundled/software-development/software-development-subagent-driven-development) | ## Reference: full SKILL.md diff --git a/website/docs/user-guide/skills/bundled/software-development/software-development-test-driven-development.md b/website/docs/user-guide/skills/bundled/software-development/software-development-test-driven-development.md index 3dffe264271..5b424f3adc7 100644 --- a/website/docs/user-guide/skills/bundled/software-development/software-development-test-driven-development.md +++ b/website/docs/user-guide/skills/bundled/software-development/software-development-test-driven-development.md @@ -21,7 +21,7 @@ TDD: enforce RED-GREEN-REFACTOR, tests before code. | License | MIT | | Platforms | linux, macos, windows | | Tags | `testing`, `tdd`, `development`, `quality`, `red-green-refactor` | -| Related skills | [`systematic-debugging`](/user-guide/skills/bundled/software-development/software-development-systematic-debugging), [`writing-plans`](/user-guide/skills/bundled/software-development/software-development-writing-plans), [`subagent-driven-development`](/user-guide/skills/bundled/software-development/software-development-subagent-driven-development) | +| Related skills | [`systematic-debugging`](/docs/user-guide/skills/bundled/software-development/software-development-systematic-debugging), [`writing-plans`](/docs/user-guide/skills/bundled/software-development/software-development-writing-plans), [`subagent-driven-development`](/docs/user-guide/skills/bundled/software-development/software-development-subagent-driven-development) | ## Reference: full SKILL.md diff --git a/website/docs/user-guide/skills/bundled/software-development/software-development-writing-plans.md b/website/docs/user-guide/skills/bundled/software-development/software-development-writing-plans.md index a9a653b9346..6dc0a52988f 100644 --- a/website/docs/user-guide/skills/bundled/software-development/software-development-writing-plans.md +++ b/website/docs/user-guide/skills/bundled/software-development/software-development-writing-plans.md @@ -21,7 +21,7 @@ Write implementation plans: bite-sized tasks, paths, code. | License | MIT | | Platforms | linux, macos, windows | | Tags | `planning`, `design`, `implementation`, `workflow`, `documentation` | -| Related skills | [`subagent-driven-development`](/user-guide/skills/bundled/software-development/software-development-subagent-driven-development), [`test-driven-development`](/user-guide/skills/bundled/software-development/software-development-test-driven-development), [`requesting-code-review`](/user-guide/skills/bundled/software-development/software-development-requesting-code-review) | +| Related skills | [`subagent-driven-development`](/docs/user-guide/skills/bundled/software-development/software-development-subagent-driven-development), [`test-driven-development`](/docs/user-guide/skills/bundled/software-development/software-development-test-driven-development), [`requesting-code-review`](/docs/user-guide/skills/bundled/software-development/software-development-requesting-code-review) | ## Reference: full SKILL.md diff --git a/website/docs/user-guide/skills/optional/autonomous-ai-agents/autonomous-ai-agents-blackbox.md b/website/docs/user-guide/skills/optional/autonomous-ai-agents/autonomous-ai-agents-blackbox.md index fc2f686c249..737ae091a83 100644 --- a/website/docs/user-guide/skills/optional/autonomous-ai-agents/autonomous-ai-agents-blackbox.md +++ b/website/docs/user-guide/skills/optional/autonomous-ai-agents/autonomous-ai-agents-blackbox.md @@ -21,7 +21,7 @@ Delegate coding tasks to Blackbox AI CLI agent. Multi-model agent with built-in | License | MIT | | Platforms | linux, macos, windows | | Tags | `Coding-Agent`, `Blackbox`, `Multi-Agent`, `Judge`, `Multi-Model` | -| Related skills | [`claude-code`](/user-guide/skills/bundled/autonomous-ai-agents/autonomous-ai-agents-claude-code), [`codex`](/user-guide/skills/bundled/autonomous-ai-agents/autonomous-ai-agents-codex), [`hermes-agent`](/user-guide/skills/bundled/autonomous-ai-agents/autonomous-ai-agents-hermes-agent) | +| Related skills | [`claude-code`](/docs/user-guide/skills/bundled/autonomous-ai-agents/autonomous-ai-agents-claude-code), [`codex`](/docs/user-guide/skills/bundled/autonomous-ai-agents/autonomous-ai-agents-codex), [`hermes-agent`](/docs/user-guide/skills/bundled/autonomous-ai-agents/autonomous-ai-agents-hermes-agent) | ## Reference: full SKILL.md diff --git a/website/docs/user-guide/skills/optional/autonomous-ai-agents/autonomous-ai-agents-honcho.md b/website/docs/user-guide/skills/optional/autonomous-ai-agents/autonomous-ai-agents-honcho.md index e0451f7d4df..1b989116636 100644 --- a/website/docs/user-guide/skills/optional/autonomous-ai-agents/autonomous-ai-agents-honcho.md +++ b/website/docs/user-guide/skills/optional/autonomous-ai-agents/autonomous-ai-agents-honcho.md @@ -21,7 +21,7 @@ Configure and use Honcho memory with Hermes -- cross-session user modeling, mult | License | MIT | | Platforms | linux, macos, windows | | Tags | `Honcho`, `Memory`, `Profiles`, `Observation`, `Dialectic`, `User-Modeling`, `Session-Summary` | -| Related skills | [`hermes-agent`](/user-guide/skills/bundled/autonomous-ai-agents/autonomous-ai-agents-hermes-agent) | +| Related skills | [`hermes-agent`](/docs/user-guide/skills/bundled/autonomous-ai-agents/autonomous-ai-agents-hermes-agent) | ## Reference: full SKILL.md diff --git a/website/docs/user-guide/skills/optional/autonomous-ai-agents/autonomous-ai-agents-openhands.md b/website/docs/user-guide/skills/optional/autonomous-ai-agents/autonomous-ai-agents-openhands.md index 0e74f2573aa..9774fe25b02 100644 --- a/website/docs/user-guide/skills/optional/autonomous-ai-agents/autonomous-ai-agents-openhands.md +++ b/website/docs/user-guide/skills/optional/autonomous-ai-agents/autonomous-ai-agents-openhands.md @@ -21,7 +21,7 @@ Delegate coding to OpenHands CLI (model-agnostic, LiteLLM). | License | MIT | | Platforms | linux, macos | | Tags | `Coding-Agent`, `OpenHands`, `Model-Agnostic`, `LiteLLM` | -| Related skills | [`claude-code`](/user-guide/skills/bundled/autonomous-ai-agents/autonomous-ai-agents-claude-code), [`codex`](/user-guide/skills/bundled/autonomous-ai-agents/autonomous-ai-agents-codex), [`opencode`](/user-guide/skills/bundled/autonomous-ai-agents/autonomous-ai-agents-opencode), [`hermes-agent`](/user-guide/skills/bundled/autonomous-ai-agents/autonomous-ai-agents-hermes-agent) | +| Related skills | [`claude-code`](/docs/user-guide/skills/bundled/autonomous-ai-agents/autonomous-ai-agents-claude-code), [`codex`](/docs/user-guide/skills/bundled/autonomous-ai-agents/autonomous-ai-agents-codex), [`opencode`](/docs/user-guide/skills/bundled/autonomous-ai-agents/autonomous-ai-agents-opencode), [`hermes-agent`](/docs/user-guide/skills/bundled/autonomous-ai-agents/autonomous-ai-agents-hermes-agent) | ## Reference: full SKILL.md diff --git a/website/docs/user-guide/skills/optional/blockchain/blockchain-evm.md b/website/docs/user-guide/skills/optional/blockchain/blockchain-evm.md index 92aa14ffa54..01006870ee4 100644 --- a/website/docs/user-guide/skills/optional/blockchain/blockchain-evm.md +++ b/website/docs/user-guide/skills/optional/blockchain/blockchain-evm.md @@ -21,7 +21,7 @@ Read-only EVM client: wallets, tokens, gas across 8 chains. | License | MIT | | Platforms | linux, macos, windows | | Tags | `EVM`, `Ethereum`, `BNB`, `BSC`, `Base`, `Arbitrum`, `Polygon`, `Optimism`, `Avalanche`, `zkSync`, `Blockchain`, `Crypto`, `Web3`, `DeFi`, `NFT`, `ENS`, `Whale`, `Security` | -| Related skills | [`solana`](/user-guide/skills/optional/blockchain/blockchain-solana) | +| Related skills | [`solana`](/docs/user-guide/skills/optional/blockchain/blockchain-solana) | ## Reference: full SKILL.md diff --git a/website/docs/user-guide/skills/optional/creative/creative-concept-diagrams.md b/website/docs/user-guide/skills/optional/creative/creative-concept-diagrams.md index 7870e466b4c..9b3ba92b3bd 100644 --- a/website/docs/user-guide/skills/optional/creative/creative-concept-diagrams.md +++ b/website/docs/user-guide/skills/optional/creative/creative-concept-diagrams.md @@ -21,7 +21,7 @@ Generate flat, minimal light/dark-aware SVG diagrams as standalone HTML files, u | License | MIT | | Platforms | linux, macos, windows | | Tags | `diagrams`, `svg`, `visualization`, `education`, `physics`, `chemistry`, `engineering` | -| Related skills | [`architecture-diagram`](/user-guide/skills/bundled/creative/creative-architecture-diagram), [`excalidraw`](/user-guide/skills/bundled/creative/creative-excalidraw), `generative-widgets` | +| Related skills | [`architecture-diagram`](/docs/user-guide/skills/bundled/creative/creative-architecture-diagram), [`excalidraw`](/docs/user-guide/skills/bundled/creative/creative-excalidraw), `generative-widgets` | ## Reference: full SKILL.md diff --git a/website/docs/user-guide/skills/optional/creative/creative-hyperframes.md b/website/docs/user-guide/skills/optional/creative/creative-hyperframes.md index 4d39dede69b..fc27d61d579 100644 --- a/website/docs/user-guide/skills/optional/creative/creative-hyperframes.md +++ b/website/docs/user-guide/skills/optional/creative/creative-hyperframes.md @@ -21,7 +21,7 @@ Create HTML-based video compositions, animated title cards, social overlays, cap | License | Apache-2.0 | | Platforms | linux, macos, windows | | Tags | `creative`, `video`, `animation`, `html`, `gsap`, `motion-graphics` | -| Related skills | [`manim-video`](/user-guide/skills/bundled/creative/creative-manim-video), [`meme-generation`](/user-guide/skills/optional/creative/creative-meme-generation) | +| Related skills | [`manim-video`](/docs/user-guide/skills/bundled/creative/creative-manim-video), [`meme-generation`](/docs/user-guide/skills/optional/creative/creative-meme-generation) | ## Reference: full SKILL.md diff --git a/website/docs/user-guide/skills/optional/creative/creative-kanban-video-orchestrator.md b/website/docs/user-guide/skills/optional/creative/creative-kanban-video-orchestrator.md index bac154b34da..8fa3cdf127f 100644 --- a/website/docs/user-guide/skills/optional/creative/creative-kanban-video-orchestrator.md +++ b/website/docs/user-guide/skills/optional/creative/creative-kanban-video-orchestrator.md @@ -21,7 +21,7 @@ Plan, set up, and monitor a multi-agent video production pipeline backed by Herm | License | MIT | | Platforms | linux, macos, windows | | Tags | `video`, `kanban`, `multi-agent`, `orchestration`, `production-pipeline` | -| Related skills | [`kanban-orchestrator`](/user-guide/skills/bundled/devops/devops-kanban-orchestrator), [`kanban-worker`](/user-guide/skills/bundled/devops/devops-kanban-worker), [`ascii-video`](/user-guide/skills/bundled/creative/creative-ascii-video), [`manim-video`](/user-guide/skills/bundled/creative/creative-manim-video), [`p5js`](/user-guide/skills/bundled/creative/creative-p5js), [`comfyui`](/user-guide/skills/bundled/creative/creative-comfyui), [`touchdesigner-mcp`](/user-guide/skills/bundled/creative/creative-touchdesigner-mcp), [`blender-mcp`](/user-guide/skills/optional/creative/creative-blender-mcp), [`pixel-art`](/user-guide/skills/bundled/creative/creative-pixel-art), [`ascii-art`](/user-guide/skills/bundled/creative/creative-ascii-art), [`songwriting-and-ai-music`](/user-guide/skills/bundled/creative/creative-songwriting-and-ai-music), [`heartmula`](/user-guide/skills/bundled/media/media-heartmula), [`songsee`](/user-guide/skills/bundled/media/media-songsee), [`spotify`](/user-guide/skills/bundled/media/media-spotify), [`youtube-content`](/user-guide/skills/bundled/media/media-youtube-content), [`claude-design`](/user-guide/skills/bundled/creative/creative-claude-design), [`excalidraw`](/user-guide/skills/bundled/creative/creative-excalidraw), [`architecture-diagram`](/user-guide/skills/bundled/creative/creative-architecture-diagram), [`concept-diagrams`](/user-guide/skills/optional/creative/creative-concept-diagrams), [`baoyu-comic`](/user-guide/skills/bundled/creative/creative-baoyu-comic), [`baoyu-infographic`](/user-guide/skills/bundled/creative/creative-baoyu-infographic), [`humanizer`](/user-guide/skills/bundled/creative/creative-humanizer), [`gif-search`](/user-guide/skills/bundled/media/media-gif-search), [`meme-generation`](/user-guide/skills/optional/creative/creative-meme-generation) | +| Related skills | [`kanban-orchestrator`](/docs/user-guide/skills/bundled/devops/devops-kanban-orchestrator), [`kanban-worker`](/docs/user-guide/skills/bundled/devops/devops-kanban-worker), [`ascii-video`](/docs/user-guide/skills/bundled/creative/creative-ascii-video), [`manim-video`](/docs/user-guide/skills/bundled/creative/creative-manim-video), [`p5js`](/docs/user-guide/skills/bundled/creative/creative-p5js), [`comfyui`](/docs/user-guide/skills/bundled/creative/creative-comfyui), [`touchdesigner-mcp`](/docs/user-guide/skills/bundled/creative/creative-touchdesigner-mcp), [`blender-mcp`](/docs/user-guide/skills/optional/creative/creative-blender-mcp), [`pixel-art`](/docs/user-guide/skills/bundled/creative/creative-pixel-art), [`ascii-art`](/docs/user-guide/skills/bundled/creative/creative-ascii-art), [`songwriting-and-ai-music`](/docs/user-guide/skills/bundled/creative/creative-songwriting-and-ai-music), [`heartmula`](/docs/user-guide/skills/bundled/media/media-heartmula), [`songsee`](/docs/user-guide/skills/bundled/media/media-songsee), [`spotify`](/docs/user-guide/skills/bundled/media/media-spotify), [`youtube-content`](/docs/user-guide/skills/bundled/media/media-youtube-content), [`claude-design`](/docs/user-guide/skills/bundled/creative/creative-claude-design), [`excalidraw`](/docs/user-guide/skills/bundled/creative/creative-excalidraw), [`architecture-diagram`](/docs/user-guide/skills/bundled/creative/creative-architecture-diagram), [`concept-diagrams`](/docs/user-guide/skills/optional/creative/creative-concept-diagrams), [`baoyu-comic`](/docs/user-guide/skills/bundled/creative/creative-baoyu-comic), [`baoyu-infographic`](/docs/user-guide/skills/bundled/creative/creative-baoyu-infographic), [`humanizer`](/docs/user-guide/skills/bundled/creative/creative-humanizer), [`gif-search`](/docs/user-guide/skills/bundled/media/media-gif-search), [`meme-generation`](/docs/user-guide/skills/optional/creative/creative-meme-generation) | ## Reference: full SKILL.md diff --git a/website/docs/user-guide/skills/optional/creative/creative-meme-generation.md b/website/docs/user-guide/skills/optional/creative/creative-meme-generation.md index b7342d47967..836780c678d 100644 --- a/website/docs/user-guide/skills/optional/creative/creative-meme-generation.md +++ b/website/docs/user-guide/skills/optional/creative/creative-meme-generation.md @@ -21,7 +21,7 @@ Generate real meme images by picking a template and overlaying text with Pillow. | License | MIT | | Platforms | linux, macos, windows | | Tags | `creative`, `memes`, `humor`, `images` | -| Related skills | [`ascii-art`](/user-guide/skills/bundled/creative/creative-ascii-art), `generative-widgets` | +| Related skills | [`ascii-art`](/docs/user-guide/skills/bundled/creative/creative-ascii-art), `generative-widgets` | ## Reference: full SKILL.md diff --git a/website/docs/user-guide/skills/optional/devops/devops-pinggy-tunnel.md b/website/docs/user-guide/skills/optional/devops/devops-pinggy-tunnel.md index 43931442d0a..19f431f1967 100644 --- a/website/docs/user-guide/skills/optional/devops/devops-pinggy-tunnel.md +++ b/website/docs/user-guide/skills/optional/devops/devops-pinggy-tunnel.md @@ -21,7 +21,7 @@ Zero-install localhost tunnels over SSH via Pinggy. | License | MIT | | Platforms | linux, macos, windows | | Tags | `Pinggy`, `Tunnel`, `Networking`, `SSH`, `Webhook`, `Localhost` | -| Related skills | `cloudflared-quick-tunnel`, [`webhook-subscriptions`](/user-guide/skills/bundled/devops/devops-webhook-subscriptions) | +| Related skills | `cloudflared-quick-tunnel`, [`webhook-subscriptions`](/docs/user-guide/skills/bundled/devops/devops-webhook-subscriptions) | ## Reference: full SKILL.md diff --git a/website/docs/user-guide/skills/optional/dogfood/dogfood-adversarial-ux-test.md b/website/docs/user-guide/skills/optional/dogfood/dogfood-adversarial-ux-test.md index 5214608fed5..159f3631d1b 100644 --- a/website/docs/user-guide/skills/optional/dogfood/dogfood-adversarial-ux-test.md +++ b/website/docs/user-guide/skills/optional/dogfood/dogfood-adversarial-ux-test.md @@ -21,7 +21,7 @@ Roleplay the most difficult, tech-resistant user for your product. Browse the ap | License | MIT | | Platforms | linux, macos, windows | | Tags | `qa`, `ux`, `testing`, `adversarial`, `dogfood`, `personas`, `user-testing` | -| Related skills | [`dogfood`](/user-guide/skills/bundled/dogfood/dogfood-dogfood) | +| Related skills | [`dogfood`](/docs/user-guide/skills/bundled/dogfood/dogfood-dogfood) | ## Reference: full SKILL.md diff --git a/website/docs/user-guide/skills/optional/finance/finance-3-statement-model.md b/website/docs/user-guide/skills/optional/finance/finance-3-statement-model.md index 75dd5161aff..886f4f0f7a1 100644 --- a/website/docs/user-guide/skills/optional/finance/finance-3-statement-model.md +++ b/website/docs/user-guide/skills/optional/finance/finance-3-statement-model.md @@ -21,7 +21,7 @@ Build fully-integrated 3-statement models (IS, BS, CF) in Excel with working cap | License | Apache-2.0 | | Platforms | linux, macos, windows | | Tags | `finance`, `three-statement`, `income-statement`, `balance-sheet`, `cash-flow`, `excel`, `openpyxl`, `modeling` | -| Related skills | [`excel-author`](/user-guide/skills/optional/finance/finance-excel-author), [`pptx-author`](/user-guide/skills/optional/finance/finance-pptx-author), [`dcf-model`](/user-guide/skills/optional/finance/finance-dcf-model), [`lbo-model`](/user-guide/skills/optional/finance/finance-lbo-model) | +| Related skills | [`excel-author`](/docs/user-guide/skills/optional/finance/finance-excel-author), [`pptx-author`](/docs/user-guide/skills/optional/finance/finance-pptx-author), [`dcf-model`](/docs/user-guide/skills/optional/finance/finance-dcf-model), [`lbo-model`](/docs/user-guide/skills/optional/finance/finance-lbo-model) | ## Reference: full SKILL.md diff --git a/website/docs/user-guide/skills/optional/finance/finance-comps-analysis.md b/website/docs/user-guide/skills/optional/finance/finance-comps-analysis.md index 8e2a81d3bcd..952f030567c 100644 --- a/website/docs/user-guide/skills/optional/finance/finance-comps-analysis.md +++ b/website/docs/user-guide/skills/optional/finance/finance-comps-analysis.md @@ -21,7 +21,7 @@ Build comparable company analysis in Excel — operating metrics, valuation mult | License | Apache-2.0 | | Platforms | linux, macos, windows | | Tags | `finance`, `valuation`, `comps`, `excel`, `openpyxl`, `modeling`, `investment-banking` | -| Related skills | [`excel-author`](/user-guide/skills/optional/finance/finance-excel-author), [`pptx-author`](/user-guide/skills/optional/finance/finance-pptx-author), [`dcf-model`](/user-guide/skills/optional/finance/finance-dcf-model), [`lbo-model`](/user-guide/skills/optional/finance/finance-lbo-model) | +| Related skills | [`excel-author`](/docs/user-guide/skills/optional/finance/finance-excel-author), [`pptx-author`](/docs/user-guide/skills/optional/finance/finance-pptx-author), [`dcf-model`](/docs/user-guide/skills/optional/finance/finance-dcf-model), [`lbo-model`](/docs/user-guide/skills/optional/finance/finance-lbo-model) | ## Reference: full SKILL.md diff --git a/website/docs/user-guide/skills/optional/finance/finance-dcf-model.md b/website/docs/user-guide/skills/optional/finance/finance-dcf-model.md index 0d2426f3607..36d491657b5 100644 --- a/website/docs/user-guide/skills/optional/finance/finance-dcf-model.md +++ b/website/docs/user-guide/skills/optional/finance/finance-dcf-model.md @@ -21,7 +21,7 @@ Build institutional-quality DCF valuation models in Excel — revenue projection | License | Apache-2.0 | | Platforms | linux, macos, windows | | Tags | `finance`, `valuation`, `dcf`, `excel`, `openpyxl`, `modeling`, `investment-banking` | -| Related skills | [`excel-author`](/user-guide/skills/optional/finance/finance-excel-author), [`pptx-author`](/user-guide/skills/optional/finance/finance-pptx-author), [`comps-analysis`](/user-guide/skills/optional/finance/finance-comps-analysis), [`lbo-model`](/user-guide/skills/optional/finance/finance-lbo-model), [`3-statement-model`](/user-guide/skills/optional/finance/finance-3-statement-model) | +| Related skills | [`excel-author`](/docs/user-guide/skills/optional/finance/finance-excel-author), [`pptx-author`](/docs/user-guide/skills/optional/finance/finance-pptx-author), [`comps-analysis`](/docs/user-guide/skills/optional/finance/finance-comps-analysis), [`lbo-model`](/docs/user-guide/skills/optional/finance/finance-lbo-model), [`3-statement-model`](/docs/user-guide/skills/optional/finance/finance-3-statement-model) | ## Reference: full SKILL.md diff --git a/website/docs/user-guide/skills/optional/finance/finance-excel-author.md b/website/docs/user-guide/skills/optional/finance/finance-excel-author.md index 9c32c7fdc5e..e5d202fa81f 100644 --- a/website/docs/user-guide/skills/optional/finance/finance-excel-author.md +++ b/website/docs/user-guide/skills/optional/finance/finance-excel-author.md @@ -21,7 +21,7 @@ Build auditable Excel workbooks headless with openpyxl — blue/black/green cell | License | Apache-2.0 | | Platforms | linux, macos, windows | | Tags | `excel`, `openpyxl`, `finance`, `spreadsheet`, `modeling` | -| Related skills | [`pptx-author`](/user-guide/skills/optional/finance/finance-pptx-author), [`dcf-model`](/user-guide/skills/optional/finance/finance-dcf-model), [`comps-analysis`](/user-guide/skills/optional/finance/finance-comps-analysis), [`lbo-model`](/user-guide/skills/optional/finance/finance-lbo-model), [`3-statement-model`](/user-guide/skills/optional/finance/finance-3-statement-model) | +| Related skills | [`pptx-author`](/docs/user-guide/skills/optional/finance/finance-pptx-author), [`dcf-model`](/docs/user-guide/skills/optional/finance/finance-dcf-model), [`comps-analysis`](/docs/user-guide/skills/optional/finance/finance-comps-analysis), [`lbo-model`](/docs/user-guide/skills/optional/finance/finance-lbo-model), [`3-statement-model`](/docs/user-guide/skills/optional/finance/finance-3-statement-model) | ## Reference: full SKILL.md diff --git a/website/docs/user-guide/skills/optional/finance/finance-lbo-model.md b/website/docs/user-guide/skills/optional/finance/finance-lbo-model.md index b32d71ea54b..82a76c67dbf 100644 --- a/website/docs/user-guide/skills/optional/finance/finance-lbo-model.md +++ b/website/docs/user-guide/skills/optional/finance/finance-lbo-model.md @@ -21,7 +21,7 @@ Build leveraged buyout models in Excel — sources & uses, debt schedule, cash s | License | Apache-2.0 | | Platforms | linux, macos, windows | | Tags | `finance`, `valuation`, `lbo`, `private-equity`, `excel`, `openpyxl`, `modeling` | -| Related skills | [`excel-author`](/user-guide/skills/optional/finance/finance-excel-author), [`pptx-author`](/user-guide/skills/optional/finance/finance-pptx-author), [`dcf-model`](/user-guide/skills/optional/finance/finance-dcf-model), [`3-statement-model`](/user-guide/skills/optional/finance/finance-3-statement-model) | +| Related skills | [`excel-author`](/docs/user-guide/skills/optional/finance/finance-excel-author), [`pptx-author`](/docs/user-guide/skills/optional/finance/finance-pptx-author), [`dcf-model`](/docs/user-guide/skills/optional/finance/finance-dcf-model), [`3-statement-model`](/docs/user-guide/skills/optional/finance/finance-3-statement-model) | ## Reference: full SKILL.md diff --git a/website/docs/user-guide/skills/optional/finance/finance-merger-model.md b/website/docs/user-guide/skills/optional/finance/finance-merger-model.md index cbb6b6b0bdd..30e8ffcd5be 100644 --- a/website/docs/user-guide/skills/optional/finance/finance-merger-model.md +++ b/website/docs/user-guide/skills/optional/finance/finance-merger-model.md @@ -21,7 +21,7 @@ Build accretion/dilution (merger) models in Excel — pro-forma P&L, synergies, | License | Apache-2.0 | | Platforms | linux, macos, windows | | Tags | `finance`, `m-and-a`, `merger`, `accretion-dilution`, `excel`, `openpyxl`, `modeling`, `investment-banking` | -| Related skills | [`excel-author`](/user-guide/skills/optional/finance/finance-excel-author), [`pptx-author`](/user-guide/skills/optional/finance/finance-pptx-author), [`dcf-model`](/user-guide/skills/optional/finance/finance-dcf-model), [`3-statement-model`](/user-guide/skills/optional/finance/finance-3-statement-model) | +| Related skills | [`excel-author`](/docs/user-guide/skills/optional/finance/finance-excel-author), [`pptx-author`](/docs/user-guide/skills/optional/finance/finance-pptx-author), [`dcf-model`](/docs/user-guide/skills/optional/finance/finance-dcf-model), [`3-statement-model`](/docs/user-guide/skills/optional/finance/finance-3-statement-model) | ## Reference: full SKILL.md diff --git a/website/docs/user-guide/skills/optional/finance/finance-pptx-author.md b/website/docs/user-guide/skills/optional/finance/finance-pptx-author.md index 55f32457dea..a7f863289d4 100644 --- a/website/docs/user-guide/skills/optional/finance/finance-pptx-author.md +++ b/website/docs/user-guide/skills/optional/finance/finance-pptx-author.md @@ -21,7 +21,7 @@ Build PowerPoint decks headless with python-pptx. Pairs with excel-author for mo | License | Apache-2.0 | | Platforms | linux, macos, windows | | Tags | `powerpoint`, `pptx`, `python-pptx`, `presentation`, `finance` | -| Related skills | [`excel-author`](/user-guide/skills/optional/finance/finance-excel-author), [`powerpoint`](/user-guide/skills/bundled/productivity/productivity-powerpoint) | +| Related skills | [`excel-author`](/docs/user-guide/skills/optional/finance/finance-excel-author), [`powerpoint`](/docs/user-guide/skills/bundled/productivity/productivity-powerpoint) | ## Reference: full SKILL.md diff --git a/website/docs/user-guide/skills/optional/finance/finance-stocks.md b/website/docs/user-guide/skills/optional/finance/finance-stocks.md index d050ada152c..7c43dea3065 100644 --- a/website/docs/user-guide/skills/optional/finance/finance-stocks.md +++ b/website/docs/user-guide/skills/optional/finance/finance-stocks.md @@ -21,7 +21,7 @@ Stock quotes, history, search, compare, crypto via Yahoo. | License | MIT | | Platforms | linux, macos, windows | | Tags | `Stocks`, `Finance`, `Market`, `Crypto`, `Investing` | -| Related skills | [`dcf-model`](/user-guide/skills/optional/finance/finance-dcf-model), [`comps-analysis`](/user-guide/skills/optional/finance/finance-comps-analysis), [`lbo-model`](/user-guide/skills/optional/finance/finance-lbo-model) | +| Related skills | [`dcf-model`](/docs/user-guide/skills/optional/finance/finance-dcf-model), [`comps-analysis`](/docs/user-guide/skills/optional/finance/finance-comps-analysis), [`lbo-model`](/docs/user-guide/skills/optional/finance/finance-lbo-model) | ## Reference: full SKILL.md diff --git a/website/docs/user-guide/skills/optional/mcp/mcp-fastmcp.md b/website/docs/user-guide/skills/optional/mcp/mcp-fastmcp.md index 1cfa9b063c1..2defe89d4eb 100644 --- a/website/docs/user-guide/skills/optional/mcp/mcp-fastmcp.md +++ b/website/docs/user-guide/skills/optional/mcp/mcp-fastmcp.md @@ -21,7 +21,7 @@ Build, test, inspect, install, and deploy MCP servers with FastMCP in Python. Us | License | MIT | | Platforms | linux, macos, windows | | Tags | `MCP`, `FastMCP`, `Python`, `Tools`, `Resources`, `Prompts`, `Deployment` | -| Related skills | [`native-mcp`](/user-guide/skills/bundled/mcp/mcp-native-mcp), [`mcporter`](/user-guide/skills/optional/mcp/mcp-mcporter) | +| Related skills | [`native-mcp`](/docs/user-guide/skills/bundled/mcp/mcp-native-mcp), [`mcporter`](/docs/user-guide/skills/optional/mcp/mcp-mcporter) | ## Reference: full SKILL.md diff --git a/website/docs/user-guide/skills/optional/migration/migration-openclaw-migration.md b/website/docs/user-guide/skills/optional/migration/migration-openclaw-migration.md index 57928a55d99..74b44ff23ad 100644 --- a/website/docs/user-guide/skills/optional/migration/migration-openclaw-migration.md +++ b/website/docs/user-guide/skills/optional/migration/migration-openclaw-migration.md @@ -21,7 +21,7 @@ Migrate a user's OpenClaw customization footprint into Hermes Agent. Imports Her | License | MIT | | Platforms | linux, macos, windows | | Tags | `Migration`, `OpenClaw`, `Hermes`, `Memory`, `Persona`, `Import` | -| Related skills | [`hermes-agent`](/user-guide/skills/bundled/autonomous-ai-agents/autonomous-ai-agents-hermes-agent) | +| Related skills | [`hermes-agent`](/docs/user-guide/skills/bundled/autonomous-ai-agents/autonomous-ai-agents-hermes-agent) | ## Reference: full SKILL.md diff --git a/website/docs/user-guide/skills/optional/productivity/productivity-shop-app.md b/website/docs/user-guide/skills/optional/productivity/productivity-shop-app.md index b5f219e29aa..814b686c639 100644 --- a/website/docs/user-guide/skills/optional/productivity/productivity-shop-app.md +++ b/website/docs/user-guide/skills/optional/productivity/productivity-shop-app.md @@ -21,7 +21,7 @@ Shop.app: product search, order tracking, returns, reorder. | License | MIT | | Platforms | linux, macos, windows | | Tags | `Shopping`, `E-commerce`, `Shop.app`, `Products`, `Orders`, `Returns` | -| Related skills | [`shopify`](/user-guide/skills/optional/productivity/productivity-shopify), [`maps`](/user-guide/skills/bundled/productivity/productivity-maps) | +| Related skills | [`shopify`](/docs/user-guide/skills/optional/productivity/productivity-shopify), [`maps`](/docs/user-guide/skills/bundled/productivity/productivity-maps) | ## Reference: full SKILL.md diff --git a/website/docs/user-guide/skills/optional/productivity/productivity-shopify.md b/website/docs/user-guide/skills/optional/productivity/productivity-shopify.md index 3c36be70d93..61bc95cfa66 100644 --- a/website/docs/user-guide/skills/optional/productivity/productivity-shopify.md +++ b/website/docs/user-guide/skills/optional/productivity/productivity-shopify.md @@ -21,7 +21,7 @@ Shopify Admin & Storefront GraphQL APIs via curl. Products, orders, customers, i | License | MIT | | Platforms | linux, macos, windows | | Tags | `Shopify`, `E-commerce`, `Commerce`, `API`, `GraphQL` | -| Related skills | [`airtable`](/user-guide/skills/bundled/productivity/productivity-airtable), [`xurl`](/user-guide/skills/bundled/social-media/social-media-xurl) | +| Related skills | [`airtable`](/docs/user-guide/skills/bundled/productivity/productivity-airtable), [`xurl`](/docs/user-guide/skills/bundled/social-media/social-media-xurl) | ## Reference: full SKILL.md diff --git a/website/docs/user-guide/skills/optional/productivity/productivity-siyuan.md b/website/docs/user-guide/skills/optional/productivity/productivity-siyuan.md index 2f88f113fa6..58263053fdd 100644 --- a/website/docs/user-guide/skills/optional/productivity/productivity-siyuan.md +++ b/website/docs/user-guide/skills/optional/productivity/productivity-siyuan.md @@ -21,7 +21,7 @@ SiYuan Note API for searching, reading, creating, and managing blocks and docume | License | MIT | | Platforms | linux, macos, windows | | Tags | `SiYuan`, `Notes`, `Knowledge Base`, `PKM`, `API` | -| Related skills | [`obsidian`](/user-guide/skills/bundled/note-taking/note-taking-obsidian), [`notion`](/user-guide/skills/bundled/productivity/productivity-notion) | +| Related skills | [`obsidian`](/docs/user-guide/skills/bundled/note-taking/note-taking-obsidian), [`notion`](/docs/user-guide/skills/bundled/productivity/productivity-notion) | ## Reference: full SKILL.md diff --git a/website/docs/user-guide/skills/optional/productivity/productivity-telephony.md b/website/docs/user-guide/skills/optional/productivity/productivity-telephony.md index af6f3855b26..f6c15444cbb 100644 --- a/website/docs/user-guide/skills/optional/productivity/productivity-telephony.md +++ b/website/docs/user-guide/skills/optional/productivity/productivity-telephony.md @@ -21,7 +21,7 @@ Give Hermes phone capabilities without core tool changes. Provision and persist | License | MIT | | Platforms | linux, macos, windows | | Tags | `telephony`, `phone`, `sms`, `mms`, `voice`, `twilio`, `bland.ai`, `vapi`, `calling`, `texting` | -| Related skills | [`maps`](/user-guide/skills/bundled/productivity/productivity-maps), [`google-workspace`](/user-guide/skills/bundled/productivity/productivity-google-workspace), [`agentmail`](/user-guide/skills/optional/email/email-agentmail) | +| Related skills | [`maps`](/docs/user-guide/skills/bundled/productivity/productivity-maps), [`google-workspace`](/docs/user-guide/skills/bundled/productivity/productivity-google-workspace), [`agentmail`](/docs/user-guide/skills/optional/email/email-agentmail) | ## Reference: full SKILL.md diff --git a/website/docs/user-guide/skills/optional/research/research-darwinian-evolver.md b/website/docs/user-guide/skills/optional/research/research-darwinian-evolver.md index 123088c8a7d..121b2dde160 100644 --- a/website/docs/user-guide/skills/optional/research/research-darwinian-evolver.md +++ b/website/docs/user-guide/skills/optional/research/research-darwinian-evolver.md @@ -21,7 +21,7 @@ Evolve prompts/regex/SQL/code with Imbue's evolution loop. | License | MIT | | Platforms | linux, macos | | Tags | `evolution`, `optimization`, `prompt-engineering`, `research` | -| Related skills | [`arxiv`](/user-guide/skills/bundled/research/research-arxiv), [`jupyter-live-kernel`](/user-guide/skills/bundled/data-science/data-science-jupyter-live-kernel) | +| Related skills | [`arxiv`](/docs/user-guide/skills/bundled/research/research-arxiv), [`jupyter-live-kernel`](/docs/user-guide/skills/bundled/data-science/data-science-jupyter-live-kernel) | ## Reference: full SKILL.md diff --git a/website/docs/user-guide/skills/optional/research/research-duckduckgo-search.md b/website/docs/user-guide/skills/optional/research/research-duckduckgo-search.md index ffa1bd64905..bd08395e24f 100644 --- a/website/docs/user-guide/skills/optional/research/research-duckduckgo-search.md +++ b/website/docs/user-guide/skills/optional/research/research-duckduckgo-search.md @@ -21,7 +21,7 @@ Free web search via DuckDuckGo — text, news, images, videos. No API key needed | License | MIT | | Platforms | linux, macos, windows | | Tags | `search`, `duckduckgo`, `web-search`, `free`, `fallback` | -| Related skills | [`arxiv`](/user-guide/skills/bundled/research/research-arxiv) | +| Related skills | [`arxiv`](/docs/user-guide/skills/bundled/research/research-arxiv) | ## Reference: full SKILL.md diff --git a/website/docs/user-guide/skills/optional/research/research-gitnexus-explorer.md b/website/docs/user-guide/skills/optional/research/research-gitnexus-explorer.md index 808789d81de..5b1f62458d1 100644 --- a/website/docs/user-guide/skills/optional/research/research-gitnexus-explorer.md +++ b/website/docs/user-guide/skills/optional/research/research-gitnexus-explorer.md @@ -21,7 +21,7 @@ Index a codebase with GitNexus and serve an interactive knowledge graph via web | License | MIT | | Platforms | linux, macos, windows | | Tags | `gitnexus`, `code-intelligence`, `knowledge-graph`, `visualization` | -| Related skills | [`native-mcp`](/user-guide/skills/bundled/mcp/mcp-native-mcp), [`codebase-inspection`](/user-guide/skills/bundled/github/github-codebase-inspection) | +| Related skills | [`native-mcp`](/docs/user-guide/skills/bundled/mcp/mcp-native-mcp), [`codebase-inspection`](/docs/user-guide/skills/bundled/github/github-codebase-inspection) | ## Reference: full SKILL.md diff --git a/website/docs/user-guide/skills/optional/research/research-osint-investigation.md b/website/docs/user-guide/skills/optional/research/research-osint-investigation.md index e363ef77fd5..7428c3022b2 100644 --- a/website/docs/user-guide/skills/optional/research/research-osint-investigation.md +++ b/website/docs/user-guide/skills/optional/research/research-osint-investigation.md @@ -20,7 +20,7 @@ Public-records OSINT investigation framework — SEC EDGAR filings, USAspending | Author | Hermes Agent (adapted from ShinMegamiBoson/OpenPlanter, MIT) | | Platforms | linux, macos, windows | | Tags | `osint`, `investigation`, `public-records`, `sec`, `sanctions`, `corporate-registry`, `property`, `courts`, `due-diligence`, `journalism` | -| Related skills | [`domain-intel`](/user-guide/skills/optional/research/research-domain-intel), [`arxiv`](/user-guide/skills/bundled/research/research-arxiv) | +| Related skills | [`domain-intel`](/docs/user-guide/skills/optional/research/research-domain-intel), [`arxiv`](/docs/user-guide/skills/bundled/research/research-arxiv) | ## Reference: full SKILL.md diff --git a/website/docs/user-guide/skills/optional/research/research-parallel-cli.md b/website/docs/user-guide/skills/optional/research/research-parallel-cli.md index 619ece67fb9..6532ae33c89 100644 --- a/website/docs/user-guide/skills/optional/research/research-parallel-cli.md +++ b/website/docs/user-guide/skills/optional/research/research-parallel-cli.md @@ -21,7 +21,7 @@ Optional vendor skill for Parallel CLI — agent-native web search, extraction, | License | MIT | | Platforms | linux, macos, windows | | Tags | `Research`, `Web`, `Search`, `Deep-Research`, `Enrichment`, `CLI` | -| Related skills | [`duckduckgo-search`](/user-guide/skills/optional/research/research-duckduckgo-search), [`mcporter`](/user-guide/skills/optional/mcp/mcp-mcporter) | +| Related skills | [`duckduckgo-search`](/docs/user-guide/skills/optional/research/research-duckduckgo-search), [`mcporter`](/docs/user-guide/skills/optional/mcp/mcp-mcporter) | ## Reference: full SKILL.md diff --git a/website/docs/user-guide/skills/optional/research/research-qmd.md b/website/docs/user-guide/skills/optional/research/research-qmd.md index 6a711f793b6..47cf81634b8 100644 --- a/website/docs/user-guide/skills/optional/research/research-qmd.md +++ b/website/docs/user-guide/skills/optional/research/research-qmd.md @@ -21,7 +21,7 @@ Search personal knowledge bases, notes, docs, and meeting transcripts locally us | License | MIT | | Platforms | macos, linux | | Tags | `Search`, `Knowledge-Base`, `RAG`, `Notes`, `MCP`, `Local-AI` | -| Related skills | [`obsidian`](/user-guide/skills/bundled/note-taking/note-taking-obsidian), [`native-mcp`](/user-guide/skills/bundled/mcp/mcp-native-mcp), [`arxiv`](/user-guide/skills/bundled/research/research-arxiv) | +| Related skills | [`obsidian`](/docs/user-guide/skills/bundled/note-taking/note-taking-obsidian), [`native-mcp`](/docs/user-guide/skills/bundled/mcp/mcp-native-mcp), [`arxiv`](/docs/user-guide/skills/bundled/research/research-arxiv) | ## Reference: full SKILL.md diff --git a/website/docs/user-guide/skills/optional/research/research-scrapling.md b/website/docs/user-guide/skills/optional/research/research-scrapling.md index 7623f153326..dd1ba8865db 100644 --- a/website/docs/user-guide/skills/optional/research/research-scrapling.md +++ b/website/docs/user-guide/skills/optional/research/research-scrapling.md @@ -21,7 +21,7 @@ Web scraping with Scrapling - HTTP fetching, stealth browser automation, Cloudfl | License | MIT | | Platforms | linux, macos, windows | | Tags | `Web Scraping`, `Browser`, `Cloudflare`, `Stealth`, `Crawling`, `Spider` | -| Related skills | [`duckduckgo-search`](/user-guide/skills/optional/research/research-duckduckgo-search), [`domain-intel`](/user-guide/skills/optional/research/research-domain-intel) | +| Related skills | [`duckduckgo-search`](/docs/user-guide/skills/optional/research/research-duckduckgo-search), [`domain-intel`](/docs/user-guide/skills/optional/research/research-domain-intel) | ## Reference: full SKILL.md diff --git a/website/docs/user-guide/skills/optional/research/research-searxng-search.md b/website/docs/user-guide/skills/optional/research/research-searxng-search.md index f6de490fcba..90abfc91198 100644 --- a/website/docs/user-guide/skills/optional/research/research-searxng-search.md +++ b/website/docs/user-guide/skills/optional/research/research-searxng-search.md @@ -21,7 +21,7 @@ Free meta-search via SearXNG — aggregates results from 70+ search engines. Sel | License | MIT | | Platforms | linux, macos | | Tags | `search`, `searxng`, `meta-search`, `self-hosted`, `free`, `fallback` | -| Related skills | [`duckduckgo-search`](/user-guide/skills/optional/research/research-duckduckgo-search), [`domain-intel`](/user-guide/skills/optional/research/research-domain-intel) | +| Related skills | [`duckduckgo-search`](/docs/user-guide/skills/optional/research/research-duckduckgo-search), [`domain-intel`](/docs/user-guide/skills/optional/research/research-domain-intel) | ## Reference: full SKILL.md diff --git a/website/docs/user-guide/skills/optional/security/security-web-pentest.md b/website/docs/user-guide/skills/optional/security/security-web-pentest.md new file mode 100644 index 00000000000..dcd9850814b --- /dev/null +++ b/website/docs/user-guide/skills/optional/security/security-web-pentest.md @@ -0,0 +1,337 @@ +--- +title: "Web Pentest" +sidebar_label: "Web Pentest" +description: "Authorized web application penetration testing — reconnaissance, vulnerability analysis, proof-based exploitation, and professional reporting" +--- + +{/* This page is auto-generated from the skill's SKILL.md by website/scripts/generate-skill-docs.py. Edit the source SKILL.md, not this page. */} + +# Web Pentest + +Authorized web application penetration testing — reconnaissance, vulnerability +analysis, proof-based exploitation, and professional reporting. Adapts +Shannon's "No Exploit, No Report" methodology with hard guardrails for +scope, authorization, and aux-client leakage. Active testing against running +applications you own or have written authorization to test. + +## Skill metadata + +| | | +|---|---| +| Source | Optional — install with `hermes skills install official/security/web-pentest` | +| Path | `optional-skills/security/web-pentest` | +| Platforms | linux, macos | + +## Reference: full SKILL.md + +:::info +The following is the complete skill definition that Hermes loads when this skill is triggered. This is what the agent sees as instructions when the skill is active. +::: + +# Web Application Penetration Testing + +A phased pentesting workflow for running web applications. Adapted from +Shannon's pipeline (Keygraph, AGPL — concepts only, no code borrowed). +Built around three rules: + +1. No exploit, no report — every finding requires reproducible evidence. +2. Bounded scope — every active request goes against a target the operator + pre-declared. Off-scope hosts are refused. +3. Bypass exhaustion before false-positive dismissal — a "blocked" payload + is not a clean bill of health until you've tried the bypass set. + +--- + +## ⚠️ Hard Guardrails — Read Before Every Engagement + +Violating any of these invalidates the engagement and may be illegal. + +1. **Authorization gate.** Before the first active scan in a session, you + MUST confirm with the user, in writing, that they own or have written + authorization to test the target. Record the acknowledgement in + `engagement/authorization.md` (see template). No acknowledgement → no + active scanning. Reading public pages with `curl` is fine; sending + payloads is not. + +2. **Scope allowlist.** Maintain `engagement/scope.txt` — one hostname or + CIDR per line. Every `nmap`, `curl`, `whatweb`, browser navigation, or + payload-bearing request MUST be against an entry in scope. If a target + redirects you off-scope (3xx to a different host, a link in HTML), + STOP and confirm with the user before following. + +3. **No production systems without paper.** If the user hasn't told you + "yes, prod is in scope and I have written sign-off," assume not. Default + targets are staging, local docker, dedicated test instances. + +4. **Cloud metadata is off by default.** Do not probe `169.254.169.254`, + `metadata.google.internal`, `100.100.100.200`, `[fd00:ec2::254]`, or + equivalent unless the engagement explicitly includes SSRF-to-metadata + as a goal AND the target is one you control. The agent's browser tool + can reach these from inside your own infrastructure — don't. + +5. **Destructive payloads need approval.** SQLi payloads that DROP/DELETE, + filesystem-write SSTI, command injection with `rm`/`shutdown`/`mkfs`, + anything that mutates beyond a single test row → ASK FIRST. The + `approval.py` system catches some; don't rely on it alone. + +6. **Aux-client leakage risk (Hermes-specific).** This skill produces + sessions full of SQLi/XSS/RCE payloads, captured credentials, JWT + tokens. Hermes' compression and title-generation paths replay history + through the auxiliary client (often the main model). Anything sensitive + you write to the conversation can leave the box on the next compress. + Mitigation: + - Redact captured tokens/credentials to the LAST 6 CHARS before logging + them in any message. Full values go to `engagement/evidence/` files, + never into chat history. + - If the engagement is sensitive, set `auxiliary.title_generation.enabled: false` + in `~/.hermes/config.yaml` for the session. + +7. **Rate limit yourself.** Default 200ms between active requests against + any single host. The recon-scan.sh script enforces this. Don't bypass + it without operator approval. + +8. **Authority of the report.** This skill produces a security + assessment, not a "PASS." Even a clean run is "no exploitable issues + FOUND in scope X within time T using methods Y" — not "the application + is secure." Mirror that language in the report. + +--- + +## Phase 0: Engagement Setup + +Before any scanning happens, create the engagement directory and +authorization acknowledgement. + +```bash +ENGAGEMENT=engagement-$(date +%Y%m%d-%H%M%S) +mkdir -p "$ENGAGEMENT"/{evidence,findings,reports} +cd "$ENGAGEMENT" +``` + +1. **Ask the user (verbatim):** + > "Confirm: (a) the target URL is [X], (b) you own this application + > or have written authorization to test it, and (c) the engagement + > may run for up to [N] hours starting now. Reply 'authorized' to + > proceed." + +2. **Wait for explicit `authorized` response.** Any other answer means STOP. + +3. **Record authorization** to `engagement/authorization.md` using the + template in `templates/authorization.md`. Include: + - Target URL(s) and IP(s) + - Authorization basis (ownership / written authz from $name) + - Engagement window + - Out-of-scope items (production, third-party services, etc.) + - Operator name (the user driving this session) + +4. **Build scope.txt:** + ``` + localhost + 127.0.0.1 + staging.example.com + 192.168.1.0/24 # internal lab only, with operator OK + ``` + +5. **Read** `references/scope-enforcement.md` before issuing the first + active request — that doc has the host-extraction rules you apply + to every command/URL before it goes out. + +--- + +## Phase 1: Pre-Recon (Code Analysis, optional) + +Skip if no source access (black-box engagement). + +If you have read access to the application source: + +1. **Map the architecture** — framework, routing, middleware stack +2. **Inventory sinks** — every `execute(`, `os.system(`, `eval(`, + template render, file read/write, redirect target +3. **Map auth** — session cookie vs JWT, OAuth flows, password reset, + privileged endpoints +4. **Identify trust boundaries** — what's authenticated, what's not, + what comes from `request.*` +5. **Backward taint** from each sink to a request source. Early-terminate + when proper sanitization is found (parameterized queries, allowlists, + `shlex.quote`, well-known escapers). + +Output: `evidence/pre-recon.md` — architecture map, sink inventory, +suspected vulnerable code paths. + +This is OFFLINE work. No traffic to the target. + +--- + +## Phase 2: Recon (Live, Read-Only) + +Maps the attack surface. All requests are GETs of public pages, no +payloads yet. Still scope-bounded. + +1. **Verify scope.** Resolve every target hostname → IP. Confirm IPs are + in scope (avoids the "DNS points somewhere unexpected" trap). + +2. **Network surface** (only if scope permits port scanning): + ```bash + nmap -sT -T3 --top-ports 100 -oN evidence/nmap.txt $TARGET + ``` + Use `-T3` (default), not `-T4/-T5`. Stealthier and avoids tripping + IDS/IPS in shared environments. + +3. **Tech fingerprint:** + ```bash + whatweb -v $TARGET_URL > evidence/whatweb.txt + curl -sIk $TARGET_URL > evidence/headers.txt + ``` + +4. **Endpoint discovery:** + - Crawl the app with the browser tool (`browser_navigate`, + `browser_get_images`, follow links). + - Inspect `robots.txt`, `sitemap.xml`, `.well-known/*`. + - Use the developer tools network panel via browser tool to capture + XHR/fetch calls. + +5. **Auth surface:** Identify login, registration, password reset, + session cookie names, token formats. Do NOT send credentials yet — + just observe. + +6. **Correlate with pre-recon** (if you have source). For each + `evidence/pre-recon.md` finding, mark whether the live surface + confirms it's reachable. + +Output: `evidence/recon.md` — endpoints, technologies, auth model, +input vectors. + +--- + +## Phase 3: Vulnerability Analysis + +One delegate_task per vulnerability class. Each agent reads +`evidence/recon.md` (+ `evidence/pre-recon.md` if present), produces +`findings/<class>-queue.json` using `templates/exploitation-queue.json`. + +Use `delegate_task` with these focused subagents (parallel where possible): + +| Class | Goal | Reference | +|-------|------|-----------| +| `injection` | SQLi, command, path traversal, SSTI, LFI/RFI, deserialization | `references/vuln-taxonomy.md` (slot types) | +| `xss` | Reflected, stored, DOM-based | `references/vuln-taxonomy.md` (render contexts) | +| `auth` | Login bypass, JWT confusion, session fixation, OAuth flaws | `references/exploitation-techniques.md` | +| `authz` | IDOR, vertical/horizontal escalation, business logic | `references/exploitation-techniques.md` | +| `ssrf` | Internal reachability, metadata, protocol smuggling | Skip metadata unless explicitly authorized | +| `infra` | Misconfig, info disclosure, default creds, exposed admin | `references/exploitation-techniques.md` | + +Each queue entry has: id, vuln class, source (file:line if known), +endpoint, parameter, slot type, suspected defense, verdict +(`identified` / `partial` / `confirmed` / `critical`), witness payload, +confidence (0-1), notes. + +The analysis phase doesn't send malicious payloads yet — it stages them. +The exploitation phase actually fires them. + +--- + +## Phase 4: Exploitation (Proof-Based, Conditional) + +Only run a sub-agent per class where the analysis queue has actionable +entries (`identified` or `partial`). + +For each candidate: + +1. **Pre-send check** — host in scope? auth gate satisfied? payload + approved if destructive? +2. **Send the witness payload** — minimal proof. SQLi: `' AND 1=1--` + then `' AND 1=2--`. XSS: a benign marker like + `<svg/onload=console.log("HERMES-PENTEST-XSS")>`. Never `alert(1)` in + stored XSS — it'll fire for other users in shared environments. +3. **Verify the witness fires** — for blind injection, use a sleep + probe (`SLEEP(5)`) and time the response. For SSRF, use a + tester-controlled callback host you own (NOT a public service like + webhook.site for sensitive engagements — exfil paths). +4. **Promote level:** + - **L1 Identified** — pattern matched, no behavior change + - **L2 Partial** — sink reached, but defense in place + - **L3 Confirmed** — payload changed app behavior in observable way + - **L4 Critical** — data extracted, code executed, access escalated +5. **Bypass exhaustion before classifying as FP.** For each candidate + that blocks: try at least the bypass set in + `references/bypass-techniques.md` for that class. Only after the set + is exhausted may you write `verdict: false_positive`. +6. **Record evidence** for every L3/L4: + - Full request (method, URL, headers, body) + - Response (status, headers, relevant body excerpt) + - Reproducer command (curl one-liner) + - Impact statement + +Output: `findings/exploitation-evidence.md` + +**Redact in evidence files:** +- Any captured credentials/tokens → last 6 chars only in chat; + full value to `findings/secrets-vault.md` (gitignored). +- Other users' PII → redact. +- Your test credentials → fine to keep. + +--- + +## Phase 5: Reporting + +Generate the final report using `templates/pentest-report.md`. Sections: + +1. Executive summary +2. Engagement scope (from `engagement/scope.txt`) +3. Authorization (from `engagement/authorization.md`) +4. Findings (L3/L4 only — proof-required). Per finding: + - Title, severity (CVSS 3.1), CWE + - Affected endpoint(s) + - Proof (request + response excerpt) + - Reproduction steps + - Impact + - Remediation +5. Not-exploited candidates (L1/L2 with notes on what blocked them) +6. Out-of-scope observations +7. Methodology / tools used +8. Limitations and what was NOT tested + +**Severity policy:** CVSS only for L3/L4. L1/L2 are "candidates pending +verification" — don't assign CVSS to unverified findings. + +--- + +## When to Stop + +- The user revokes authorization. +- A candidate finding clearly impacts production data and you don't have + approval for destructive testing — STOP and ask. +- The target starts returning 503/429 storms — back off, reconvene with + the operator. +- You discover something *outside* the contracted scope (e.g. an exposed + customer database while testing an unrelated endpoint). STOP, document, + report to the operator. Do not pivot without explicit approval — that + pivot is what makes pentesting illegal. + +--- + +## What This Skill Does NOT Cover + +- Network-layer pentesting beyond port scanning (no Metasploit, + Cobalt Strike, AD attacks, network protocol fuzzing). +- Reverse engineering / binary analysis (see issue #383). +- Source-only static analysis (see issue #382). +- Active social engineering / phishing. +- Anything against systems the operator hasn't pre-authorized. + +If the engagement needs any of these, escalate to a professional +pentester. This skill complements professional pentesting; it does +not replace it. + +--- + +## Further Reading + +- `references/scope-enforcement.md` — how to bound every active request +- `references/vuln-taxonomy.md` — slot types, render contexts, OWASP map +- `references/exploitation-techniques.md` — per-class payload patterns +- `references/bypass-techniques.md` — common WAF/filter bypasses +- `templates/authorization.md` — engagement authorization template +- `templates/pentest-report.md` — final report template +- `templates/exploitation-queue.json` — per-class finding queue schema +- `scripts/recon-scan.sh` — rate-limited nmap+whatweb+headers wrapper diff --git a/website/docs/user-guide/skills/optional/software-development/software-development-rest-graphql-debug.md b/website/docs/user-guide/skills/optional/software-development/software-development-rest-graphql-debug.md index 7b490962d9c..0698d855f5f 100644 --- a/website/docs/user-guide/skills/optional/software-development/software-development-rest-graphql-debug.md +++ b/website/docs/user-guide/skills/optional/software-development/software-development-rest-graphql-debug.md @@ -20,7 +20,7 @@ Debug REST/GraphQL APIs: status codes, auth, schemas, repro. | Author | eren-karakus0 | | License | MIT | | Tags | `api`, `rest`, `graphql`, `http`, `debugging`, `testing`, `curl`, `integration` | -| Related skills | [`systematic-debugging`](/user-guide/skills/bundled/software-development/software-development-systematic-debugging), [`test-driven-development`](/user-guide/skills/bundled/software-development/software-development-test-driven-development) | +| Related skills | [`systematic-debugging`](/docs/user-guide/skills/bundled/software-development/software-development-systematic-debugging), [`test-driven-development`](/docs/user-guide/skills/bundled/software-development/software-development-test-driven-development) | ## Reference: full SKILL.md diff --git a/website/sidebars.ts b/website/sidebars.ts index a994e4e7fee..4b0b787e67a 100644 --- a/website/sidebars.ts +++ b/website/sidebars.ts @@ -62,6 +62,7 @@ const sidebars: SidebarsConfig = { 'user-guide/features/curator', 'user-guide/features/memory', 'user-guide/features/memory-providers', + 'user-guide/features/honcho', 'user-guide/features/context-files', 'user-guide/features/context-references', 'user-guide/features/personality', @@ -97,6 +98,7 @@ const sidebars: SidebarsConfig = { 'user-guide/features/computer-use', 'user-guide/features/vision', 'user-guide/features/image-generation', + 'user-guide/features/spotify', 'user-guide/features/tts', 'user-guide/features/deliverable-mode', ], @@ -107,16 +109,10 @@ const sidebars: SidebarsConfig = { items: [ 'user-guide/features/web-dashboard', 'user-guide/features/extending-the-dashboard', + 'user-guide/features/api-server', 'user-guide/features/subscription-proxy', ], }, - { - type: 'category', - label: 'Advanced', - items: [ - 'user-guide/features/spotify', - ], - }, { type: 'category', label: 'Skills', @@ -151,6 +147,7 @@ const sidebars: SidebarsConfig = { 'user-guide/skills/bundled/autonomous-ai-agents/autonomous-ai-agents-claude-code', 'user-guide/skills/bundled/autonomous-ai-agents/autonomous-ai-agents-codex', 'user-guide/skills/bundled/autonomous-ai-agents/autonomous-ai-agents-hermes-agent', + 'user-guide/skills/bundled/autonomous-ai-agents/autonomous-ai-agents-kanban-codex-lane', 'user-guide/skills/bundled/autonomous-ai-agents/autonomous-ai-agents-opencode', ], }, @@ -357,6 +354,7 @@ const sidebars: SidebarsConfig = { items: [ 'user-guide/skills/bundled/software-development/software-development-debugging-hermes-tui-commands', 'user-guide/skills/bundled/software-development/software-development-hermes-agent-skill-authoring', + 'user-guide/skills/bundled/software-development/software-development-hermes-s6-container-supervision', 'user-guide/skills/bundled/software-development/software-development-node-inspect-debugger', 'user-guide/skills/bundled/software-development/software-development-plan', 'user-guide/skills/bundled/software-development/software-development-python-debugpy', @@ -582,6 +580,7 @@ const sidebars: SidebarsConfig = { 'user-guide/skills/optional/security/security-1password', 'user-guide/skills/optional/security/security-oss-forensics', 'user-guide/skills/optional/security/security-sherlock', + 'user-guide/skills/optional/security/security-web-pentest', ], }, { @@ -615,32 +614,57 @@ const sidebars: SidebarsConfig = { collapsed: true, items: [ 'user-guide/messaging/index', - 'user-guide/messaging/telegram', - 'user-guide/messaging/discord', - 'user-guide/messaging/slack', - 'user-guide/messaging/whatsapp', - 'user-guide/messaging/signal', - 'user-guide/messaging/email', - 'user-guide/messaging/sms', - 'user-guide/messaging/homeassistant', - 'user-guide/messaging/mattermost', - 'user-guide/messaging/matrix', - 'user-guide/messaging/dingtalk', - 'user-guide/messaging/feishu', - 'user-guide/messaging/wecom', - 'user-guide/messaging/wecom-callback', - 'user-guide/messaging/weixin', - 'user-guide/messaging/bluebubbles', - 'user-guide/messaging/qqbot', - 'user-guide/messaging/yuanbao', - 'user-guide/messaging/teams', - 'user-guide/messaging/teams-meetings', - 'user-guide/messaging/msgraph-webhook', - 'user-guide/messaging/line', - 'user-guide/messaging/simplex', - 'user-guide/messaging/ntfy', - 'user-guide/messaging/open-webui', - 'user-guide/messaging/webhooks', + { + type: 'category', + label: 'Popular', + items: [ + 'user-guide/messaging/telegram', + 'user-guide/messaging/discord', + 'user-guide/messaging/slack', + 'user-guide/messaging/whatsapp', + 'user-guide/messaging/signal', + 'user-guide/messaging/email', + 'user-guide/messaging/sms', + ], + }, + { + type: 'category', + label: 'Microsoft 365', + items: [ + 'user-guide/messaging/teams', + 'user-guide/messaging/teams-meetings', + 'user-guide/messaging/msgraph-webhook', + ], + }, + { + type: 'category', + label: 'Chinese platforms', + items: [ + 'user-guide/messaging/dingtalk', + 'user-guide/messaging/feishu', + 'user-guide/messaging/wecom', + 'user-guide/messaging/wecom-callback', + 'user-guide/messaging/weixin', + 'user-guide/messaging/qqbot', + 'user-guide/messaging/yuanbao', + ], + }, + { + type: 'category', + label: 'Other', + items: [ + 'user-guide/messaging/homeassistant', + 'user-guide/messaging/mattermost', + 'user-guide/messaging/matrix', + 'user-guide/messaging/bluebubbles', + 'user-guide/messaging/google_chat', + 'user-guide/messaging/line', + 'user-guide/messaging/simplex', + 'user-guide/messaging/ntfy', + 'user-guide/messaging/open-webui', + 'user-guide/messaging/webhooks', + ], + }, ], }, { @@ -653,8 +677,6 @@ const sidebars: SidebarsConfig = { 'integrations/providers', 'user-guide/features/mcp', 'user-guide/features/acp', - 'user-guide/features/api-server', - 'user-guide/features/honcho', 'user-guide/features/provider-routing', 'user-guide/features/fallback-providers', 'user-guide/features/credential-pools', @@ -724,6 +746,7 @@ const sidebars: SidebarsConfig = { 'developer-guide/model-provider-plugin', 'developer-guide/image-gen-provider-plugin', 'developer-guide/video-gen-provider-plugin', + 'developer-guide/web-search-provider-plugin', 'developer-guide/plugin-llm-access', 'developer-guide/creating-skills', 'developer-guide/extending-the-cli', @@ -734,6 +757,7 @@ const sidebars: SidebarsConfig = { label: 'Internals', items: [ 'developer-guide/tools-runtime', + 'developer-guide/browser-supervisor', 'developer-guide/acp-internals', 'developer-guide/cron-internals', 'developer-guide/trajectory-format', @@ -745,16 +769,34 @@ const sidebars: SidebarsConfig = { type: 'category', label: 'Reference', items: [ - 'reference/cli-commands', - 'reference/slash-commands', - 'reference/profile-commands', - 'reference/environment-variables', - 'reference/tools-reference', - 'reference/toolsets-reference', - 'reference/mcp-config-reference', - 'reference/model-catalog', - 'reference/skills-catalog', - 'reference/optional-skills-catalog', + { + type: 'category', + label: 'Command Reference', + items: [ + 'reference/cli-commands', + 'reference/slash-commands', + 'reference/profile-commands', + ], + }, + { + type: 'category', + label: 'Configuration Reference', + items: [ + 'reference/environment-variables', + 'reference/mcp-config-reference', + 'reference/model-catalog', + ], + }, + { + type: 'category', + label: 'Tools & Skills Reference', + items: [ + 'reference/tools-reference', + 'reference/toolsets-reference', + 'reference/skills-catalog', + 'reference/optional-skills-catalog', + ], + }, 'reference/faq', ], },