The agent harness performance optimization system. Skills, instincts, memory, security, and research-first development for Claude Code, Codex, Opencode, Cursor and beyond.
Multi-agent execution framework for Claude Code, Gemini CLI, and Codex CLI
Hydra is a host-aware framework that adds specialized agents, slash commands, hooks, and skills to Claude Code, Gemini CLI, and Codex CLI. It steers work toward cheaper models, adds sentinel-style verification after substantial edits, and keeps a codebase map and session stats for faster follow-up work.
Builders who run Claude Code, Gemini CLI, or Codex CLI and want reusable agent workflows.
You can delegate work to specialized heads, catch integration issues earlier, and spend less on routine tasks.
What it does
Specialized agents
Ships 10 heads pinned to lower-cost model tiers for different task types.
Slash commands and skills
Adds `/hydra:*` commands for Claude Code and Gemini CLI, plus `$hydra-*` skills for Codex CLI.
Sentinel verification
Runs a fast scan and, when needed, deeper analysis after substantial edits to catch integration mismatches.
Auto-guard hook
Tracks file changes and recommends verification when a change is large enough to matter.
Codebase map
Builds a persistent dependency map for blast-radius lookups, risk scoring, and faster verification.
Real token tracking
Reads host session logs to report actual usage, delegation rate, and savings.
Persistent memory
Lets agents remember project patterns and prior decisions across sessions.
How to get it
- 1One command. Done.
npx hail-hydra-cc@latest
- 2Gemini CLI β ~/.gemini/ (or ./.gemini/ with --local)
~/.gemini/ βββ agents/ # 10 agent definitions (Flash-tier pinned) βββ commands/hydra/ # 11 TOML commands (/hydra:*) βββ hydra/ # SKILL.md, VERSION, references/, hooks/ βββ GEMINI.md # Hydra marker block (appended, reversible)
README
π H Y D R A
Multi-Headed Speculative Execution for AI Coding CLIs
Claude Code Β Β·Β Gemini CLI Β Β·Β Codex CLI
"Cut off one head, two more shall take its place."
Except here β every head is doing your work faster and cheaper.
10 agents Β Β·Β 10 commands Β Β·Β 6 hooks Β Β·Β 3 host CLIs Β Β·Β Codebase map Β Β·Β Real token tracking Β Β·Β Persistent memory
𧬠What is Hydra?
Hydra is a curated multi-agent toolkit for AI coding CLIs β Claude Code, Gemini CLI, and Codex CLI. It ships 10 specialized agents pinned to each host's cost-effective models (Haiku/Sonnet on Claude Code, Flash tiers on Gemini, Luna/Terra on Codex), 10 commands for direct invocation, and one automatic touchpoint that recommends integration verification after substantial code changes.
Each agent runs on the smallest model that can do its job well. When invoked, Hydra typically reduces per-task cost by 40β60% compared to running the same work on the orchestrator alone β while maintaining output quality through verification.
Think of it this way:
Would you hire a $500/hr architect to carry bricks? No. You'd have them design the building and let the crew handle construction. That's the model Hydra follows when you invoke a specialized head.
New in v2.5.0 β Multi-Host: One canonical source (content/) now generates a native payload per host. Gemini CLI and Codex CLI join Claude Code as first-class hosts β same 10 agents and 10 commands, pinned to each host's own model tiers, with per-host hooks and real token tracking. Invoke with /hydra:* on Claude Code and Gemini CLI, or $hydra-* skills on Codex CLI.
Everything else Hydra is known for is still here: persistent agent memory, the codebase map with blast-radius lookups, the sentinel verification touchpoint after substantial edits, internal-thinking compression (/hydra:stfu), and real token tracking with /hydra:stats. Full version history lives in the CHANGELOG.
When to Use Hydra Explicitly
Hydra's biggest cost savings come from explicit invocation in scenarios where specialized handling genuinely helps:
| Scenario | How to Invoke | Why It Saves |
|---|---|---|
| Broad codebase exploration | "use hydra-scout to find X" | Haiku reads files faster and cheaper than Opus |
| Multi-file changes | "use hydra-coder to update X across these files" | Parallel Sonnet dispatch beats sequential Opus |
| Security review | /hydra:guard | Pattern matching is Haiku-cheap |
| Environment validation | /hydra:preflight | Cross-references compatibility matrices on Sonnet |
| Codebase architecture review | /hydra:map | Dependency graph stored locally |
For one-off questions, simple edits, or conversational work, Claude Code handles it directly. Hydra's only automatic intervention is the post-substantial-edit sentinel verification directive β see Sentinel below.
π Installation
One command. Done.
npx hail-hydra-cc@latest
Runs the interactive installer β pick your CLI(s) (Claude Code, Gemini CLI, Codex CLI) and scope, and it deploys the agents, commands, hooks, and per-host wiring. Done in seconds.
Installation Options
# Claude Code, all projects β no prompts (v2-compatible default)
npx hail-hydra-cc --global
# Pick your agent(s) explicitly
npx hail-hydra-cc --agent=claude --global
npx hail-hydra-cc --gemini --global
npx hail-hydra-cc --codex --global
npx hail-hydra-cc --agent=claude,gemini,codex --global
# Every detected agent, fully non-interactive
npx hail-hydra-cc --all --global --yes
# This project only / both scopes
npx hail-hydra-cc --claude --local
npx hail-hydra-cc --claude --both
# Preview what would be written (writes nothing)
npx hail-hydra-cc --dry-run --all
# Check what's deployed
npx hail-hydra-cc --status
# Remove everything
npx hail-hydra-cc --uninstall
All flags: --agent=<list> (claude,gemini,codex) or the aliases --claude /
--gemini / --codex / --all (every detected agent) Β· scope --global /
--local / --both Β· --yes non-interactive (requires an agent selection) Β·
--dry-run Β· --config-dir <path> config-dir override (single agent only) Β·
--status Β· --uninstall.
Per-Host Invocation
| Host | Commands | Notes |
|---|---|---|
| Claude Code | /hydra:help, /hydra:stats, β¦ | StatusLine + hooks registered in ~/.claude/settings.json |
| Gemini CLI | /hydra:help, /hydra:stats, β¦ | Restart Gemini CLI (or run /commands reload) to pick up the new commands |
| Codex CLI | $hydra-help, $hydra-stats, β¦ (skills with a $ trigger) | Required once: run /hooks inside Codex to review and trust the Hydra hooks β they stay inert until then |
What Gets Installed
Claude Code β ~/.claude/ (or ./.claude/ with --local):
~/.claude/
βββ agents/ # 10 agent definitions (Haiku/Sonnet pinned, memory: project)
βββ commands/hydra/ # 11 slash commands (/hydra:*)
βββ hooks/ # 6 hook scripts + notification sound
β βββ hydra-check-update.js # SessionStart β version check (background)
β βββ hydra-statusline.js # StatusLine β status bar display
β βββ hydra-token-math.js # Token parsing + savings math (shared library)
β βββ hydra-auto-guard.js # PostToolUse β file change tracker
β βββ hydra-notify.js # Notification β task completion sound
β βββ hydra-sentinel-done.js # Sentinel tracking cleanup
β βββ hydra-task-complete.wav # Notification sound file
βββ skills/
βββ hydra/ # SKILL.md + VERSION + references/
βββ stfu-agents/ # SKILL.md
Hooks and the statusLine are registered in ~/.claude/settings.json β existing
entries are preserved, and a custom statusLine is never overwritten.
Gemini CLI β ~/.gemini/ (or ./.gemini/ with --local):
~/.gemini/
βββ agents/ # 10 agent definitions (Flash-tier pinned)
βββ commands/hydra/ # 11 TOML commands (/hydra:*)
βββ hydra/ # SKILL.md, VERSION, references/, hooks/
βββ GEMINI.md # Hydra marker block (appended, reversible)
Hooks (AfterTool, SessionStart, Notification) are registered in ~/.gemini/settings.json.
Codex CLI β ~/.codex/ (or ./.codex/ with --local):
~/.codex/
βββ agents/ # 10 agent definitions (*.toml, Luna/Terra pinned)
βββ hydra/ # VERSION, references/, hooks/
βββ hooks.json # Hook registrations β trust once via /hooks
βββ config.toml # [features] hooks + notify chain (marker blocks, reversible)
βββ AGENTS.md # Hydra marker block (appended, reversible)
~/.agents/skills/ # Skills: $hydra-help, $hydra-stats, $hydra-guard, β¦
Local scope (
--local): the per-project payload goes to./.claude/,./.gemini/, or./.codex/in your working directory. Hooks and host wiring (settings/hooks registration, context files, Codex skills) always stay user-level.
β‘ Slash Commands
Codex CLI: the same commands ship as skills invoked with a
$trigger β$hydra-help,$hydra-stats,$hydra-guard, β¦ The/hydra:*form below is for Claude Code and Gemini CLI.
| Command | Description |
|---|---|
/hydra:help | Show all commands and agents |
/hydra:status | Show installed agents, version, and update availability |
/hydra:update | Update Hydra to the latest version |
/hydra:guard [files] | Run manual security & quality scan |
/hydra:quiet | Suppress dispatch logs for this session |
/hydra:report | Report a bug, request a feature, or share feedback |
/hydra:stfu | Compress internal thinking for every subagent in the session |
/hydra:map | View codebase dependency map, query blast radius, rebuild |
/hydra:preflight | Two-phase environment and compatibility check before starting a new project build |
/hydra:stats | Show real token usage, delegation rate, and actual savings (parses the host CLI's own session logs β no AI estimation) |
/hydra:preflight β Environment Validation
Run before starting any new project build. Catches broken GPU stacks, missing env vars, and incompatible dependency pairs before they cost you hours of debugging.
/hydra:preflight
Hydra runs a two-phase check:
- Detection (Haiku): probes runtimes, CUDA stack, deps, env vars, services
- Analysis (Sonnet): cross-references against compatibility matrices, flags β COMPATIBLE / β οΈ KNOWN RISK / β CONFIRMED BREAK
π₯οΈ Status Line
Claude Code only β Gemini CLI and Codex CLI have no statusline; use
/hydra:stats(or$hydra-stats) there instead.
After installation, your Claude Code status bar shows real-time framework info:
π β Opus β Ctx: 37% ββββββββββ β $0.42 β my-project
| Element | What It Shows |
|---|---|
| π | Hydra is active |
| Model | Current Claude model (Opus, Sonnet, Haiku) |
| Ctx: XX% | Context window usage with visual bar |
| $X.XX | Session API cost so far |
| Directory | Current working directory |
| β Warning | Compaction warning (only at 70%+ context usage) |
Context bar colors:
- π’ Green (0β49%) β plenty of room
- π‘ Yellow (50β79%) β getting full, consider
/compact - π΄ Red (80%+) β context nearly full,
/compactor/clearrecommended
Compaction warnings (appended automatically at 70%+):
π β Opus β Ctx: 73% ββββββββββ β $1.87 β my-project β β Auto-compact at 85%
π β Opus β Ctx: 83% ββββββββββ β $3.14 β my-project β β Compacting soon!
- β Auto-compact at 85% (70β79%) β heads-up that compaction is approaching
- β Compacting soon! (80%+) β compaction is imminent, consider
/compactnow
Note: If you already have a custom
statusLineconfigured, the installer keeps yours and prints instructions for switching to Hydra's.
π Task Completion Sound
Hydra plays a short notification sound when the CLI finishes responding β so you know it's done even if you've tabbed away.
- Cross-platform β macOS (
afplay), Windows (PowerShell), Linux (paplay/aplay) - Non-blocking β the sound plays detached; it never delays the response
- Host-native and fully event-driven β Claude Code
Stophook, GeminiNotificationhook, Codexnotifychain that preserves your existing notifier; no prompt-level calls, so the model can't forget it
The notification hook is registered automatically during installation.
π Auto-Update Notifications
Hydra checks for updates once per session in the background (never blocks startup). When a new version is available, you'll see it in the status bar:
π β Opus β Ctx: 37% ββββββββββ β $0.42 β my-project β β‘ v2.6.0 available
Update with:
# From within Claude Code:
/hydra:update
# Or from your terminal:
npx hail-hydra-cc@latest --global
After updating, restart Claude Code to load the new files.
β¨ Features
- Ten specialized heads β Haiku (fast) and Sonnet (capable) heads for every task type, including preflight detection for new projects
- Sentinel integration integrity β Two-tier verification (fast scan + deep analysis) catches ~72% of integration bugs before runtime
- Persistent agent memory β Every agent remembers your codebase patterns, conventions, and past decisions across sessions
- Orchestrator memory β Opus maintains its own notes on fragile zones, routing patterns, and known issues via CLAUDE.md
- Verification touchpoint β after substantial code changes, the auto-guard hook injects a directive recommending a sentinel + guard verification wave before results are presented; trivial edits stay silent
- Auto-Guard β a PostToolUse hook tracks every file edit; hydra-guard (Haiku) scans the tracked files for security issues on demand (
/hydra:guard) or as part of the sentinel wave - Configurable modes β
conservative,balanced(default), oraggressivedelegation viahydra.config.md - Slash commands β
/hydra:help,/hydra:status,/hydra:update,/hydra:guard,/hydra:quiet,/hydra:reportfor full session control - Task completion sound β plays a notification when Claude finishes substantial tasks
- Quick commands β natural language shortcuts:
hydra status,hydra quiet,hydra map - Custom agent templates β Add your own heads using
templates/custom-agent.md - Session indexing β Codebase context persists across turns; no re-exploration on every prompt
- Speculative pre-dispatch β hydra-scout launches in parallel with task classification, saving 2β3 seconds per task
- Dispatch log β Transparent audit trail showing which agents ran, what model, and outcome
- Codebase Map β Persistent dependency graph built by hydra-scout. Maps every file's imports, dependents, risk score, env vars, and test coverage. Enables instant blast-radius lookups for sentinel β no more grepping the entire codebase.
- Risk-Based Verification β Files with more dependents get more thorough verification. Critical files always trigger deep sentinel analysis. Low-risk files get fast-tracked.
/hydra:mapβ Inspect the dependency map, query blast radius for any file, or force a rebuild- π Real Token Tracking β
/hydra:statsparses Claude Code session logs directly to show actual usage and savings. No AI estimation, no marketing fluff β just real numbers from Anthropic's API responses. - π Internal Compression β Subagent output and orchestrator responses are now compressed for efficiency. Sub-agent output is heavily compressed (only Opus reads it). Orchestrator responses drop filler and pleasantries while keeping natural prose.
π‘οΈ Sentinel β Integration Integrity
Most bugs don't come from bad code β they come from good code that doesn't fit together. A renamed export, a changed return type, a missing dependency after a refactor. These integration issues slip past linters, type-checkers, and even code review because no single file looks wrong.
hydra-sentinel catches them β the auto-guard touchpoint recommends a scan after every substantial edit, and the scan escalates to deep analysis only when it finds something.
How It Works
Code change lands (hydra-coder finishes)
β
βΌ
ββββββββββββββββββββββββββββββββββββββββ
β π’ hydra-sentinel-scan (Haiku) β β Runs on EVERY code change (~1-2s)
β Fast sweep: imports, exports, β
β signatures, dependencies β
ββββββββββββββββ¬ββββββββββββββββββββββββ
β
Issues found?
βββ No: β
Pass β code proceeds to guard
β
βββ Yes: Escalate
β
βΌ
ββββββββββββββββββββββββββββββββββββββββ
β π΅ hydra-sentinel (Sonnet) β β Only when scan flags issues (~20-30%)
β Deep analysis: confirms real issues, β
β dismisses false positives, β
β proposes fixes β
ββββββββββββββββ¬ββββββββββββββββββββββββ
β
Fix decision:
βββ Trivial (import typo): Auto-fix
βββ Medium (signature mismatch): Offer fix to user
βββ Complex (architectural): Report with context
What Sentinel Catches
| Check Type | Priority | Example |
|---|---|---|
| Import/export mismatches | P0 | Importing a function that was renamed or removed |
| Function signature changes | P0 | Caller passes 2 args, function now expects 3 |
| Type contract violations | P1 | Function returns string but caller expects number |
| Missing dependency updates | P1 | New import added but package not in package.json |
| Cross-file rename gaps | P1 | Variable renamed in definition but not all call sites |
| Circular dependency introduction | P2 | New import creates A β B β C β A cycle |
| Dead code from refactoring | P2 | Exported function no longer imported anywhere |
| Environment/config mismatches | P2 | Code references env var that isn't in .env.example |
Example Output
π‘οΈ Sentinel Report
ββββββββββββββββββββββββββββββββββββββ
β P0: src/auth.js imports `validateToken` from src/utils.js
but src/utils.js now exports `verifyToken` (renamed in this session)
β Fix: Update import to `verifyToken` [auto-fixable]
β P1: src/api/routes.js calls createUser(name, email)
but src/models/user.js:createUser now expects (name, email, role)
β Missing required parameter `role` added in this change
β 6 other integration points verified clean
ββββββββββββββββββββββββββββββββββββββ
Across the check types above, the estimated weighted detection rate is ~72% of integration bugs caught before runtime β highest for import/export and dependency mismatches (direct matching), lower for type contracts and config drift (heuristic).
Memory makes it better over time. Sentinel remembers past false positives and known fragile integration points in your project. The more you use it, the more accurate it gets.
πΊοΈ Codebase Map
Hydra builds a persistent dependency map of your codebase, giving every agent instant access to file relationships without scanning.
How It Works
hydra-scout builds the map on first run by extracting import statements
from every source file using grep (no external parsers required). The map
is stored at .claude/hydra/codebase-map.json.
Session 1: scout builds the full map (~10 seconds for 500 files)
Session 2: scout checks git hash β nothing changed β skip rebuild (instant)
Session 3: scout checks git hash β 3 files changed β update only those 3
What the Map Contains
| Data | How It's Used |
|---|---|
| File imports | "auth.ts imports user.ts and env.ts" |
| Reverse imports | "auth.ts is imported by users.ts, admin.ts, middleware.ts" |
| Risk score | low (0-1 deps) β medium (2-3) β high (4-6) β critical (7+) |
| Env var index | "JWT_SECRET is used in auth.ts and middleware.ts" |
| Test coverage | covered / partial / untested per file |
| Git staleness | Hash comparison for instant freshness check |
Why This Matters
Without map β When auth.ts changes, sentinel greps the ENTIRE codebase looking for files that import it. In a 500-file project, that's 500 file reads. Takes 5-15 seconds, costs 3,000-8,000 tokens.
With map β Sentinel reads the JSON, looks up auth.ts's imported_by array,
gets [users.ts, admin.ts, middleware.ts] instantly. Reads only those 3 files.
Takes <2 seconds, costs 500-1,500 tokens.
Savings: 3-5Γ faster, 3-5Γ fewer tokens per sentinel scan.
Risk-Based Sentinel Triggering
The map's risk scores let Opus make smarter verification decisions:
| Modified File Risk | What Happens |
|---|---|
| π΄ Critical (7+ deps) | Sentinel-scan + deep analysis (always) |
| π High (4-6 deps) | Sentinel-scan, escalate if issues found |
| π‘ Medium (2-3 deps) | Sentinel-scan, escalate only for P0 issues |
| π’ Low (0-1 deps) | Sentinel-scan, auto-accept if clean |
This means Hydra spends more verification effort where it matters most (high-risk files) and less where it doesn't (isolated utilities).
Inspect the Map
/hydra:map # Show summary β risk distribution, coverage stats
/hydra:map src/services/auth.ts # Show blast radius for a specific file
/hydra:map rebuild # Force a complete rebuild
Technical Notes
- The map is built using grep + regex β no Tree-sitter, no AST parsing, no external dependencies. Works with JS/TS, Python, Go, Java, Kotlin, Ruby, Rust.
- Supports relative import resolution (e.g.,
'./auth'βsrc/services/auth.ts) - Falls back gracefully β if the map doesn't exist, all agents use their original grep-based behavior. The map is an optimization, not a requirement.
- Stored at
.claude/hydra/codebase-map.jsonβ add to.gitignore(machine-generated).
π Real Token Tracking
/hydra:stats shows actual token usage and savings for your session. No AI
estimation. The numbers are pulled directly from the host CLI's own session
logs β Claude Code JSONL, Gemini CLI chat records, or Codex CLI rollout files.
π Hydra Stats
ββββββββββββββββββββββββββββββββββββββ
Session: 7c3a9e21.jsonl
Turns: 38
ββββββββββββββββββββββββββββββββββββββ
π’ Haiku (24 turns): 142.3k in / 8.1k out β $0.183
π΅ Sonnet (9 turns): 67.4k in / 3.2k out β $0.250
π£ Opus (5 turns): 45.1k in / 2.8k out β $0.296
ββββββββββββββββββββββββββββββββββββββ
Delegation rate: 87.0% (33/38 turns)
Actual cost: $0.729
All-Opus baseline: $1.502
ββββββββββββββββββββββββββββββββββββββ
π° Saved: $0.773 (51.5%)
ββββββββββββββββββββββββββββββββββββββ
Reads the host CLI's session logs directly.
No AI estimation. Numbers are real.
The "All-Opus baseline" is the hypothetical cost if every Hydra agent had
been Opus instead. The savings show what Hydra's model routing actually
saves you in this session. Implementation is pure Node.js β works on
Windows, macOS, and Linux. Respects CLAUDE_CONFIG_DIR env override.
π§ Agent Memory
Without memory, every session starts cold. Agents re-discover your conventions, re-learn your project structure, and repeat the same questions. With memory, knowledge compounds.
| Aspect | Without Memory | With Memory |
|---|---|---|
| First task | Agent explores from scratch | Agent recalls project patterns |
| Conventions | May use wrong style | Remembers your naming, structure, patterns |
| Known issues | No awareness of past bugs | Recalls fragile areas and past fixes |
| Routing accuracy | Generic classification | Improved by past dispatch outcomes |
| False positives | Same false alarms repeat | Sentinel suppresses known non-issues |
How It Works
Every agent has memory: project in its frontmatter. Claude Code automatically manages a
per-project memory directory (.claude/memory/) where agents store and retrieve learnings.
Agent memory is a Claude Code feature β Gemini CLI and Codex CLI have no equivalent, so the generator drops the
Files in the repo
- .github
- bin
- content
- src
- templates
- test
- .gitattributes
- .gitignore
- CHANGELOG.md
- LICENSE
- package.json
- README.md
Discussion (0)
Ask about usage, or say what you built with itSign in to join the discussion.
No comments yet. Be the first to say what this is good for.
More harnesses
from vibe coding to agentic engineering - practice makes claude perfect
π The original agent meta-harness. Deploy intelligent multi-player swarms, coordinate autonomous workflows, and build conversational AI systems. Features adaptive memory, self-learning intelligence, RAG integration, and native Claude Code / Codex / Hermes and many more Integrated
Practical patterns, starters & CLI tools for loop engineering with AI coding agents. Design systems that prompt and orchestrate agents (inspired by Addy Osmani and Boris Cherny). Includes loop-audit, loop-init, loop-cost.
Git. Ship. Done - Core

The most RAM efficient harness