Hermes Agent,wired into the canvas
Run Hermes Agent in as many cards as you like, each a real `hermes chat` in its own terminal. Its own lifecycle webhooks tell NeuroSquad when it works, stops on a dangerous command or finishes, arrows give it browsers, terminals and notes, and every card picks its conversation back up after a restart.
Official sitehermes-agent.nousresearch.com- The real
hermesCLI, your own config - Nothing written to your Hermes home
- Free, for Windows 10 and 11
It knows when Hermes is done — and when it’s asking
Hermes can post its own lifecycle events to a URL. Every card gets its own: the turn’s start, an approval it waits for, and the end of the turn — so the card never guesses from a quiet terminal.
pre_llm_callwebhookpre_llm_call of the main agent: the card’s icon spins and the Squad card counts it as working. Subagents from delegate_task and Hermes’s background memory review don’t count as a turn.
pre_approval_requestwebhookHermes stops on a dangerous command. The card pulses and the toast leads with Hermes’s own words — recursive delete: rm -rf dist. A clarify question lands here too.
on_session_endwebhookon_session_end for the turn the main agent opened. The next queued prompt goes out, the journal gets the answer from Hermes’s state.db, and a toast says it’s done.
A failed provider isn’t “working” forever
When a provider fails for good Hermes sends no end event. While a turn is open the card also watches for Hermes’s own ❌ API failed / Rate limited line and ends it.
One status everywhere
The card, the sidebar, the Squad card, custom cards and the phone all read the same status.
Your hooks stay yours
Hermes replaces lists when it merges config, so NeuroSquad reads your own hooks.outbound entries and keeps them next to its own.
Three things Hermes does in NeuroSquad
Replicas of the app, played step by step. When something needs an answer, it’s yours to give.
Hermes fixes a failing test in the connected terminal, stops on a dangerous command, and finishes — the journal writes itself.
Everything Hermes Agent can do in NeuroSquad
Hermes is one of the most deeply supported agent CLIs. Here is all of it — including where Hermes works differently from Claude Code, and what can’t be done.
- 01
Knows its state
Hermes’s own lifecycle webhooks report every turn, so nothing is guessed.
Finished and waiting are different
Each card gets Hermes outbound webhooks:
Docs: Finished and waiting are differentpre_llm_callmarks it working,pre_approval_requestandclarify— waiting on you,on_session_end— finished.A notification that says what it needs
The toast leads with Hermes’s words: the dangerous-command description and the command, or the question
Docs: A notification that says what it needsclarifyasks. One per agent; a waiting one stays until you answer.Failed turns end, too
A provider that fails for good sends no end event in Hermes. The card watches for Hermes’s own
Docs: Failed turns end, too❌ API failed,Rate limitedandBillinglines while a turn is open, so it never hangs on “working”.Picks up where it left off
Hermes picks its own session ids — it can’t start one you choose. The id arrives with every webhook, so the next launch is
Docs: Picks up where it left offhermes chat --resume <id>, following/newand compression too.The Squad status card
Every AI agent of the workspace on one card, with its model — from Hermes’s usage records, or
Docs: The Squad status cardmodel.defaultof your own config before the first turn.
- 02
Works through the canvas
An arrow from the card is a set of tools, reached over NeuroSquad’s MCP server.
Arrows are tools
An arrow to a browser, terminal, note or another agent gives Hermes
Docs: Arrows are toolsbrowser_*,terminal_*,note_*oragent_*— mid-session, because Hermes reloads its tool list when the server says it changed.Connected from the first prompt
Hermes’s CLI only starts MCP when your own config.yaml lists a server. So each card types
Docs: Connected from the first prompt/reload-mcponce, the moment the prompt is ready — you’ll see it in the card, and it lands in Hermes’s input history.Canvas mode
The card switches off Hermes’s
Docs: Canvas modeterminal,code_execution,web,searchandbrowsertoolsets, so commands run in terminal cards and the web opens in browser cards. It holds in--yolotoo.MCP servers, with consent
Hermes has no per-call approval for MCP tools and declines elicitation in its CLI. So for an installed server NeuroSquad asks itself: allow once, for this session, or deny — no answer in five minutes means deny.
Docs: MCP servers, with consentSkills from skills.sh
An arrow to a skill card gives Hermes
Docs: Skills from skills.shskill_loadwith each skill and when to use it. Your own Hermes skills folder isn’t touched.
- 03
Built for long runs
Context, compression, provider limits and a running journal — handled on the card.
Context meter
Prompt tokens of the latest request come from Hermes’s
Docs: Context meterpost_api_requestwebhook; the window from Hermes’s own model catalogue, or its status bar. The ring turns amber from 80%.Compact is
/compressThe card’s Compact button sends Hermes’s own
Docs: Compact is /compress/compress, and the conversation continues in the same card and session.Usage limits: noticed, not timed
Hermes retries a rate limit itself and then gives up with
Docs: Usage limits: noticed, not timed❌ Rate limited after N retries. The card shows the limit — but Hermes names no reset time, so there’s nothing to count down to and no automatic “continue”.Prompt queue
Line up the next messages: each goes out when the webhook says the turn is finished — never in a pause mid-thought.
Docs: Prompt queueJournal and hand-off
Hermes’s last reply is read from its
Docs: Journal and hand-offstate.db: the journal note, a hand-off to a fresh agent,agent_wait, custom cards and Telegram all get Hermes’s real answer.
- 04
Works in a team
Your Hermes config stays yours; each card gets a layer on top of it.
A config layer, not your config
Each card gets its own
Docs: A config layer, not your configconfig.yamlthrough Hermes’s managed scope, merged over yours leaf by leaf and rewritten on every launch.%LOCALAPPDATA%\hermesand~/.hermesare never written.Isolated worktrees
Give an agent its own git worktree, so parallel agents never edit the same files. On resume
Docs: Isolated worktrees--no-restore-cwdkeeps Hermes in the card’s folder.Add a reviewer
One click starts an agent on a different CLI in the same worktree, with a prompt to review without editing. Hermes is on that list too — after Codex, Claude Code, Qwen Code and OpenCode.
Docs: Add a reviewerDangerous mode, per card
For a run you trust, a card starts
Docs: Dangerous mode, per cardhermes --yolo chat: no approval prompts. Third-party MCP calls then skip NeuroSquad’s consent dialog too. Off by default.Instructions, two ways
Hermes reads
Docs: Instructions, two waysAGENTS.mditself. NeuroSquad’s session instructions go inHERMES_EPHEMERAL_SYSTEM_PROMPT— after your own system prompt, never saved.
- 05
Cost, control and access
What it spends, what it may spend, which model it runs on, and how you reach it.
Usage and cost
Hermes keeps running totals per session and model. NeuroSquad records how much each grew between scans: tokens and cost match Hermes’s own totals exactly; “requests” are those growth steps, not API calls.
Docs: Usage and costBudget brake
A limit per workspace. Past it, automatic prompts to Hermes stop — the queue, daily prompts, delegation. Raise the limit and it’s lifted; your own typing is never blocked.
Docs: Budget brakeOpenRouter models
Run a card on an OpenRouter model through a provider of its own, with the key in a variable only that card sees — a key in
Docs: OpenRouter models~/.hermes/.envcan’t override it.From your phone
Scan a QR code and the whole canvas opens in the phone’s browser: read Hermes’s terminal, answer its question, send the next prompt.
Docs: From your phoneInstall it yourself
Hermes is a Python app with its own installer, so the setup wizard doesn’t install it. Install it once; NeuroSquad finds
Docs: Install it yourselfhermes.exein its venv.
Who’s waiting, and what it cost
Two cards that answer the questions you ask most when several Hermes agents run at once.
The Squad status card
Every agent of the workspace with its status, model and turn time. The one waiting on you comes first, with Hermes’s own words for what it asks.
coupon-fixHermes AgentHermes-4-405Brecursive delete: rm -rf distNeeds you2:34
api-migrationHermes AgentHermes-4-405BMove routes to the new clientWorking11:07
react-docsHermes AgentHermes-4-70BLook up the useEffect docsWorking5:25
docs-passHermes AgentHermes-4-70BUpdate the READMEFinished3 min. ago
Usage & cost
Read from Hermes’s own `state.db` on your disk and matched to the card by session id. The rows always add up to the total.
| Agent | Tokens | Cost | ||
|---|---|---|---|---|
| coupon-fix | 1,046,210 | $2.14 | ||
| api-migration | 731,488 | $1.52 | ||
| docs-pass | 184,502 | $0.11 | ||
| Total | 74 | 1,962,200 | $3.77 |
The real Hermes, plus a config layer
NeuroSquad starts the same `hermes` you run yourself, in a real terminal in the card. Hermes has no per-launch settings flag, so most of this travels through its managed scope and the environment:
No secrets on disk
The per-card config names ${NEUROSQUAD_MCP_TOKEN}; the token itself lives only in that Hermes process’s environment.
Your settings win where you set them
The layer sets only its own keys. An administrator’s managed scope is merged in with its values winning.
A clean exit
Closing the window sends /exit, so Hermes finishes the session in its database and prints the id to resume.
Hermes Agent in NeuroSquad, answered
Give Hermes Agent a canvas
Free for Windows 10 and 11. Your code, your config and your costs stay on your machine.