feat(shared): add Hermes as a built-in terminal agent

Merged
KI
3mo ago
+71-0

What

Adds Hermes Agent (Nous Research) as a built-in terminal agent. This builds on @hackice20's #5802, which added the manifest entry; this PR carries that forward onto the current manifest shape and adds the icon and wiring every other builtin has. Thank you @hackice20 for kicking this off; the commit carries your Co-authored-by.

  • packages/shared/src/builtin-terminal-agents.ts: hermes entry
  • packages/ui/src/assets/icons/preset-icons/hermes.svg + hermes-white.svg, registered in index.ts (a small caduceus mark; Hermes has no vector logo upstream, its favicon is the ⚕ glyph and the README banner is pixel art, so this is a simple monochrome stand-in that can be swapped if Nous publishes one)
  • README "Supported Agents" row, apps/docs/content/docs/agent-integration.mdx bullet, UniversalCompatibilityDemo entry + apps/marketing/public/app-icons/hermes.svg
  • Registration test in agent-command.test.ts (prompt shape, preset args, resume args)

Manifest

FieldValueVerified against
commandhermes chat --yoloCLI reference: --yolo is both a global and a hermes chat option
promptCommandhermes chat --yolo -q-q, --query is the only way to pass a prompt; hermes chat has no positional (checked hermes_cli/_parser.py)
promptCommandSuffix; hermes chat --yolo -c-c, --continue resumes the most recent session, so a prompt launch runs the query and then lands in the interactive chat on that session, same shape as kimi
resumeCommandhermes chat --yolo -r (+ session id)-r, --resume <SESSION_ID>
nonInteractiveCommandhermes chat -qone-shot without --yolo, like claude -p

Differences from #5802: the base command is hermes chat --yolo rather than hermes --yolo (the reference documents chat as the subcommand; bare hermes also defaults to chat per main.py, so both work, but chat is the documented form), and prompt launches continue into the TUI instead of exiting after the one-shot answer. Not added to the default terminal presets, matching droid/pi/polygraph; happy to flip includeInDefaultTerminalPresets.

Live-checked against an installed Hermes v0.20.5 on macOS (2026-08-23): hermes chat -h documents exactly the flags above (-q/--query, -r SESSION_ID, -c/--continue, --yolo), and hermes chat --yolo boots to the REPL (a fresh install stops at "no model configured - run /model", so a full prompt round-trip needs a provider configured; the launch shape itself is verified).

One thing I could not verify without a configured Hermes install: that a -q run is saved as a session so the -c suffix picks it up (the source points that way: hermes_cli/oneshot.py describes the separate stateless -z mode as bypassing cli.py with "no session_id line" - implying a normal chat -q run does record a session and print its id). If it does not, dropping promptCommandSuffix leaves the one-shot behaviour #5802 had.

Hermes runs as a plain terminal agent, same shape as Pi / Cursor Agent, so no packages/agent-setup target or wrapper is needed.

Testing

  • bun run typecheck clean
  • bun run lint clean
  • bun test packages/shared 778 pass

Based on #5802 (left open; the author can close it once this lands).

https://claude.ai/code/session_01DuAhw6Ao5Cru3acdkrzx9f


Summary by cubic

Adds Hermes as a built-in terminal agent for consistent CLI handling, icons, and docs. Previously unavailable; now prompt launches run a -q one-shot and auto-continue into the interactive chat; resume uses -r; non-interactive uses hermes chat -q.

  • Registers hermes in packages/shared/src/builtin-terminal-agents.ts with base hermes chat --yolo, prompt hermes chat --yolo -q, prompt suffix ; hermes chat --yolo -c, resume hermes chat --yolo -r, and non-interactive hermes chat -q.
  • Adds light/dark icons in packages/ui/src/assets/icons/preset-icons/*, wires them in packages/ui/src/assets/icons/preset-icons/index.ts, exposes Hermes in the desktop Agent Icon Picker and settings search (keywords include “hermes” and “nous”).
  • Updates docs and marketing: README supported-agents row, apps/docs agent-integration and terminal-presets entries, apps/marketing/public/app-icons/hermes.svg, and UniversalCompatibilityDemo.
  • Tests in packages/shared/src/agent-command.test.ts cover registration, prompt continuation shape, and derived preset args.
  • Not added to the default terminal preset bar; no packages/agent-setup target.

Summary by CodeRabbit

  • New Features
    • Added Hermes as a supported coding and research agent.
    • Enabled interactive, prompt-based, resumable, and non-interactive Hermes workflows.
    • Added Hermes to agent selection, quick-add templates, and settings search.
    • Added light and dark Hermes icons across supported interfaces.
  • Documentation
    • Added Hermes to supported-agent and terminal-preset documentation.
  • Tests
    • Added coverage for Hermes command handling and workflow options.