Subshell Docs
Agents

Hermes Agent

Nous Research's open agent CLI as a Subshell harness, and the one-time MCP registration it needs.

Hermes is Nous Research's open agent CLI. As a Subshell harness it runs Hermes' own interactive interface in a pane. The one thing it does differently from Claude Code, OpenCode, and Codex: Subshell cannot wire the MCP server in per launch, so you register it once per machine, and the preset editor shows you the exact command.

Finding the binary

Subshell resolves hermes on the machine that will run the pane: the hermes on the PATH there (including what a login shell would find), then its known install location under your home directory. Set HERMES_PATH on that machine's environment to name the binary explicitly. If detection finds nothing, Installing Agent CLIs covers the one-line installer, and the vendor installation docs the manual path.

What a launch looks like

A bare launch starts Hermes' interactive chat; which interface you get, the classic REPL or the TUI, is left to your own Hermes display setting, and Subshell never overrides it. The preset editor offers Hermes' per-invocation settings as fields (model, provider, toolsets), plus its suggested flags. Hermes has no create-time flag for naming its session, so the subshell's display name is not forwarded to it; Subshell's own naming, sharing, and logs still apply.

Registering Subshell once

Hermes reads MCP servers only from its fixed global config file, ~/.hermes/config.yaml: there is no per-launch config flag or environment override. A per-subshell registration is therefore impossible, and Subshell writes nothing to that file on its own.

Open the preset editor for Hermes (the Presets page) and its MCP section shows what to do: one labeled step to register subshell, and one to undo it. The registration is a single non-interactive command of this shape:

hermes mcp add subshell --command 'subshell' --args 'mcp'

The editor does not make you fill anything in. The command is deliberately the portable PATH spelling rather than one machine's absolute launch path, because the entry lands in whichever machine's ~/.hermes/config.yaml you run it on: subshell is every enrolled node's own daemon binary, so what you paste is correct on every node; run it once on each machine where Hermes panes run. The one machine the PATH spelling can miss is a control-plane host that runs the server with no agent installed; there, subshell-server status prints that host's own resolved MCP entrypoint, and you can paste its command and args in place of the two names shown above.

Why one global entry is per-subshell-correct

The registered command only names how to start subshell mcp. The process inherits the environment of the pane that spawned it, including that subshell's own baked-in API key, so one registration serves every Hermes subshell on the machine, and no pane can authenticate as another. This is what makes the shared-host case safe: the credential is per-pane, not per-config-entry.

"Already registered" means the subshell entry is present in ~/.hermes/config.yaml; hermes mcp remove subshell (the second step the editor shows) takes it out again. Until you register, Hermes subshells launch and run normally; you simply have no channels or agent-to-agent tools inside them.

See also

  • pi: the other harness with one-time registration
  • Channels: what the MCP registration unlocks inside the pane
  • The MCP server: how the tools and credentials work
  • Installing Agent CLIs: the in-page installer for the hermes binary
Edit on GitHub

Last updated on

On this page