agentgrid
Health Warn
- License — License: MIT
- Description — Repository has a description
- Active repo — Last push 0 days ago
- Low visibility — Only 9 GitHub stars
Code Fail
- child_process — Shell command execution capability in .claude/hooks/auto-stage.js
- execSync — Synchronous shell command execution in .claude/hooks/auto-stage.js
- process.env — Environment variable access in .claude/hooks/auto-stage.js
- fs module — File system access in .claude/hooks/auto-stage.js
- rm -rf — Recursive force deletion command in .claude/hooks/block-dangerous-commands.js
- process.env — Environment variable access in .claude/hooks/block-dangerous-commands.js
- fs module — File system access in .claude/hooks/block-dangerous-commands.js
- process.env — Environment variable access in .claude/hooks/protect-secrets.js
- fs module — File system access in .claude/hooks/protect-secrets.js
- exec() — Shell command execution in .claude/hooks/quality-check.js
- process.env — Environment variable access in .claude/hooks/quality-check.js
- fs module — File system access in .claude/hooks/quality-check.js
Permissions Pass
- Permissions — No dangerous permissions requested
No AI report is available for this listing yet.
Spawn grids of coding agents (Claude, Codex, Gemini, Cursor) in one command.
agentgrid
Spawn grids of coding agents (Claude, Codex, Gemini, Cursor) in one command.
Lattice is an agent-native, recursively self-improving agent employee whose job is dispatch. Coding agents use it through its skills, its MCP server and its command line. It improves itself through its own evals and a scheduled improvement loop, and a person reviews every change.
AGENTS.md · llms.txt · Skills · Security · Contributing · All projects
agentgrid splits your terminal into a grid of AI coding agents, one per tmux pane, and shows who is working (blue),
who needs you (yellow) and who is done (green), with sound alerts. It is for anyone who runs several coding agents at
once, and for lead agents that hand work to other agents. It runs on plain tmux with no daemon, and works with
Claude Code, Codex, Gemini CLI, Aider, Goose, Cline, Hermes, Copilot, Cursor, or any terminal command.
┌──────────────┬──────────────┬──────────────┐
│ ⚡ Agent 1 │ ⚡ Agent 2 │ ⚡ Agent 3 │
│ fixing auth │ writing tests│ updating docs│
├──────────────┼──────────────┼──────────────┤
│ ✅ Agent 4 │ ⏳ Agent 5 │ ⚡ Agent 6 │
│ done — 3min │ needs input │ refactoring │
└──────────────┴──────────────┴──────────────┘
Use it from any coding agent
Claude Code: the plugin brings the skills, sub-agents, hooks and MCP server.
/plugin marketplace add naman10parikh/agentgrid
/plugin install agentgrid@agentgrid
Its MCP server, in any MCP client:
claude mcp add --transport stdio agentgrid -- npx -y -p github:naman10parikh/agentgrid agentgrid-mcp
codex mcp add agentgrid -- npx -y -p github:naman10parikh/agentgrid agentgrid-mcp
Cursor (.cursor/mcp.json), Gemini CLI (.gemini/settings.json) and most other clients take the same command as JSON:
{
"mcpServers": {
"agentgrid": {
"command": "npx",
"args": [
"-y",
"-p",
"github:naman10parikh/agentgrid",
"agentgrid-mcp"
]
}
}
}
Gemini CLI: the extension brings the context and the MCP server.
gemini extensions install https://github.com/naman10parikh/agentgrid
One skill (3 in all, in skills/), in any agent that reads Agent Skills:
gemini skills install https://github.com/naman10parikh/agentgrid --path skills/agentgrid
git clone --depth 1 https://github.com/naman10parikh/agentgrid /tmp/agentgrid && cp -r /tmp/agentgrid/skills/agentgrid ~/.claude/skills/
The command line:
npx -y -p github:naman10parikh/agentgrid agentgrid --help
Codex, Cursor, OpenCode, GitHub Copilot and other agents read AGENTS.md; Claude Code reads CLAUDE.md and Gemini CLI reads GEMINI.md, which import it. llms.txt maps every surface for agents that read first.
Quick start
You need bash, tmux and python3, on macOS, Linux or Windows (WSL). The MCP server and the per-pane commands also need
Node 18 or newer.
Install
agentgrid is not on the npm registry yet, so it runs and installs from GitHub:
# Run it straight from GitHub, nothing installed
npx -y -p github:naman10parikh/agentgrid agentgrid --help
# Or keep a copy: clone, build, and put both commands on your PATH
git clone https://github.com/naman10parikh/agentgrid && cd agentgrid && npm install && npm install -g .
Your first grid
# Inside tmux: a 2x2 grid; the last word is the agent every pane runs
agentgrid 2x2 claude # or codex, gemini, aider, or any command: agentgrid 2x2 sh
# See every pane, send them all one line, clear the grid
agentgrid status --json
agentgrid broadcast "pull main and run the tests"
agentgrid kill
Not inside tmux? agentgrid opens a tmux session for you first. The interactive wizard is agentgrid setup, andagentgrid launch dev-sprint starts a saved team layout.
The one-line installer copies the command to ~/.local/bin, installs tmux if it is missing, adds the presets and a
tmux config, and adds the pane-status hooks to Claude Code's settings:
curl -fsSL https://raw.githubusercontent.com/naman10parikh/agentgrid/main/install.sh | bash
How it works
The command line is about 1,440 lines of bash on top of tmux: no daemon, no server, no background process. The
per-pane commands, the MCP server, memory search and the sandbox run from a small TypeScript build in dist/. An
optional Electron desktop app lives in app/.
- Grid engine: creates tmux panes with
split-windowandselect-layout tiled. - Status system: custom tmux options (
@pane_status,@pane_label) hold each pane's state and name. - Agent hooks: Claude Code, Codex and OpenCode hooks call
pane-status.shwhen an agent starts, needs input
and stops. The Claude Code plugin ships these hooks inhooks/hooks.json. - Sound alerts:
afplay(macOS) orpaplay(Linux), which play through Do Not Disturb and Focus. - Session persistence: JSON snapshots of the layout, each pane's agent, directory and conversation id.
- Agent detection: walks the process tree (
ps -o args) to find the agent behind anodeprocess. - MCP server:
agentgrid-mcpexposes 15 tools, so another coding agent can create, drive and read a grid. Tool
input goes to the CLI as an argument array, never through a shell. - Run log: every state-changing command (grid, broadcast, send, inject, kill, sandbox) appends one line to
logs/runs.jsonl;agentgrid runsshows them. - Sandbox:
agentgrid sandbox-run "<command>"runs a command in a fresh E2B microVM, with your ownE2B_API_KEY. Booting the microVM took a median of 505 ms over nine runs from a laptop (263 to 1,162 ms,
network included).
Architecture
┌─────────────────────────────────────────────────┐
│ agentgrid CLI │
│ (1,400 lines of bash — no daemon, no server) │
├────────────┬────────────┬───────────────────────┤
│ Grid │ Session │ Status │
│ Engine │ Manager │ System │
│ │ │ │
│ split │ save │ @pane_status │
│ layout │ restore │ @pane_label │
│ equalize │ presets │ color-coded │
├────────────┴────────────┴───────────────────────┤
│ tmux │
│ panes · sessions · custom options · hooks │
├─────────────────────────────────────────────────┤
│ Terminal Emulator │
│ Ghostty · iTerm2 · Kitty · WezTerm · Terminal │
└─────────────────────────────────────────────────┘
Why agentgrid?
You have 6 tasks. You could run them sequentially in one Claude session (slow), or open 6 terminal tabs manually (tedious). agentgrid gives you:
- One command to spawn any grid layout (2x2, 3x5, 5x5)
- Color-coded status so you know who needs attention at a glance
- Sound alerts when an agent finishes or needs input (works through DND)
- Save & restore entire grid configurations with conversation history
- Zero dependencies — built on tmux, the tool you already have
Features
Grid Layouts
agentgrid 2x2 claude # 4 panes
agentgrid 3x4 codex # 12 panes
agentgrid 5x5 # 25 empty panes (up to 10x10)
Panes auto-equalize. Re-equalize anytime: agentgrid equalize
Interactive Setup
agentgrid setup
Visual wizard with grid preview. 4 steps:
- Grid size →
2x3or just6 - Default agent →
claude - Configure individual panes (names, agents)
- Save as preset (optional)
Status Labels
| Status | Label | Color | Sound |
|---|---|---|---|
| Working | ⚡ WORKING | Blue | — |
| Needs input | ⏳ WAITING | Yellow | Tink |
| Done | ✅ DONE | Green | Glass |
Status updates automatically via agent hooks (Claude Code, Codex, OpenCode). Other agents use exit code detection.
Dashboard
agentgrid dashboard # Snapshot with controls
agentgrid dashboard live # Auto-refreshing every 2s
Table view of all panes with name, agent, and status. Quick action menu included.
Session Save & Restore
agentgrid save my-grid # Save everything
agentgrid restore my-grid # Restore + resume conversations
agentgrid restore my-grid --no-start # Layout only, no agents
Save captures each pane's agent, directory, name, and conversation session ID. Restore resumes the exact conversation — not just the most recent one.
Per-agent resume: Claude (--resume <id>), Codex (codex resume <id>), Gemini (--resume latest), Goose (session resume --last).
Presets
agentgrid preset list # See saved presets
agentgrid launch dev-sprint # Launch one
agentgrid preset show mixed-agents # View details
agentgrid preset delete old-setup # Remove
9 built-in presets ship in presets/, from dev-sprint (4 panes) and mixed-agents (6 panes) to research-swarm (9 panes); the agentgrid-sessions skill lists them all.
Broadcast
agentgrid broadcast "git pull && pnpm test" # Send to ALL panes
agentgrid broadcast "/status" # Send a slash command
Custom Sounds
agentgrid sound done ~/Music/tada.mp3 # Your own audio
agentgrid sound waiting system:Hero # macOS built-in
agentgrid sound test # Preview all 3
agentgrid sound off # Silence
MP3, WAV, AIFF, M4A, OGG. Plays through DND/Focus mode via afplay (macOS) or paplay (Linux).
Pane Management
agentgrid name "Auth Worker" # Name current pane (locked)
agentgrid add right claude # Add pane to grid
agentgrid swap up # Reorder panes
agentgrid equalize # Even out sizes
agentgrid kill # Clear to 1 pane
agentgrid status # All pane statuses
agentgrid status --json # Machine-readable (for scripts)
Per-pane work
agentgrid send %3 "Write the tests for src/auth/" # one prompt to one pane
agentgrid inject %3 --file missions/tests.md # a long mission file
agentgrid read %3 -n 40 # the pane's last 40 lines
agentgrid monitor # every pane's status and output, live
Agent Detection & Installation
agentgrid agents # Show installed/available
agentgrid install codex # Install one
agentgrid install-all # Install all missing
Supported Agents
| Agent | Command | Install | Auto Status |
|---|---|---|---|
| Claude Code | claude |
npm i -g @anthropic-ai/claude-code |
Yes (hooks) |
| Codex | codex |
npm i -g @openai/codex |
Yes (hooks) |
| Gemini CLI | gemini |
npm i -g @google/gemini-cli |
Exit code |
| Aider | aider |
pip install aider-chat |
Exit code |
| OpenCode | opencode |
npm i -g opencode |
Yes (hooks) |
| Goose | goose |
brew install goose |
Exit code |
| Cline | cline |
npm i -g @anthropic-ai/cline |
Exit code |
| Hermes | hermes |
npm i -g hermes-cli |
Exit code |
| Copilot | copilot |
npm i -g @github/copilot |
Exit code |
| Cursor | cursor |
brew install --cask cursor |
Exit code |
| Any command | <your-cmd> |
— | Exit code |
agentgrid doesn't restrict what you run. Any terminal command works as an agent.
All Commands
GRIDS
agentgrid ROWSxCOLS [agent] Create grid (e.g. 2x3 claude)
agentgrid setup Interactive wizard with grid preview
PRESETS
agentgrid launch <name> Launch a saved preset
agentgrid preset list Show presets
agentgrid preset show <name> View details
agentgrid preset delete <name> Delete
SESSIONS
agentgrid save [name] Save grid + names + conversations
agentgrid restore [name] Restore grid + resume chats
agentgrid restore [name] --no-start Layout only (no agents)
AGENTS
agentgrid agents Detect installed agents
agentgrid install <agent> Install one
agentgrid install-all Install all missing
CONTROL
agentgrid dashboard Grid map + controls
agentgrid dashboard live Auto-refreshing (2s)
agentgrid status All pane statuses
agentgrid status --json Machine-readable output
agentgrid add [right|down] [agent] Add pane to grid
agentgrid swap [up|down] Swap pane position
PANES
agentgrid name <name> Name current pane (locked)
agentgrid broadcast <text> Send to all panes
agentgrid equalize Even out sizes
agentgrid kill Clear to 1 pane
PER PANE
agentgrid send <pane> <text> Send a prompt to one pane
agentgrid read <pane> [-n N] Read a pane's recent output
agentgrid inject <pane> --file F Inject a long mission file
agentgrid monitor Live monitor with pane output
HARNESS
agentgrid mcp-serve Start the MCP server (stdio)
agentgrid memory-search "<query>" BM25 search over memory and docs
agentgrid sandbox-run [command] Run a command in an E2B microVM
agentgrid runs Recent run-log entries
SOUNDS
agentgrid sound Show current sounds
agentgrid sound <event> <file> Set sound
agentgrid sound test Preview all
agentgrid sound off Disable
SETUP
agentgrid start [session] Start/attach tmux
agentgrid terminal-setup Configure Claude panes
agentgrid tips Usage tips
agentgrid update Self-update from GitHub
agentgrid detach Exit (grid keeps running)
agentgrid --version Show version
agentgrid --help Show help
Keyboard Shortcuts
| Keys | Action |
|---|---|
| Option+H/J/K/L | Navigate panes (vim-style) |
| Option+Arrow | Navigate panes |
| Click | Switch to pane |
| Ctrl+A | | Split right |
| Ctrl+A - | Split down |
| Ctrl+A z | Zoom (fullscreen toggle) |
| Ctrl+A E | Equalize sizes |
| Ctrl+A { } | Swap pane up/down |
| Ctrl+A Space | Cycle layouts |
| Ctrl+A c | New window |
| Ctrl+A 1-9 | Switch window |
| Ctrl+A d | Detach (runs in background) |
| Drag borders | Resize panes with mouse |
Configuration
~/.agentgrid/
├── config.json # Global settings (sounds, defaults)
├── presets/ # Saved grid configurations
│ ├── dev-sprint.json
│ ├── mixed-agents.json
│ └── research-swarm.json
├── sessions/ # Saved session state (save/restore)
└── sounds/ # Custom sound files
Example config.json:
{
"default_agent": "claude",
"sounds": {
"done": "/System/Library/Sounds/Glass.aiff",
"waiting": "/System/Library/Sounds/Tink.aiff",
"sub_agent": "/System/Library/Sounds/Purr.aiff"
}
}
Works With
Terminals: Ghostty, iTerm2, Terminal.app, Kitty, WezTerm, Alacritty, Windows Terminal (WSL)
IDEs: Cursor (integrated terminal), VS Code (integrated terminal)
OS: macOS, Linux (Ubuntu, Fedora, Arch), Windows (via WSL)
FAQ
Q: Do I need tmux installed?
A: agentgrid installs tmux automatically if it's missing (via Homebrew on macOS, apt/dnf/pacman on Linux).
Q: Can I mix different agents in the same grid?
A: Yes. Use agentgrid setup to assign different agents per pane, or start with a uniform grid and override individual panes.
Q: What happens when I close my terminal?
A: The tmux session keeps running in the background. Reattach with agentgrid start or tmux attach.
Q: Can I use this with my own CLI tool?
A: Yes. Any command works: agentgrid 2x2 "python my_agent.py". agentgrid doesn't restrict what runs in each pane.
Q: How does save/restore work with conversations?
A: agentgrid save captures each pane's conversation session ID by walking the process tree. agentgrid restore uses agent-specific resume flags (--resume for Claude, codex resume for Codex, etc.) to pick up where you left off.
Q: What's the maximum grid size?
A: 10x10 (100 panes). In practice, 3x3 or 4x4 is the sweet spot for most monitors.
Q: Does it work in VS Code / Cursor terminal?
A: Yes. The integrated terminal supports tmux. Run agentgrid 2x2 claude directly.
Tests and evals
bash test.sh # 30+ smoke checks: files, versions, help output, presets, security
pnpm test # 48 vitest tests of the TypeScript CLI
pnpm eval # smoke, 44 surface checks, and 7 golden tasks run 3 times on a private tmux server
The golden tasks drive the real CLI, the MCP server and the plugin hooks: spawn a 2x2 grid, list it as JSON, broadcast
to every pane, color a pane through the hooks, read status and send to one pane over MCP, clear the grid, and find
every action in the run log. CI runs the tests and the evals on every push and pull request.
The self-improvement loop (.github/workflows/improve.yml, nightly) runs the same evals, then compares the live
command list and MCP tools with the docs, skills and memory, and writes what to improve to the run summary. It needs
no secret and never pushes or merges.
See Also
- agentbench — Benchmark AI coding agents head-to-head on real tasks
- agentmoney — Track what your AI agents cost across providers
- claude-harness — Production-grade Claude Code setup with hooks, skills, and memory
How it improves itself
It carries its own evals and a self-improvement contract, dsip.json (level L2). A scheduled loop runs the evals, tries a change in a sandbox and opens it for review. A change that lowers a score is not merged, and a person merges every change. Lessons it learns are kept as rules in its memory files.
Part of a fleet
One of the agent-native, recursively self-improving open-source projects by Naman Parikh. Each one is an agent employee that owns one part of an agent's harness or of the product around it.
Siblings: agentdial (identity) · wikimem (memory) · skillsmith (skills) · agent-booster (tools / CLIs) · armory (MCPs and the component registry) · agentswarm (dispatch) · agentbench (evals) · agentmoney (observability) · claude-harness (the whole harness, as a template).
Contributing and security
Read CONTRIBUTING.md; AI-assisted pull requests are welcome. Report a vulnerability privately, as SECURITY.md explains.
Star history
What it is made of
Every project in this fleet is graded on the same 11 harness components and on self-improvement. Each mark is backed by a file you can open.
| Component | Grade | Where |
|---|---|---|
| Identity | ✅ | identity/SOUL.md:1 (Lattice; BRAND, HEARTBEAT, bootstrap MEMORY, no template slots) |
| Memory | ✅ | memory/MEMORY.md:1 (about 785 tokens) + BM25 index src/lib/memory-index.ts:47 (agentgrid memory-search) + memory/LEARNINGS.md (7 rules) |
| Skills | ✅ | skills/agentgrid/SKILL.md:1, skills/agentgrid-orchestrate/SKILL.md:1, skills/agentgrid-sessions/SKILL.md:1 |
| Tools/CLIs | ✅ | package.json:7 (bins agentgrid, agentgrid-mcp); agentgrid:1432 (--version) |
| Hooks | ✅ | .claude/settings.json:4 (SessionStart, PostToolUse) + hooks/hooks.json:4 (plugin pane-status hooks) |
| Sub-agents | ✅ | .claude/agents/grid-operator.md:1, .claude/agents/pane-doctor.md:1 (flat, bundled in .claude-plugin/plugin.json) |
| MCPs | ✅ | src/mcp-server.ts:36 (own stdio server, 15 tools; bin agentgrid-mcp) + .mcp.json:3 |
| Dispatch | ✅ | agentgrid:261 (grid) and agentgrid:1132 (broadcast); scheduled run .github/workflows/improve.yml:9 |
| Evals | ✅ | eval/run.sh:1 (smoke, surfaces 44, golden 7 tasks pass^3) gating CI .github/workflows/test.yml:45 |
| Observability | ✅ | src/lib/run-log.ts:52 + agentgrid:156 (append-only logs/runs.jsonl) + .claude/hooks/audit-log.sh |
| Sandbox/Infra | ✅ | src/commands/sandbox.ts:52 (E2B microVM, e2b dependency package.json:75) |
| RSI / open-endedness | ✅ | dsip.json:1 (L2) + .github/workflows/improve.yml (nightly loop) + scripts/improve.mjs |
✅ real and tested · 🟡 partial, with the reason in the row · ❌ absent
License
MIT — see LICENSE.
Reviews (0)
Sign in to leave a review.
Leave a reviewNo results found