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