Skip to main content
Hermes is the always-on orchestrator whose community pattern is delegation: Hermes plans and coordinates, then hands work to specialist CLIs. Nika slots into exactly that pattern as the deterministic workflow worker — not another coding agent (that’s OpenCode’s seat), but the runner for work that should be repeatable, budgeted and auditable.
Hermes orchestrates · Nika runs the plan with receipts.

Install the skill (day 1 — no catalog wait)

The Nika delegation skill lives in the public marketplace repo and installs three ways:
New skills take effect next session (or --now). The skill teaches the delegation idiom end-to-end: scaffold via terminal(), the check-before-run law, budget caps on paid models, background+poll for long runs, and the receipts loop (nika trace show · nika trace verify). For schema/validation answers without shell round-trips, nika wire hermes (0.99+) writes the oracle into ~/.hermes/config.yaml for you — or add it by hand, then /reload-mcp:
Validation and learning only — running workflows stays on the terminal, where the budget flags and traces live (the oracle’s contract).

Prove the delegation

In a Hermes session:
Use the nika skill: smoke-test my nika install offline, then create hello.nika.yaml from the chain template, check it, and run it with the mock model. Report the trace verify verdict.
Expected: nika --versionnika try 01-hello (offline, zero keys) → nika new chain hello.nika.yamlnika check --json → mock run → nika trace verify <trace> exit 0 (path from the run card’s trace: line — the bare form is a usage error).

The two clocks

Hermes runs live — its terminal is a pipe, and a long nika run renders quietly until the final card. The skill teaches the fix: launch with background=true, poll with process(action="poll"), then read nika trace show <trace> for the run card.

Cost honesty in delegation

  • Always pass --max-cost-usd on paid cloud models. Since 0.99 the pre-start floor prices the effective model (--model override included): a workflow that prices above the budget refuses to start (exit 2, zero tokens). Mid-run, the ledger stops the moment real spend crosses — the crossing call completes, nothing new starts, the run fails NIKA-1704 (exit 1) with spent-vs-budget.
  • Prefer local models for drafts (ollama/…) — no key, no meter.
  • An uncataloged model meters as $0: never rely on the budget cap for a custom endpoint (cost honesty).

Field notes (verified on hermes v0.18.2)

Four traps from a real 10-step end-to-end, so you don’t pay for them twice:
  • A 401 naming openrouter you never chose. Hermes’s provider auto-detect sees OPENAI_API_KEY in your shell and routes to OpenRouter — the first chat dies with HTTP 401: Missing Authentication header against openrouter.ai. Fix: set provider: explicitly in the config (ollama for local, or your actual vendor).
  • ~/.hermes/config.yaml IS the live config. Its header comment says “copy this file to cli-config.yaml” — that applies to the hooks layer, not the main config. Edit config.yaml itself; mcp_servers: blocks there load on the next session.
  • Trust the log, not the model’s word. The deterministic proof the oracle is wired is ~/.hermes/logs/agent.log: MCP server 'nika' (stdio): registered 9 tool(s). In-session the tools appear namespaced as mcp__nika__nika_check, so a prompt naming a bare tool verbatim can miss. Small local models can go further and narrate a delegation they never executed — receipts come from the terminal (nika trace verify), never from prose. Drive the delegation loop with a capable model.
  • Pass workdir on every terminal call. The skill teaches it; a driver that skips it runs the workflow from Hermes’s own cwd and relative reads fail (NIKA-BUILTIN-READ-001 on a file that exists in your project).