Espresso

One install. Full token-saving stack. Works on Claude Code, Codex, and more.

The Problem
Every AI coding agent produces verbose output by default.
"Sure! I'd be happy to help. Let me walk you through this step by step..."
That's tokens you pay for, time you waste reading, and context window you burn.
Fixing it requires configuring multiple tools, writing rules, setting up hooks.
Most developers don't bother.
What Espresso Does
Installs once. Detects what you already have. Adds only what's missing.
| What gets configured | Savings | How |
|---|
| Output rules | 40-60% | Enforces 120 char lines, forbidden openers/closers, result-first, no filler |
| Global rules | context savings | Creates ~/.claude/rules/ — Exa search, clean git, GitNexus, project rules |
| GitNexus | fewer file reads | Configures MCP server + auto-reindex hook (if GitNexus binary installed) |
| Caveman ultra | ~75% | Sets compressed conversation mode (if Caveman plugin installed) |
| RTK hook | 60-90% CLI | Adds CLI output compression hook (if RTK binary installed) |
| Ponytail | less code written | Installs the real ponytail plugin: YAGNI ladder, stdlib/native first, no speculative abstraction |
| Model ladder | cost + quota | Spawns every subagent one tier below the session model (Opus runs Sonnet workers, etc.) via a PreToolUse hook |
Detection-first: Espresso checks what's already configured and skips it.
Never overwrites your existing rules or config. Never installs duplicates.
Before / After
Without Espresso:
Sure! I'd be happy to help you with that. The issue you're
experiencing is likely caused by a misconfiguration in your
authentication middleware. Let me explain what's happening and
walk you through the solution step by step...
With Espresso:
Bug in auth middleware. Token expiry check uses `<` not `<=`. Fix:
Same information. 70-85% fewer tokens with the full stack.
Three axes, not one
Caveman compresses how Claude talks. Ponytail compresses how much Claude
writes. Verbose prose is cheap next to the real waste: an agent that builds
a 120-line cache class, adds a dependency, scaffolds "for later", then iterates
on its own bloat. Ponytail stops it at the first solution that works, before the
wrong code is ever written. Espresso installs both so the axes stack.
The third axis is cost per token, not token count. The model ladder spawns
every subagent one tier below the session model: an Opus session dispatches
Sonnet workers, a Fable session dispatches Opus workers. Discovery, mechanical
checks, and verbose-output tasks do not need top-tier reasoning, so the expensive
model keeps judgement and synthesis while cheaper workers do the rest. Each tier
down roughly halves cost per MTok and preserves the capped quota of Opus and
Fable. Fable 5 is the priciest tier and drains fastest, so a Fable session
dispatching Opus workers is where the ladder saves most. Paired with a delegation
rule that says when to spawn, tasks offload the expensive tier automatically, at
equal quality on bounded work.
Install
Claude Code (in the Claude Code prompt)
3 commands. Type them inside Claude Code, not in a regular terminal.
/plugin marketplace add mirkobozzetto/espresso
/plugin install espresso@espresso
/reload-plugins
Or from a regular terminal:
claude plugin marketplace add mirkobozzetto/espresso
claude plugin install espresso@espresso
Then restart Claude Code. First session auto-configures the full stack.
Cursor / Windsurf / Copilot / Codex / Others
These agents don't have plugin hooks. One command in your project root:
curl -sL https://raw.githubusercontent.com/mirkobozzetto/espresso/main/AGENTS.md > AGENTS.md
Codex, Cursor, Windsurf, Copilot, Amp, and Devin read AGENTS.md natively.
You get the output rules (40-60% savings) but not the full stack auto-install.
Exa MCP — Web Search for Your Agent
Espresso rules enforce Exa as the only web search tool. Exa is a free hosted MCP — no API key required.
| Agent | Setup |
|---|
| Claude Code | claude mcp add --transport http exa https://mcp.exa.ai/mcp |
| Codex | Add exa MCP in .codex/config.toml with URL https://mcp.exa.ai/mcp |
| Cursor | Add to ~/.cursor/mcp.json: {"mcpServers": {"exa": {"url": "https://mcp.exa.ai/mcp"}}} |
| VS Code | Add to .vscode/mcp.json: {"servers": {"exa": {"type": "http", "url": "https://mcp.exa.ai/mcp"}}} |
| Claude Desktop | Settings → Connectors → search "Exa" → click + |