What an Empty Prompt Costs: Measure the Baseline Tokens of 4 Coding Agent CLIs
- Book: LLM Observability Pocket Guide
- Also by me: Thinking in Go (2-book series) — Complete Guide to Go Programming + Hexagonal Architecture in Go
- My project: Hermes IDE | GitHub — an IDE for developers who ship with Claude Code and other AI coding tools
- Me: xgabriel.com | GitHub
---
OpenAI's docs for codex exec --json print a sample usage line: 24,763 input tokens, 24,448 of them cached, and 122 output tokens (Codex non-interactive docs). The page doesn't say what prompt produced it. Whatever it was, the model read about 200 tokens for every token it wrote.
Every coding agent CLI sends a prefix before your task says a word: its system prompt, the definitions of its built-in tools, the tools of the MCP servers you configured, and every instruction file it found on the way in. A fresh session sends that prefix again, and so does every headless run in CI.
Don't copy anyone's number for this, including the two samples quoted here. The prefix moves with the CLI version, the model, your global config and the folder you start in. So measure it: a one-word prompt through Claude Code, Codex, GitHub Copilot CLI and OpenCode, then the same prompt after adding one MCP server and one AGENTS.md. Every number in your table comes from your own machine.
What rides along before your prompt
The system prompt and built-in tools belong to the vendor. MCP servers and instruction files are yours.
MCP servers behave differently per CLI. Claude Code defers MCP tool definitions by default: "Only tool names and server instructions load at session start" (MCP docs). OpenCode's docs warn the opposite way: an MCP server "adds to the context," and some, like the GitHub MCP server, "tend to add a lot of tokens" (OpenCode MCP docs). Copilot CLI ships with the GitHub MCP server built in (GitHub docs). Codex's MCP page doesn't describe deferral either way (Codex MCP docs), which is one more reason to measure.
Instruction files are where an "empty" prompt stops being empty. Each CLI reads more files than its own:
| CLI | Instruction files it loads at startup |
|---|---|
| Claude Code | CLAUDE.md files, or AGENTS.md when no project CLAUDE.md exists (v2.1.277+), plus auto memory (docs) |
| Codex | ~/.codex/AGENTS.md, then AGENTS.md from the git root down to your folder, up to 32 KiB (docs) |
| Copilot CLI | AGENTS.md, .github/copilot-instructions.md, ~/.copilot/copilot-instructions.md, CLAUDE.md and GEMINI.md, combined (docs) |
| OpenCode | AGENTS.md (falling back to CLAUDE.md), plus ~/.config/opencode/AGENTS.md, or ~/.claude/CLAUDE.md if that one is missing (docs) |
Read the last two rows twice. Without a global OpenCode file, your personal ~/.claude/CLAUDE.md rides along in OpenCode too, and a repo's CLAUDE.md lands in Copilot CLI's prefix as well as Claude's.
!A tiny blank speech bubble perched on top of a tall stack of crates, gears and folded documents on a conveyor belt
Your one-word prompt is the small part of the first request.
Run 1: one word, four CLIs
Start in an empty git repo, so no project file sneaks in. Your global files still load, and that's the point: this is the baseline you pay for today.
mkdir -p ~/tmp/baseline && cd ~/tmp/baseline
git init -q
Claude Code and OpenCode also search parent folders, so check that ~ and ~/tmp hold no CLAUDE.md or AGENTS.md (Claude Code memory docs, OpenCode rules). Codex stops at the git root.
Claude Code. --output-format json returns usage, total_cost_usd and a per-model modelUsage breakdown (headless docs, cost tracking). The cost is a client-side estimate, not your bill. The commands below use jq to read the JSON.
claude -p "ping" --output-format json > claude-1.json
jq '.usage, .total_cost_usd' claude-1.json
jq '[.usage.input_tokens,
.usage.cache_creation_input_tokens,
.usage.cache_read_input_tokens] | add' claude-1.json
That second command matters. In Anthropic's usage object, input_tokens counts only what came after the last cache breakpoint, so the full input is the sum of all three fields (prompt caching docs). Read input_tokens alone and the baseline looks tiny. Also check .num_turns: if the agent ran a tool to answer ping, the usage covers more than one model request and counts the prefix more than once.
For a floor without your hooks, plugins, MCP servers and CLAUDE.md, add --bare. It needs ANTHROPIC_API_KEY, because bare mode skips your subscription login (headless docs).
Codex. codex exec --json streams JSONL, and turn.completed carries input_tokens, cached_input_tokens, output_tokens and reasoning_output_tokens (docs).
codex exec --json "ping" > codex-1.jsonl
jq -c 'select(.type=="turn.completed") | .usage' \
codex-1.jsonl
Here the cached count sits inside the input count: OpenAI's caching guide subtracts cached tokens from input to get the uncached part. So input_tokens is your prefix plus the one-word prompt, as long as the turn made a single model call.
Copilot CLI. The programmatic reference documents --output-format json but no usage fields. Its -s flag suppresses stats, so leave it off and the stats print after the reply (reference).
copilot -p "ping" 2>&1 | tee copilot-1.txt
GitHub's changelog says /usage, and the summary printed when a session ends, include "a break down of token usage for each model" (changelog). Check whether your -p output prints the same breakdown. For the split by layer, start copilot and type /context. It lists System Prompt, Custom Instructions, System Tools, MCP Tools and Messages separately (GitHub docs).
OpenCode. opencode run --format json emits raw JSON events (CLI docs). OpenCode records each step's tokens as input, output, reasoning and cache.read/cache.write. In a session posted to OpenCode's tracker, the stored step showed input 209 and cache read 18,944, so add the cache fields to input.
opencode run "ping" --format json > opencode-1.jsonl
jq -c 'select(.type=="step_finish") | .part.tokens' \
opencode-1.jsonl
If that prints nothing, you may be on a v2 build where step_finish never reaches stdout (open report). opencode stats --days 1 reads token usage from your stored sessions instead.
Run each command twice within a few minutes. The first run tends to write the prefix to the cache, and the second reads it back. On Claude models, cache reads bill at 0.1x the input rate or less (Anthropic), so a cold first session costs more than a warm repeat.
Here is which number to write down from each CLI:
| CLI | Full input for the turn | Where to read it |
|---|---|---|
| Claude Code | input_tokens + cache_creation_input_tokens + cache_read_input_tokens | .usage in the --output-format json result |
| Codex | input_tokens (cached tokens are already inside it) | turn.completed event |
| Copilot CLI | the per-layer lines | /context in an interactive session |
| OpenCode | input + cache.read + cache.write | step_finish events, or opencode stats |
Run 2: one MCP server and one AGENTS.md
Now add the two things most repos grow first. For the MCP server, use the reference "everything" server. Its README calls it "a test server for builders of MCP clients." Or use a server you actually run.
For the memory file, write a short AGENTS.md. Better still, copy the one from a work repo. In this repo all four CLIs read it, since there's no CLAUDE.md here or above it (Claude Code needs v2.1.277 or later for that).
cat > AGENTS.md <<'EOF'
# Project rules
- Run `npm test` before you say a task is done.
- Never edit files under migrations/ without asking.
EOF
Claude Code takes a one-off server with --mcp-config, and with -p it waits for the server to connect before the first turn (headless docs). Save this as mcp.json:
{
"mcpServers": {
"everything": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-everything"]
}
}
}
Then run it twice: once as shipped, once with tool search off, so you see what deferral saves you.
claude -p "ping" --output-format json \
--mcp-config mcp.json > claude-2.json
ENABLE_TOOL_SEARCH=false claude -p "ping" \
--output-format json --mcp-config mcp.json \
> claude-2-upfront.json
ENABLE_TOOL_SEARCH=false loads every MCP tool upfront (MCP docs). The gap between those two files is the price of one server's tool definitions on every fresh session. Claude Code skips that cost by default.
Codex: register the server, then rerun the Run 1 command into codex-2.jsonl. Delete the [mcp_servers.everything] table from ~/.codex/config.toml when you're done.
codex mcp add everything -- \
npx -y @modelcontextprotocol/server-everything
Copilot CLI: add the server with /mcp add, or put the same mcpServers block, with "type": "local", in ~/.copilot/mcp-config.json (GitHub docs). Rerun, then check /context to see the MCP Tools line grow. Remove the everything entry from ~/.copilot/mcp-config.json when you're done.
OpenCode: put the server in the repo's opencode.json and rerun.
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"everything": {
"type": "local",
"command": ["npx", "-y",
"@modelcontextprotocol/server-everything"],
"enabled": true
}
}
}
Turn the delta into money
The gap between Run 1 and Run 2 is what one MCP server and one memory file add to every session start. Multiply it the way your bill does: prefix tokens, times fresh sessions per day, times your model's input or cache-write rate, plus cache reads for every later turn that re-sends the prefix. Headless runs count, and so do parallel agents. Claude Code's docs say agent-team teammates "load CLAUDE.md, MCP servers, and skills automatically" (costs docs).
How that turns into money depends on the plan. On a Claude Pro or Max subscription, the dollar figure in /usage "isn't relevant for billing purposes," but the tokens still draw down your plan limits (costs docs). On Copilot, plans moved to GitHub AI Credits on June 1, 2026, "calculated based on token consumption, including input, output, and cached tokens" (GitHub changelog). Annual Pro and Pro+ plans stay on premium requests until they expire (same changelog). On an API key, every token is billed.
If the delta surprises you, the fixes are boring. Claude Code's docs suggest moving workflow-specific instructions out of CLAUDE.md into skills that load on demand, and keeping CLAUDE.md under 200 lines (costs docs). Turn off MCP servers you aren't using. Check your global files, because they ride along in every repo.
Watching the baseline in Hermes IDE
I build Hermes IDE, so weigh this section with that in mind. Hermes runs each agent in a real terminal by default, and for every session it shows spend: the cost the agent reports, or an estimate from its transcript, marked as estimated, with token totals (README).
Since 2.3.4, released October 15, 2026, there's also a context meter: it shows how full the conversation is and offers Compact when it gets close to full. Send the same ping as the first message of a session, and the context meter, the token total and the cost show your baseline before you've given the agent any real work. In the screenshot below, pressing the Context chip above a Claude Code session opened Claude Code's own /context breakdown, and each session's context gauge sits in the sidebar.
!Hermes IDE with a Claude Code session showing its /context breakdown, per-session context gauges in the sidebar, and a status strip with token total and estimated cost
Hermes 2.3.4: Claude Code's /context breakdown (44.4k of 1M tokens, 4%) after pressing the Context chip, with per-session context gauges in the sidebar and the token total and estimated cost in the status strip.
Hermes adds a layer of its own. Its project scan points the agent at a context file, kept within a token budget you can set per project, and saved memory facts and pinned files reach every later session (README). Run the ping in a Hermes session and in a plain terminal on the same repo, and the difference shows what Hermes adds to the first request, if anything.
!Hermes IDE with Codex and Claude Code sessions side by side, each in its own hermes/ worktree, and a sidebar listing each session's status, context use, cost and branch
Hermes 2.3.4: Codex and Claude Code side by side, each in its own hermes/ worktree, with each session's status, context use, cost and branch in the sidebar.
Hermes is free, source-available under BSL 1.1, and runs on macOS, Windows and Linux. It isn't affiliated with Nous Research, Anthropic, OpenAI or any agent vendor. Download it or read the source on GitHub.
---
If this was useful
Measuring the baseline is the first token-cost question. The next ones are which session, tool call or teammate spent the rest, and whether the spend bought better answers. That's what the LLM Observability Pocket Guide covers: picking the tracing and evals tools that answer those questions for your team. If you'd rather watch the gauges than parse JSON, Hermes IDE puts them next to each agent.

