A tmux sidebar that monitors all your coding agent sessions — Claude Code, Codex, and more — from a single, always-visible pane.
- Live Status — WORKING/IDLE state, tokens, cost, and context per agent
- Usage History — Aggregated stats for today, 7 days, and all time
- Navigation — Select agents and jump to their pane with a keypress or click
- Per-Window Sidebars — Each tmux window gets its own sidebar
- Context Window — Remaining context %, turns yellow when low
- Notifications — Yellow
!badge for agents that finished in another window
set -g @plugin 'neevek/agentmux'Press prefix + I. Downloads a prebuilt binary; falls back to cargo build if unavailable.
git clone https://github.com/neevek/agentmux ~/.tmux/plugins/agentmux
cd ~/.tmux/plugins/agentmux
cargo build --release && mkdir -p bin && cp target/release/agentmux bin/Add to ~/.tmux.conf:
run-shell ~/.tmux/plugins/agentmux/agentmux.tmuxRemove the binary:
rm -f ~/.local/bin/agentmux ~/bin/agentmuxRemove the plugin line from ~/.tmux.conf:
set -g @plugin 'neevek/agentmux'Then press prefix + alt + u (TPM uninstall) or delete the plugin directory:
rm -rf ~/.tmux/plugins/agentmux| Action | Key |
|---|---|
| Toggle sidebar | prefix + a |
| Navigate | j/k or ↑/↓ |
| Jump to agent | Enter or click |
| Quit | q |
agentmux toggle / open / closeset -g @agentmux-key 'a' # toggle keybinding (default: a)
set -g @agentmux-width 50 # sidebar width in columns (default: 60, min: 50)Runtime settings (e.g. resized width) are persisted to ~/.agentmux/config.toml.
| Agent | Tokens | Cost |
|---|---|---|
| Claude Code | ✓ | ✓ |
| Codex | ✓ | ✓ |
Models: Claude Opus/Sonnet/Haiku, OpenAI o3/o4-mini, GPT-5.4/4.1/4o, and more.
Let's be honest. In the age of AI-assisted development, the lifecycle of any interesting open-source project written in Python or TypeScript now has a predictable epilogue: someone sees it on Hacker News, fires up their favorite coding agent, and by dinner time there's a {project-name}-rs repo with a freshly minted Cargo.toml and a README that opens with "A blazingly fast rewrite of..."
I decided to skip that step.
agentmux is written in Rust from day one — not because I wanted to be trendy, but because I wanted to be last. No one's going to rewrite-it-in-Rust if it's already in Rust. The PR writes itself: "closes #1: rewrite in Rust" — filed and merged before the repo is in public.
And it turns out Rust is genuinely the right tool here:
- Zero runtime dependencies — A single static binary. No Node.js, no Python, no Bun.
prefix + Iand you're done. - Low resource footprint — Inactive sidebars cost near-zero CPU. One tmux query per second, no file I/O. Your laptop fan stays quiet.
- Fast startup — Millisecond launch. No interpreter warmup, no
npm install, no waiting for your JIT to warm up while you watch a spinner. - Cross-platform builds — One CI matrix, four targets (macOS ARM/Intel, Linux x86_64/ARM64). No platform-specific shims or runtime bundles.
So yes — I chose Rust because it's fast, correct, and dependency-free. But mostly because I didn't want to wake up to a PR titled "agentmux-rs: A blazingly fast rewrite". You're welcome.
src/
main.rs CLI entry point
config.rs TOML config
tmux/ Tmux command helpers
detect/ Agent scanning, JSONL parsing, cost estimation, SQLite history
sidebar/ Event loop, rendering, input, leader/follower coordination
- Active sidebar scans every 3s; inactive sidebars sync selection only (1 query/sec)
- JSONL token counts cached by file size/mtime; state detection uses 32KB tail reads
- Codex sessions parsed incrementally; usage history persisted to SQLite
MIT