Agent CLI Reference: 5-Tool Comparison
A side-by-side reference for Claude Code, Pi Coding Agent, OpenCode, Hermes Agent, and OpenClaw.
1. Claude Code (Anthropic)
Role: Primary generalist coding agent. Best all-around tool.
License: Proprietary (free tier + Pro subscription)
Runtime: Node.js
Config: CLAUDE.md in project root
Key Capabilities
| Feature | How To | Course Reference |
|---|---|---|
| Multi-agent teams | claude --teammate-mode tmux | M4 — teammate-mode spawns agents in split panes |
| Headless execution | claude -p "prompt" --print | M5 CI/CD pipeline |
| Constrained tools | --allowedTools "Read Write Edit" | M3 security (L4 whitelist pattern) |
| Hooks system | .claude/hooks/*.py | M3 hook architecture (13 lifecycle events) |
| Subdirectory rules | frontend/CLAUDE.md, backend/CLAUDE.md | M2 skills deep dive |
| Stop hook self-improve | PostToolUse → headless claude session | M3, also ClaudeFAST pattern |
Boilerplate Setup
# Project initialization
claude --init
# Launch with teammate mode
claude --teammate-mode tmux
# Headless CI mode
claude -p "Implement the feature described in spec.md" --allowedTools "Read Write Edit Bash" --print
# With custom hooks directory
claude --hooks .claude/hooks/Hook Lifecycle (13 events)
| Phase | Events |
|---|---|
| Session | Setup, SessionStart, SessionEnd |
| Main Loop | UserPromptSubmit, PreToolUse, PermissionRequest, PostToolUse, PostToolUseFailure, Stop, Notification |
| Subagents | SubagentStart, SubagentStop |
| Maintenance | PreCompact |
2. Pi Coding Agent (pi.dev)
Role: Customizable agent harness. Full control over every aspect.
License: Open source (MIT)
Runtime: Node.js (TypeScript SDK)
Config: .pi/settings.json, .pi/agents/*.md
Key Capabilities
| Feature | How To | Course Reference |
|---|---|---|
| Extensions | pi -e extensions/<name>.ts | M3 — damage-control, tilldone |
| RPC mode | pi --mode rpc | M5 — programmatic control (26+ commands) |
| Agent teams | agent-team extension + teams.yaml | M4 dispatcher pattern |
| Agent chains | agent-chain extension + agent-chain.yaml | M4 pipeline pattern ($INPUT/$ORIGINAL) |
| P2P communication | coms (Unix sockets) / coms-net (HTTP/SSE) | M4 flat P2P pattern |
| Mental models | .pi/multi-team/expertise/*.yaml | M4 agent memory, self-improve commands |
| Damage control | damage-control.ts + damage-control-rules.yaml | M3 three access levels |
| Skills system | .pi/skills/*/SKILL.md | M2 composable skills |
Boilerplate Setup
# Launch with extensions
pi -e extensions/damage-control.ts -e extensions/tilldone.ts -e extensions/minimal.ts
# Launch with multiple extensions (stackable)
pi -e extensions/purpose-gate.ts -e extensions/tool-counter.ts
# RPC mode (programmatic control from any language)
pi --mode rpc
# Pi-to-Pi peer communication (same machine)
just local-coms --name planner --purpose "Plans the work"
just local-coms --name coder --purpose "Writes the code"
# Pi-to-Pi networked (across machines)
just coms-net-server # hub
just coms --name dev # client 1
just coms2 --name prod # client 2Extension Catalog (16 total)
| Category | Extensions |
|---|---|
| UI | pure-focus, minimal, theme-cycler, session-replay |
| Monitoring | tool-counter, tool-counter-widget |
| Task | tilldone, purpose-gate |
| Multi-Agent | subagent-widget, agent-team, agent-chain |
| Safety | damage-control, damage-control-continue |
| P2P | coms, coms-net |
| Cross-Tool | cross-agent, system-select |
| Meta | pi-pi |
Pi Agent Rust Port (Jeff Emanuel, 1,024★)
A Rust reimplementation of the Pi agent with zero unsafe code.
| Feature | Pi (TypeScript) | Pi Agent Rust |
|---|---|---|
| Extensions | Full (16+) | Compatible |
| RPC mode | Yes | Yes |
| Performance | Baseline | ~2x faster |
| Binary size | ~35MB | ~8MB |
| Memory safety | Node.js GC | Zero unsafe Rust |
The 4 Dimensions of Control (Pi's strength)
| Dimension | Pi's Advantage |
|---|---|
| Context | Full control over what the agent sees via extensions |
| Model | Any provider, any model — pluggable |
| Prompt | Skills, system prompts, agent .md files — fully customizable |
| Tools | Extensions can add, remove, or override any tool |
3. OpenCode (opencode.ai)
Role: Open-source Claude Code alternative. MIT license.
License: MIT (open source)
Runtime: Node.js (npm global package)
Config: Shares ~/.grok/config.toml with Claude Code
Key Capabilities
| Feature | How To | Course Reference |
|---|---|---|
| Headless commands | opencode run "prompt" | M5 CI/CD alternative to Claude Code CLI |
| Model selection | opencode --model opencode-go/deepseek-v4-flash | M6 cascade routing |
| Proxy support | Routes through localhost:18901/v1 | M6 cost optimization |
| Shared config | Uses same ~/.grok/config.toml | M5 production stack — dual tool setup |
| Go models | 12 Go-optimized models available | M6 economics (Go models are cheaper per token) |
Available Go Models (through proxy)
| Model ID | Cost Tier | Best For |
|---|---|---|
opencode-go/deepseek-v4-flash | Budget | General agentic tasks ($10/mo flat) |
opencode-go/deepseek-v4-pro | Mid | Complex reasoning |
opencode-go/kimi-k2.6 | Mid | Long context |
opencode-go/qwen3.6-plus | Budget | Structured tasks |
opencode-go/minimax-m2.7 | Budget | Fast responses |
Boilerplate Setup
# Headless task execution
opencode run "Refactor the auth module to use JWT tokens"
# With specific model
opencode --model opencode-go/deepseek-v4-flash run "Write unit tests for the API"
# With custom config
opencode --config ~/.grok/config.toml run "Deploy to staging"
# List available models
opencode modelsWhen to Use OpenCode Instead of Claude Code
| Scenario | Choose |
|---|---|
| Need open-source license | OpenCode |
| Budget-constrained | OpenCode (Go models at $10/mo flat) |
| CI/CD pipelines | OpenCode run command |
| Primary development | Claude Code (better tool calling) |
| Need hooks system | Claude Code (13 events vs OpenCode's limited hooks) |
| Heterogeneous stack | Both (OpenCode as backup/alternative model) |
4. Hermes Agent (Some Engineering Inc.)
Role: TypeScript-native, MCP-first agent for structured workflows.
License: Open source
Runtime: Node.js (TypeScript)
Design philosophy: MCP-native architecture, structured output first
Key Capabilities
| Feature | How To | Course Reference |
|---|---|---|
| MCP-native tools | Built-in MCP client | M2 Beyond MCP channels |
| Structured output | TypeScript types enforced | M2 context management |
| Tool-use workflows | Designed for function-calling chains | M2 agent loop variants |
| OpenClaw ecosystem | Integrates with OpenClaw agents | M4 multi-agent orchestration |
Boilerplate Setup
# Run with MCP server
hermes --mcp-servers ./mcp-config.json
# Execute workflow
hermes run workflow.ts
# With custom tools
hermes --tools-dir ./tools/When to Use Hermes
- Building TypeScript-native agent pipelines
- MCP-first architecture (tools as MCP servers)
- Tight integration with OpenClaw ecosystem
- Structured output enforcement (TypeScript types)
5. OpenClaw
Role: Always-on agent employee. Heartbeat-driven, autonomous execution.
License: Open source
Runtime: Node.js daemon
Design philosophy: "If it can receive a heartbeat, it's hired."
Key Capabilities
| Feature | How To | Course Reference |
|---|---|---|
| Heartbeat model | Wakes on schedule, works, sleeps | M7 always-on agents |
| One-shot execution | claw do "task" | M5 production task dispatch |
| Device-key pairing | Auth via device key + invite | M5 deployment modes |
| Paperclip-native | Primary agent for Paperclip orchestration | M7 framework comparison |
| tmux integration | Can run inside tmux sessions | M5 production stack |
Boilerplate Setup
# Start as daemon (always-on employee)
claw start --daemon
# One-shot task
claw do "Review the latest PR and leave comments"
# Schedule recurring task
claw schedule --cron "0 6 * * 1" --task "Generate weekly report"
# Check status
claw status
# Stop daemon
claw stopHeartbeat Execution Model
Timer fires → Check for queued work → Wake agent → Execute → Report results → SleepNo continuous running. The agent wakes, works, and goes back to sleep. This is the most cost-effective model for scheduled/recurring work.
Comparison Matrix
| Feature | Claude Code | Pi Agent | OpenCode | Hermes | OpenClaw |
|---|---|---|---|---|---|
| License | Proprietary | MIT | MIT | Open | Open |
| Cost | Pro sub | Free | Free | Free | Free |
| Hooks | 13 events | Extension events | Limited | MCP events | None |
| Multi-agent | teammate-mode | Extensions | No | Chains | Heartbeats |
| P2P coms | No | coms/coms-net | No | No | No |
| Headless mode | --print | RPC mode | run | Yes | daemon |
| MCP support | Built-in | Via extensions | Via proxy | Native | Via Paperclip |
| Best for | Generalist coding | Custom harness | OSS alternative | TS pipelines | Always-on tasks |
| Course module | M3, M4, M5 | M3, M4, M5 | M5, M6 | M5 | M5, M7 |
Quick Selection Guide
What are you building?
├── A feature? → Claude Code
├── A custom workflow? → Pi Agent
├── An open-source project? → OpenCode
├── A TypeScript pipeline? → Hermes
└── A recurring task? → OpenClaw
Need multiple?
├── Production system → All 5 (see REFERENCE-STACK.md)
├── Budget constrained → OpenCode + Go models
├── Maximum control → Pi Agent + extensions
└── Enterprise rollout → Claude Code + Agent Manager