1 comment
Mentions
Make humans and AI agents work as one team — open-source and self-hostable. multica-ai/multica
agent 干活进度看不见,交回来才发现跑偏? multica 是人与 agent 同看板协作:派 issue 给 agent,跑在自有机器上,进度卡点都汇报,完事交回评审。 带 agent 团队干活的话,看板协作比私聊派活清楚。 先给 agent 派哪类活,修 bug 还是写功能? #Agent协作 #开源 @grok multica-ai/multica
3 Trending GitHub Repos: Agents as Teammates, Company Context & Context-Window X-Ray Three repositories trending on GitHub, explained in plain language: what each one does, who should try it, how to get started, and what to watch out for. This time, all three are about agent context: Multica, a board where coding agents take issues like teammates; Onyx, a self-hosted layer that gives chat and agents your company's knowledge; and dsh-context, a DeepSeek Harness plugin that shows exactly what an agent is carrying in its context window. ⏱ Chapters 0:00 Intro & this week in dev tools 1:47 Multica: coding agents as teammates 4:43 Onyx: self-hosted company context 7:44 dsh-context: inside the context window 11:01 Summary 📦 Repos 1. multica-ai/multica – Multica / Index Labs (Go & TypeScript · Multica License: Apache 2.0 + additional conditions) multica-ai/multica Download: multica.ai Security model: multica.ai Self-hosting: github.com/multica-ai/multica/blob/main/SELF_HOST… 2. onyx-dot-app/onyx – Onyx / DanswerAI (Python · MIT core) onyx-dot-app/onyx Docs: docs.onyx.app Resource requirements: docs.onyx.app 3. bowenliang123/dsh-context – bowenliang123 (TypeScript · Apache-2.0) bowenliang123/dsh-context npm: npmjs.com DeepSeek Harness: deepseek.com 📰 News mentioned • Agentic AI Foundation adds Agent Skills, Open Responses, OpenEnv and OpenSandbox (Oct 22): linuxfoundation.org • GitHub package firewall in public preview (Oct 20): github.blog Star counts are as of 23 October 2026. Performance and resource claims are as reported in each project's README and docs. Summaries are simplified; see the repos for full details. Images: • Repo page screenshots: github.com/multica-ai/multica, github.com/onyx-dot-app/onyx, github.com/bowenliang123/dsh-context · screenshot • Onyx architecture diagram: github.com/onyx-dot-app/onyx/blob/main/docs/asset… · MIT • dsh-context Context Trend: github.com/bowenliang123/dsh-context/blob/main/do… · Apache-2.0 If you found this useful, like and subscribe for the next round of trending repos. #GitHub #OpenSource #AIAgents #DeveloperTools #ContextEngineering
@be_rosebee Check out multica (multica-ai/multica) if you're into using these orchestration patterns from within a UI. Traditional ticketing & tracking system for agents.
If you want to try Multica, it's here multica.ai and it's open source on GitHub too multica-ai/multica And for GitHub's side, their Agent HQ announcement is a good read github.blog
What an Empty Prompt Costs: Measure the Baseline Tokens of 4 Coding Agent CLIs - Book: LLM Observability Pocket Guide - Also by me: Thinking in Go (2-book series) — Complete Guide to Go Programming + Hexagonal Architecture in Go - My project: Hermes IDE | GitHub — an IDE for developers who ship with Claude Code and other AI coding tools - Me: xgabriel.com | GitHub --- OpenAI's docs for codex exec --json print a sample usage line: 24,763 input tokens, 24,448 of them cached, and 122 output tokens (Codex non-interactive docs). The page doesn't say what prompt produced it. Whatever it was, the model read about 200 tokens for every token it wrote. Every coding agent CLI sends a prefix before your task says a word: its system prompt, the definitions of its built-in tools, the tools of the MCP servers you configured, and every instruction file it found on the way in. A fresh session sends that prefix again, and so does every headless run in CI. Don't copy anyone's number for this, including the two samples quoted here. The prefix moves with the CLI version, the model, your global config and the folder you start in. So measure it: a one-word prompt through Claude Code, Codex, GitHub Copilot CLI and OpenCode, then the same prompt after adding one MCP server and one AGENTS.md. Every number in your table comes from your own machine. What rides along before your prompt The system prompt and built-in tools belong to the vendor. MCP servers and instruction files are yours. MCP servers behave differently per CLI. Claude Code defers MCP tool definitions by default: "Only tool names and server instructions load at session start" (MCP docs). OpenCode's docs warn the opposite way: an MCP server "adds to the context," and some, like the GitHub MCP server, "tend to add a lot of tokens" (OpenCode MCP docs). Copilot CLI ships with the GitHub MCP server built in (GitHub docs). Codex's MCP page doesn't describe deferral either way (Codex MCP docs), which is one more reason to measure. Instruction files are where an "empty" prompt stops being empty. Each CLI reads more files than its own: | CLI | Instruction files it loads at startup | |---|---| | Claude Code | CLAUDE.md files, or AGENTS.md when no project CLAUDE.md exists (v2.1.277+), plus auto memory (docs) | | Codex | ~/.codex/AGENTS.md, then AGENTS.md from the git root down to your folder, up to 32 KiB (docs) | | Copilot CLI | AGENTS.md, .github/copilot-instructions.md, ~/.copilot/copilot-instructions.md, CLAUDE.md and GEMINI.md, combined (docs) | | OpenCode | AGENTS.md (falling back to CLAUDE.md), plus ~/.config/opencode/AGENTS.md, or ~/.claude/CLAUDE.md if that one is missing (docs) | Read the last two rows twice. Without a global OpenCode file, your personal ~/.claude/CLAUDE.md rides along in OpenCode too, and a repo's CLAUDE.md lands in Copilot CLI's prefix as well as Claude's. !A tiny blank speech bubble perched on top of a tall stack of crates, gears and folded documents on a conveyor belt Your one-word prompt is the small part of the first request. Run 1: one word, four CLIs Start in an empty git repo, so no project file sneaks in. Your global files still load, and that's the point: this is the baseline you pay for today. mkdir -p ~/tmp/baseline && cd ~/tmp/baseline git init -q Claude Code and OpenCode also search parent folders, so check that ~ and ~/tmp hold no CLAUDE.md or AGENTS.md (Claude Code memory docs, OpenCode rules). Codex stops at the git root. Claude Code. --output-format json returns usage, total_cost_usd and a per-model modelUsage breakdown (headless docs, cost tracking). The cost is a client-side estimate, not your bill. The commands below use jq to read the JSON. claude -p "ping" --output-format json > claude-1.json jq '.usage, .total_cost_usd' claude-1.json jq '[.usage.input_tokens, .usage.cache_creation_input_tokens, .usage.cache_read_input_tokens] | add' claude-1.json That second command matters. In Anthropic's usage object, input_tokens counts only what came after the last cache breakpoint, so the full input is the sum of all three fields (prompt caching docs). Read input_tokens alone and the baseline looks tiny. Also check .num_turns: if the agent ran a tool to answer ping, the usage covers more than one model request and counts the prefix more than once. For a floor without your hooks, plugins, MCP servers and CLAUDE.md, add --bare. It needs ANTHROPIC_API_KEY, because bare mode skips your subscription login (headless docs). Codex. codex exec --json streams JSONL, and turn.completed carries input_tokens, cached_input_tokens, output_tokens and reasoning_output_tokens (docs). codex exec --json "ping" > codex-1.jsonl jq -c 'select(.type=="turn.completed") | .usage' \ codex-1.jsonl Here the cached count sits inside the input count: OpenAI's caching guide subtracts cached tokens from input to get the uncached part. So input_tokens is your prefix plus the one-word prompt, as long as the turn made a single model call. Copilot CLI. The programmatic reference documents --output-format json but no usage fields. Its -s flag suppresses stats, so leave it off and the stats print after the reply (reference). copilot -p "ping" 2>&1 | tee copilot-1.txt GitHub's changelog says /usage, and the summary printed when a session ends, include "a break down of token usage for each model" (changelog). Check whether your -p output prints the same breakdown. For the split by layer, start copilot and type /context. It lists System Prompt, Custom Instructions, System Tools, MCP Tools and Messages separately (GitHub docs). OpenCode. opencode run --format json emits raw JSON events (CLI docs). OpenCode records each step's tokens as input, output, reasoning and cache.read/cache.write. In a session posted to OpenCode's tracker, the stored step showed input 209 and cache read 18,944, so add the cache fields to input. opencode run "ping" --format json > opencode-1.jsonl jq -c 'select(.type=="step_finish") | .part.tokens' \ opencode-1.jsonl If that prints nothing, you may be on a v2 build where step_finish never reaches stdout (open report). opencode stats --days 1 reads token usage from your stored sessions instead. Run each command twice within a few minutes. The first run tends to write the prefix to the cache, and the second reads it back. On Claude models, cache reads bill at 0.1x the input rate or less (Anthropic), so a cold first session costs more than a warm repeat. Here is which number to write down from each CLI: | CLI | Full input for the turn | Where to read it | |---|---|---| | Claude Code | input_tokens + cache_creation_input_tokens + cache_read_input_tokens | .usage in the --output-format json result | | Codex | input_tokens (cached tokens are already inside it) | turn.completed event | | Copilot CLI | the per-layer lines | /context in an interactive session | | OpenCode | input + cache.read + cache.write | step_finish events, or opencode stats | Run 2: one MCP server and one AGENTS.md Now add the two things most repos grow first. For the MCP server, use the reference "everything" server. Its README calls it "a test server for builders of MCP clients." Or use a server you actually run. For the memory file, write a short AGENTS.md. Better still, copy the one from a work repo. In this repo all four CLIs read it, since there's no CLAUDE.md here or above it (Claude Code needs v2.1.277 or later for that). cat > AGENTS.md <<'EOF' # Project rules - Run `npm test` before you say a task is done. - Never edit files under migrations/ without asking. EOF Claude Code takes a one-off server with --mcp-config, and with -p it waits for the server to connect before the first turn (headless docs). Save this as mcp.json: { "mcpServers": { "everything": { "type": "stdio", "command": "npx", "args": ["-y", "@modelcontextprotocol/server-everything"] } } } Then run it twice: once as shipped, once with tool search off, so you see what deferral saves you. claude -p "ping" --output-format json \ --mcp-config mcp.json > claude-2.json ENABLE_TOOL_SEARCH=false claude -p "ping" \ --output-format json --mcp-config mcp.json \ > claude-2-upfront.json ENABLE_TOOL_SEARCH=false loads every MCP tool upfront (MCP docs). The gap between those two files is the price of one server's tool definitions on every fresh session. Claude Code skips that cost by default. Codex: register the server, then rerun the Run 1 command into codex-2.jsonl. Delete the [mcp_servers.everything] table from ~/.codex/config.toml when you're done. codex mcp add everything -- \ npx -y @modelcontextprotocol/server-everything Copilot CLI: add the server with /mcp add, or put the same mcpServers block, with "type": "local", in ~/.copilot/mcp-config.json (GitHub docs). Rerun, then check /context to see the MCP Tools line grow. Remove the everything entry from ~/.copilot/mcp-config.json when you're done. OpenCode: put the server in the repo's opencode.json and rerun. { "$schema": "https://opencode.ai/config.json", "mcp": { "everything": { "type": "local", "command": ["npx", "-y", "@modelcontextprotocol/server-everything"], "enabled": true } } } Turn the delta into money The gap between Run 1 and Run 2 is what one MCP server and one memory file add to every session start. Multiply it the way your bill does: prefix tokens, times fresh sessions per day, times your model's input or cache-write rate, plus cache reads for every later turn that re-sends the prefix. Headless runs count, and so do parallel agents. Claude Code's docs say agent-team teammates "load CLAUDE.md, MCP servers, and skills automatically" (costs docs). How that turns into money depends on the plan. On a Claude Pro or Max subscription, the dollar figure in /usage "isn't relevant for billing purposes," but the tokens still draw down your plan limits (costs docs). On Copilot, plans moved to GitHub AI Credits on June 1, 2026, "calculated based on token consumption, including input, output, and cached tokens" (GitHub changelog). Annual Pro and Pro+ plans stay on premium requests until they expire (same changelog). On an API key, every token is billed. If the delta surprises you, the fixes are boring. Claude Code's docs suggest moving workflow-specific instructions out of CLAUDE.md into skills that load on demand, and keeping CLAUDE.md under 200 lines (costs docs). Turn off MCP servers you aren't using. Check your global files, because they ride along in every repo. Watching the baseline in Hermes IDE I build Hermes IDE, so weigh this section with that in mind. Hermes runs each agent in a real terminal by default, and for every session it shows spend: the cost the agent reports, or an estimate from its transcript, marked as estimated, with token totals (README). Since 2.3.4, released October 15, 2026, there's also a context meter: it shows how full the conversation is and offers Compact when it gets close to full. Send the same ping as the first message of a session, and the context meter, the token total and the cost show your baseline before you've given the agent any real work. In the screenshot below, pressing the Context chip above a Claude Code session opened Claude Code's own /context breakdown, and each session's context gauge sits in the sidebar. !Hermes IDE with a Claude Code session showing its /context breakdown, per-session context gauges in the sidebar, and a status strip with token total and estimated cost Hermes 2.3.4: Claude Code's /context breakdown (44.4k of 1M tokens, 4%) after pressing the Context chip, with per-session context gauges in the sidebar and the token total and estimated cost in the status strip. Hermes adds a layer of its own. Its project scan points the agent at a context file, kept within a token budget you can set per project, and saved memory facts and pinned files reach every later session (README). Run the ping in a Hermes session and in a plain terminal on the same repo, and the difference shows what Hermes adds to the first request, if anything. !Hermes IDE with Codex and Claude Code sessions side by side, each in its own hermes/ worktree, and a sidebar listing each session's status, context use, cost and branch Hermes 2.3.4: Codex and Claude Code side by side, each in its own hermes/ worktree, with each session's status, context use, cost and branch in the sidebar. Hermes is free, source-available under BSL 1.1, and runs on macOS, Windows and Linux. It isn't affiliated with Nous Research, Anthropic, OpenAI or any agent vendor. Download it or read the source on GitHub. --- If this was useful Measuring the baseline is the first token-cost question. The next ones are which session, tool call or teammate spent the rest, and whether the spend bought better answers. That's what the LLM Observability Pocket Guide covers: picking the tracing and evals tools that answer those questions for your team. If you'd rather watch the gauges than parse JSON, Hermes IDE puts them next to each agent. 
Top 10 Trending AI GitHub Tools (#1 Runs Agent Teams Like You Own Them) Ten open-source AI tools trending this week: agents moved their infrastructure in-house. This countdown spans from local inference engines to the framework where agents run as persistent, networked teams that organize themselves. ds4 (ten) runs DeepSeek V4 Flash on a MacBook at 39 tokens per second by streaming transformer layers from disk instead of forcing them all into memory at once. Ollama (nine) packages any GGUF model with a single command. Text-to-CAD (eight) generates real mechanical CAD files, exportable to STEP, STL, and 3MF formats. Ponytail cuts code by 54 percent (seven). God is Eye View brings satellite, flight, ship, and earthquake data into a 3D globe with 28 voice commands (six). HyperFrames renders MP4 from HTML deterministically (five). OpenMontage is a complete agentic video studio with 12 pipelines and 700-plus skills (four). Multica treats agents as teammates (three). Talorys runs on the free Cloudflare tier (two). At number one, OpenRig boots persistent agent teams from YAML with stable seats and recoverable state across reboots. Projects in this video: ds4: antirez/ds4 Ollama: ollama/ollama Text-to-CAD: earthtojake/text-to-cad ponytail: DietrichGebert/ponytail God's Eye View: JasimAli75/gods-eye-view HyperFrames: heygen-com/hyperframes OpenMontage: brandeins11/OpenMontage multica: multica-ai/multica Talorys: rociiu/talorys OpenRig: smota/openrig 0:00 Intro 1:00 #10 ds4 2:17 #9 Ollama 3:29 #8 Text-to-CAD 4:42 #7 ponytail 5:48 #6 God's Eye View 7:04 #5 HyperFrames 8:31 #4 OpenMontage 9:50 #3 multica 11:06 #2 Talorys 12:32 #1 OpenRig 14:07 Outro Contact: digestibleinfohub@gmail.com #OpenRig #AI #GitHub #OpenSource #DevTools
@PovilasKorop Maybe not, check this multica-ai/multica