Claude Code vs Codex vs Goose vs Hermes vs Pi
Overview
Five agent harnesses that all run tools on your behalf, but which sit at different points on two axes: how much of the harness you control, and whether the agent is a coding tool or a general operator.
- Claude Code — Anthropic’s terminal-native coding agent. Polished, opinionated, model-locked.
- Codex — OpenAI’s coding agent, delivered as desktop app, CLI, IDE extensions and web. Orchestration-first.
- Goose — Block’s open-source, model-agnostic agent. MCP-native by design.
- Hermes Agent — Nous Research’s always-on general agent. Memory and messaging, not primarily code.
- Pi Coding Agent — minimal open-source harness for engineers who want to own the whole stack.
The useful split: Claude Code and Codex are products (vendor model, vendor support, subscription). Goose, Hermes and Pi are harnesses (bring your own model, own your own ops). Hermes is the odd one out on the second axis — it is an always-on life/work operator that happens to run skills, not a coding agent.
Identity & deployment
| Dimension | Claude Code | Codex | Goose | Hermes | Pi |
|---|---|---|---|---|---|
| Maker | [[../../RESOURCES/COMPANIES/anthropic | Anthropic]] | OpenAI | Block | Nous Research |
| License | Proprietary | App proprietary; CLI open-source | Open-source | Open-source | Open-source |
| Written in | TypeScript / Node | — | Rust | — | — |
| Primary interface | Terminal | Desktop app | CLI + desktop GUI | Messaging apps | Terminal |
| Other surfaces | VS Code, JetBrains, GitHub | CLI, IDE ext, web | Web UI | WebUI, desktop, voice, 3D | — |
| Platforms | macOS, Linux, WSL | App macOS only; CLI cross-platform | macOS stable, Linux CLI stable, Windows beta | Anywhere it is hosted | Cross-platform |
| Hosting model | Local | Local app + cloud sandbox | Local | Local, VPS or managed | Local |
| Cost | $20–200/mo subscription | Included in ChatGPT plan | Free + model API | Free + model API | Free + model API |
Model & protocol
| Dimension | Claude Code | Codex | Goose | Hermes | Pi |
|---|---|---|---|---|---|
| Model choice | ❌ Anthropic only | ❌ OpenAI only | ✅ Any provider | ✅ BYO key | ✅ Any provider |
| Providers | Claude | GPT-5.2-Codex family | OpenAI, Claude, Gemini, Groq, Bedrock, Ollama… | OpenRouter, Claude, local | Codex, Claude, Kimi, MiniMax, Qwen, Copilot |
| Local models | ❌ | ❌ | ✅ Ollama | ✅ Ollama | ✅ via OpenRouter |
| MCP client | ✅ native | ✅ first-class | ✅ MCP-first architecture | ⚠️ some MCP tools | ⚠️ not documented |
| MCP server | ✅ | ✅ | — | — | — |
| Config | CLAUDE.md, .claude/ | AGENTS.md, config.toml | Recipes, extensions | Skills | models.json, auth.json |
Goose is the strongest MCP story of the five: extensions are MCP servers, so the protocol is the extension mechanism rather than an add-on. See MCP support across agent CLIs.
Agent architecture
| Dimension | Claude Code | Codex | Goose | Hermes | Pi |
|---|---|---|---|---|---|
| Multi-agent | ✅ subagents | ✅ parallel threads | ⚠️ via sub-recipes | ✅ Kanban swarms | ✅ orchestrator/leads/workers |
| Isolation between agents | Independent contexts | Git worktrees | — | — | — |
| Agent-to-agent comms | ❌ hierarchical only | ❌ | ❌ | ⚠️ swarm board | ✅ peer-to-peer |
| Persistent memory | ⚠️ per-project files | ⚠️ thread history | ⚠️ save/resume sessions | ✅ learns across sessions | ⚠️ stashing |
| Skill accumulation | ❌ | ⚠️ authored skills | ⚠️ authored recipes | ✅ grows new skills | ❌ |
| Background/async | ✅ background tasks | ✅ long-running threads | ✅ | ✅ always-on | — |
Safety & control
| Dimension | Claude Code | Codex | Goose | Hermes | Pi |
|---|---|---|---|---|---|
| Sandboxing | ⚠️ local, prompt-gated | ✅ cloud container | ⚠️ local | ❌ host machine | ⚠️ local |
| Permission model | Tool approval prompts | Granular + team rules | Fine-grained per tool | — | Permission gates |
| Bypass mode | --dangerously-skip-permissions | Elevated ops | — | — | YOLO mode |
| Rollback | ✅ checkpoints + /rewind | ⚠️ git worktree revert | ❌ | ❌ | ⚠️ stashing |
| Auth for tools | OAuth, allowlists | Headers, env, OAuth | ✅ OAuth2 | — | auth.json |
Extensibility & automation
| Dimension | Claude Code | Codex | Goose | Hermes | Pi |
|---|---|---|---|---|---|
| Extension system | MCP + hooks + skills | Skills library | Extensions + recipes | 100+ skill library | Marketplace |
| Marketplace | ❌ | ⚠️ curated | ⚠️ community recipes | ✅ | ✅ |
| Scheduling | ❌ | ✅ automations | ✅ cron recipes | ✅ | ❌ |
| Lifecycle hooks | ✅ | ⚠️ team rules | — | — | ⚠️ extensions |
| Browser automation | ✅ Claude in Chrome | — | ✅ scraping | — | ✅ Playwright |
| Voice | ❌ | ❌ | ✅ Whisper/ElevenLabs | ✅ | ❌ |
| Messaging channels | ❌ | ❌ | ❌ | ✅ 7+ platforms | ❌ |
| SDK | ✅ Agent SDK | ✅ | — | — | — |
Legend — ✅ supported · ⚠️ partial or indirect · ❌ not supported · — not documented in this vault
Architecture at a glance
Each diagram uses the same layer skeleton — interface, orchestrator, agent layer, model router, tools, sandbox, memory — so structural differences show up positionally rather than needing to be read.
Claude Code
flowchart TD UI["CLI / VS Code / JetBrains"] --> ORCH[Core Engine] ORCH --> SUB[Subagents] ORCH --> HOOK[Hooks] ORCH --> MODEL["Anthropic models only"] SUB --> TOOLS["Tool layer + MCP client/server"] TOOLS --> SBX["Local FS, approval prompts"] ORCH --> MEM["Checkpoints + CLAUDE.md"]
Codex
flowchart TD UI["Desktop app / CLI / IDE / web"] --> ORCH[Thread manager] ORCH --> SUB[Parallel agent threads] ORCH --> AUTO[Automations scheduler] ORCH --> MODEL["OpenAI Codex models only"] SUB --> TOOLS["Skills + MCP client/server"] TOOLS --> SBX["Cloud sandbox + git worktrees"] ORCH --> MEM["Thread history + AGENTS.md"]
Goose
flowchart TD UI["CLI / desktop GUI"] --> ORCH[Agent loop] ORCH --> SUB["Recipes + sub-recipes"] ORCH --> CRON[Recipe scheduler] ORCH --> MODEL["Any provider incl. Ollama"] SUB --> TOOLS["Extensions ARE MCP servers"] TOOLS --> SBX["Per-tool permissions + OAuth2"] ORCH --> MEM["Session save / resume / export"]
Hermes
flowchart TD UI["Telegram / WhatsApp / Slack / voice"] --> ORCH["Agent OS"] ORCH --> SUB[Kanban swarms] ORCH --> MODEL["BYO key incl. local Ollama"] SUB --> TOOLS["Skill library, 100+"] TOOLS --> SBX["Host machine or VPS"] ORCH --> MEM["Persistent memory + learned skills"] MEM --> TOOLS
Pi
flowchart TD UI[CLI] --> ORCH["Minimal harness, 200-token prompt"] ORCH --> SUB["Orchestrator / team leads / workers"] SUB <--> P2P["Pi-to-Pi peer messaging"] ORCH --> MODEL["models.json - Codex, Claude, Kimi, Qwen"] SUB --> TOOLS[Extension marketplace] TOOLS --> SBX["Permission gates or YOLO"] ORCH --> MEM[Stashing]
The diagrams make three things visible that the tables state but do not dramatise: Pi is the only one with a bidirectional edge between agents, Hermes is the only one where memory feeds back into the tool layer, and Codex is the only one whose sandbox sits outside the local machine.
Where each one wins
Claude Code — the strongest safety-and-recovery story. Checkpoints with /rewind revert code and conversation, which no other harness here offers. Best choice when the work is risky, long, and you want to undo cheaply. The cost is lock-in: Anthropic models only, proprietary, subscription-priced.
Codex — the only one built from the ground up for orchestration rather than pairing. Git worktrees give real parallel isolation, automations run scheduled work unattended, and the cloud sandbox means agent execution is not on your machine. Best for delegating many long-running tasks at once. Constrained by macOS-only for the app and OpenAI-only models.
Goose — the best protocol citizen and the most genuinely portable. MCP is the architecture, not a feature; recipes are shareable, schedulable, parameterised units of work; it runs against any provider including fully local. Best when you want automation you own and can move between models.
Hermes — not competing with the other four. It is an always-on operator reachable from messaging apps, whose differentiator is continuity: it retains project context and converts repeated work into named skills. Best for recurring operational work — inbox triage, SEO pipelines, content production. The honest caveat from the source notes: “always-on” is a property of where you host it, and self-hosting has real upkeep cost.
Pi — the harness-engineering choice. Minimal by design so you can shape it, with peer-to-peer agent communication that preserves context across agents instead of funnelling everything through an orchestrator. Best for building reusable, model-agnostic agentic workflows. Practitioner guidance in the vault suggests an 80/20 split: Claude Code for mainstream work, Pi for experimental and highly controlled workflows.
Choosing
| If you want… | Use |
|---|---|
| Safe, undoable autonomous coding | Claude Code |
| Many parallel long-running tasks | Codex |
| Model-portable, ownable automation | Goose |
| An always-on operator with memory | Hermes |
| To build your own harness | Pi |
| Local-only, no vendor dependency | Goose, Hermes or Pi |
Confidence & gaps
This note is synthesised from the vault’s existing per-tool notes, which vary in age and depth. Known soft spots, flagged rather than papered over:
- Pi MCP support — the source note documents an extension marketplace and custom tools but never mentions MCP. Marked ⚠️ rather than assumed.
- Hermes MCP depth — only one MCP integration is named in the source. Its client capability is likely broader but is not documented.
- Codex CLI licensing — the CLI is understood to be open-source while the desktop app is not; worth confirming before relying on it.
- Language/runtime for Codex, Hermes and Pi is not recorded in the vault.
- codex describes the May 2025 cloud agent on Codex-1/o1 and is superseded by Codex App for anything current.
Related
- Claude Code · Claude Code 2.0 · Codex App · Goose · Hermes Agent · Pi Coding Agent
- Model Context Protocol — the integration standard all five touch
- MCP support in Goose, Claude, Gemini, Amp, Codex CLI — deeper per-platform MCP detail
- Multi-Agent Systems — the orchestration patterns underneath
- OpenClaw vs NanoClaw vs PicoClaw — the personal-assistant equivalent of this comparison
- Goose vs OpenCode · codename-goose-alternatives