Run every coding agent side by side.
Hermes is a desktop console for coding agents from any vendor. Each task gets its own agent, terminal and branch, and one inbox tells you which agent is waiting for you.
claude code · codex · antigravity · opencode · copilot · goose · aider · kiro · your own commandmacOS · Linux · Windows (best-effort) · free · BSL 1.1
- 1One row per agentEach task's agent, its status, model, approval mode and branch. Claude Code, Codex, Antigravity and OpenCode side by side.
- 2Blocked on youThe badge counts the agents waiting for an approval, an answer or your review. Click it for the inbox.
- 3The agent's own interfaceEvery agent runs in its own terminal, exactly as it would anywhere else. The line under the header says what it is doing and how Hermes knows.
- 4Every turn recordedEach turn's changes are saved, so you can diff or restore one without touching your branch.
From a terminal with a chat to a console for every agent.
Hermes 1 put one agent's chat at the center. Hermes 2.0 starts, tracks and lands the work of any agent the same way. It follows what each agent reports and never answers a prompt for you: approvals stay in the agent's own interface.
| feature | what you get |
|---|---|
| Any agent | Claude Code, Codex, Antigravity CLI, OpenCode, GitHub Copilot CLI, goose, Aider, Kiro CLI, Hermes Agent, or any command you add as a Custom agent. |
| Terminal first | Every agent runs its own interface in its own terminal. The Agent view for Claude stays available as an option. |
| Task launcher⌘N | Describe the task, press Enter, and an agent starts on its own branch with your task as its first prompt. |
| Accounts | Work and personal accounts side by side; pick the account, model, effort and approval mode per task. |
| Status | Needs approval, asked you, done or failed, reported by the agent itself where it can, with nothing to set up. |
| Inbox⌘I | Everything blocked on you in one list, oldest first; ⌘I jumps to the next agent. |
| Away messages | One short message to ntfy, Telegram or your webhook when an agent waits and you are away. |
| Turn history | Every turn saved in git, with Diff and Restore, without touching your branch or stash. |
| Review Desk⌘G | Review by turn or by file and send line comments to the agent that wrote them. |
| Land | Commit, open a pull request or squash-merge in one step, with undo. |
| Checks | Your commands decide when an agent is done: they run at the end of each turn and before landing. |
| Feature Tracks | Guided phases as short markdown files in your repository, approved from the inbox. |
| Worktree recipes | Setup commands, .env copies and a default check for every new task. |
| Survives restarts | Agents keep running while Hermes quits, updates or restarts. |
| Spend | What each agent reports it spent, an estimate where it only logs tokens, n/a otherwise; an optional cap per session. |
| Disk guard | No new task below 10 GB free; leftover worktree folders go in one action. |
Describe the task, pick the agent, press Enter.
The agent starts in a terminal on a new branch of its own, with your task as its first prompt. Pick the account, model, effort and approval mode it runs with; Hermes shows the exact command before it starts.
CLAUDE_CONFIG_DIR=~/.claude-work claude --permission-mode acceptEdits --model opus --effort high 'Let customers request partial refunds' · in worktree hermes/let-customers-request-partial-refunds from main+ project context note- where
- A new worktree on its own branch, an existing branch, or the folder you are in.
- approval
- Each agent's own modes, from Ask to Skip all. Skip all is marked as risky.
- checks
- Commands such as npm test that run when a turn ends and before you land.
- setup
- A .hermes/worktree.toml in your repository can run setup commands and copy files like .env into every new task.
- more at once
- Launch & next keeps the launcher open; Also on starts the same task with a second agent.
Know which agent needs you.
Every session shows one status: working, needs approval, asked you, done, error or idle, marked exact when the agent reports it itself. Everything blocked on you collects in one inbox, oldest first, and ⌘I jumps to the next agent.
Away from your desk
Hermes can send one short message to ntfy, Telegram or a webhook of yours when an agent waits for you and you are not at the keyboard. It carries the agent, where it works, the task name and its state, never your prompts or code.
Notifications on your computer arrive only when an agent is blocked on you or done, never for the session you are looking at.
When an agent is blocked on you and Hermes is not in front of you, Hermes sends one message to this address: a webhook (JSON), an ntfy topic URL, or a Telegram bot sendMessage URL with chat_id. It carries only the agent, where it works (folder and session number), the task name you gave it and the state, never prompts or code. Leave it empty to send nothing.
With Hermes in the background the message goes at once. While Hermes is in front of you, it goes once the agent has waited this long with no key or click in Hermes (you may have stepped away).
Review by turn. Comment by line. Land with undo.
Hermes saves every agent turn in git, without touching your branch, staged changes or stash. The Review Desk shows what changed by turn or by file, sends your line comments to the agent that wrote those lines, and lands the work in one step.
- land
- Commit on the branch, push and open a pull request, or squash-merge locally.
- undo
- Landed by mistake? Undo reverses it.
- restore
- Restore or revert a single turn, after a preview.
- risk flags
- Lockfiles, CI workflows, auth code, secrets and new binaries are flagged.
- overlap
- Sessions whose turns touched the same files get a badge before you merge.
Bigger features go through phases you approve.
Tick Track as a feature and the agent works in phases: questions, research, design, structure, plan, implement. Each phase is a short markdown file in your repository. The agent stops after each one until you approve it, edit it or skip it.
- files
- .hermes/features/<name>/ in the task's branch, reviewed in your own editor.
- approvals
- A phase that waits for you shows in the inbox; approving it starts the next one.
- any agent
- Every agent drives a track from its own terminal. Quick tasks create no extra files.
Your agents, your accounts.
Hermes checks which agents are installed and signed in, and what each one offers at launch. Keep a work and a personal account side by side and choose per task. Hermes never changes the agents' own global settings.
Hermes shows the spend an agent reports. When an agent only writes token counts to its transcript, Hermes estimates the cost at list prices and marks it (estimated); otherwise it shows n/a.
Each session shows the spend its agent reports, an estimate marked as one when the agent only logs tokens, or n/a. A cap stops an agent once its reported spend reaches the limit, and tasks beyond the limit wait in a queue.
- agents
- Claude Code, Codex, Antigravity CLI, OpenCode, GitHub Copilot CLI, goose, Aider, Kiro CLI and Hermes Agent, or any command you add as a Custom agent.
- resume
- Quit and reopen Hermes: each agent continues its own conversation.
- keeps running
- Agents keep working while Hermes quits, updates or restarts.
- rules
- See which instruction files each agent loads, and link CLAUDE.md to AGENTS.md in one action.
Every common action has a shortcut.
Shown for macOS. On Windows and Linux most use Ctrl+Shift, so plain Ctrl+letter stays with your terminal.
| command | keys | group |
|---|---|---|
| New task | ⌘N | tasks |
| New session (advanced: SSH, tmux, existing branch) | ⌘⇧N | tasks |
| Switch to session | ⌘1–9 | tasks |
| Jump to the next agent waiting for you | ⌘I | attention |
| Attention inbox | ⌘⇧I | attention |
| Review Desk | ⌘G | review |
| Command palette | ⌘K | navigation |
| Sidebar | ⌘B | navigation |
| New tab | ⌘T | panes |
| Split right | ⌘D | panes |
| Split down | ⌘⇧D | panes |
| Close pane | ⌘W | panes |
| Prompt composer | ⌘J | panes |
| Keyboard shortcuts | ⌘/ | layout |
| Settings | ⌘, | layout |
Recently shipped
Full changelog- v2.1.2Open a session in any folder, git or not: a plain folder, a parent folder that holds several projects, or a mix. A folder that is not a git repository opens directly, with no worktree, and the agent is told it may create a worktree or branch itself if it needs to change code in a repository inside it.
- v2.1.1Agents start reliably in project folders that macOS protects (Documents, Desktop, iCloud Drive and similar). If a new terminal briefly cannot find its folder, Hermes moves into the project folder before starting the agent, so the agent no longer stops with a confusing "low max file descriptors" error. If the folder really cannot be read, the session says which folder it is and how to allow access in System Settings → Privacy & Security.
- v2.1.0Hermes 2.1 brings thousands of ready-made prompts into the app and keeps old task folders from quietly filling your disk.
- v2.0.0Hermes 2.0 is a vendor-neutral console for every coding agent, terminal first. Claude Code, Codex, Antigravity, GitHub Copilot, OpenCode, goose, Aider, Kiro, Hermes Agent or any command you add run in their own terminal interface, exactly as they run anywhere else, and Hermes supervises them all the same way: it starts them, tells you which one needs you, records what each turn changed and helps you review and land the result. Hermes follows what your agents report and never answers a prompt on their behalf. The Agent view for Claude stays available as an option. Hermes IDE is not affiliated with Nous Research or its Hermes Agent.
- v1.4.1Every agent now opens in its own terminal, updates wait until your agents are done, a crash stays inside its pane, and Hermes is private by default.
Download Hermes IDE.
Free. Runs on your machine, with the agents and accounts you already have. Source-available under BSL 1.1.
- platforms
- macOS · Linux · Windows (best-effort)
- license
- BSL 1.1, source-available
- price
- free
- latest version
- v2.1.2