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:--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).
Wire the oracle (optional, recommended)
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:
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 --version → nika try 01-hello
(offline, zero keys) → nika new chain hello.nika.yaml → nika 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 longnika 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-usdon paid cloud models. Since 0.99 the pre-start floor prices the effective model (--modeloverride 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 failsNIKA-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_KEYin your shell and routes to OpenRouter — the first chat dies withHTTP 401: Missing Authentication headeragainstopenrouter.ai. Fix: setprovider:explicitly in the config (ollamafor local, or your actual vendor). ~/.hermes/config.yamlIS the live config. Its header comment says “copy this file to cli-config.yaml” — that applies to the hooks layer, not the main config. Editconfig.yamlitself;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 asmcp__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
workdiron 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-001on a file that exists in your project).