All agent CLIs
Hermes Agent in NeuroSquad

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 hermes CLI, your own config
  • Nothing written to your Hermes home
  • Free, for Windows 10 and 11
Lifecycle webhooks

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_callwebhook
Working

pre_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_requestwebhook
Needs you

Hermes 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_endwebhook
Finished

on_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.

Watch it work

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 it gets

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: pre_llm_call marks it working, pre_approval_request and clarify — waiting on you, on_session_end — finished.

    Docs: Finished and waiting are different
  • A notification that says what it needs

    The toast leads with Hermes’s words: the dangerous-command description and the command, or the question clarify asks. One per agent; a waiting one stays until you answer.

    Docs: A notification that says what it needs
  • Failed turns end, too

    A provider that fails for good sends no end event in Hermes. The card watches for Hermes’s own ❌ API failed, Rate limited and Billing lines while a turn is open, so it never hangs on “working”.

    Docs: Failed turns end, too
  • 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 hermes chat --resume <id>, following /new and compression too.

    Docs: Picks up where it left off
  • The Squad status card

    Every AI agent of the workspace on one card, with its model — from Hermes’s usage records, or model.default of your own config before the first turn.

    Docs: The Squad status card
  • 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 browser_*, terminal_*, note_* or agent_* — mid-session, because Hermes reloads its tool list when the server says it changed.

    Docs: Arrows are tools
  • Connected from the first prompt

    Hermes’s CLI only starts MCP when your own config.yaml lists a server. So each card types /reload-mcp once, the moment the prompt is ready — you’ll see it in the card, and it lands in Hermes’s input history.

    Docs: Connected from the first prompt
  • Canvas mode

    The card switches off Hermes’s terminal, code_execution, web, search and browser toolsets, so commands run in terminal cards and the web opens in browser cards. It holds in --yolo too.

    Docs: Canvas mode
  • 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 consent
  • Skills from skills.sh

    An arrow to a skill card gives Hermes skill_load with each skill and when to use it. Your own Hermes skills folder isn’t touched.

    Docs: Skills from skills.sh
  • 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 post_api_request webhook; the window from Hermes’s own model catalogue, or its status bar. The ring turns amber from 80%.

    Docs: Context meter
  • Compact is /compress

    The card’s Compact button sends Hermes’s own /compress, and the conversation continues in the same card and session.

    Docs: Compact is /compress
  • Usage limits: noticed, not timed

    Hermes retries a rate limit itself and then gives up with ❌ 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”.

    Docs: Usage limits: noticed, not timed
  • 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 queue
  • Journal and hand-off

    Hermes’s last reply is read from its state.db: the journal note, a hand-off to a fresh agent, agent_wait, custom cards and Telegram all get Hermes’s real answer.

    Docs: Journal and hand-off
  • 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 config.yaml through Hermes’s managed scope, merged over yours leaf by leaf and rewritten on every launch. %LOCALAPPDATA%\hermes and ~/.hermes are never written.

    Docs: A config layer, not your config
  • Isolated worktrees

    Give an agent its own git worktree, so parallel agents never edit the same files. On resume --no-restore-cwd keeps Hermes in the card’s folder.

    Docs: Isolated worktrees
  • 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 reviewer
  • Dangerous mode, per card

    For a run you trust, a card starts hermes --yolo chat: no approval prompts. Third-party MCP calls then skip NeuroSquad’s consent dialog too. Off by default.

    Docs: Dangerous mode, per card
  • Instructions, two ways

    Hermes reads AGENTS.md itself. NeuroSquad’s session instructions go in HERMES_EPHEMERAL_SYSTEM_PROMPT — after your own system prompt, never saved.

    Docs: Instructions, two ways
  • 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 cost
  • Budget 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 brake
  • OpenRouter 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 ~/.hermes/.env can’t override it.

    Docs: OpenRouter models
  • 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 phone
  • Install it yourself

    Hermes is a Python app with its own installer, so the setup wizard doesn’t install it. Install it once; NeuroSquad finds hermes.exe in its venv.

    Docs: Install it yourself
At a glance

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.

AgentTokensCost
coupon-fix1,046,210$2.14
api-migration731,488$1.52
docs-pass184,502$0.11
Total1,962,200$3.77
Exact to the picodollar; rounded only on screen.Requests count how often Hermes’s totals grew — it keeps no per-call log.
Under the hood

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:

What NeuroSquad adds to the command
❯ hermes
chatevery launchthe interactive CLI
--resume <its session id> --no-restore-cwdlater launchesthe same conversation, in the card’s folder
HERMES_MANAGED_DIR=<this card’s folder>every launcha per-card config.yaml merged over yours
hooks.outbound → /hook/<token>/<card>/Hermesevery launchlifecycle webhooks to this card, token only in the environment
HERMES_EPHEMERAL_SYSTEM_PROMPT=<session instructions>every launchNeuroSquad’s session instructions, never saved
/reload-mcpevery launchtyped once when the prompt is ready: connects MCP
agent.disabled_toolsets: terminal, code_execution, web, search, browsercanvas modeits shell, code and web toolsets off
--yolodangerous modeno approval prompts

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.

FAQ

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.