▦ New · The Command Center →
Terminal Agent Orchestrator

Replace nothing.
Orchestrate everything.

Agent IDEs ship their own terminal, diff viewer, and worktree manager — then lock you in. jmux conducts the tools you already run.

$ bun install -g @jx0/jmux
★★★★★loved by terminal-native devs
MIT licensed ~0.3 MB tmux underneath
jmux Command Center: a grid of live Claude agent panes, borders colored by state
jmux command palette floating over a workspace
jmux full-screen diff panel
jmux sidebar with grouped sessions alongside vim and Claude Code
The whole idea

One orchestrator.
Your tools stay your tools.

jmux doesn't reinvent your diff viewer, your branching model, or your terminal. It conducts the best-in-class tools you already trust — and if you stop using jmux, they're all still there.

jmux
tmuxyour multiplexer
hunkyour diff viewer
wtmyour worktrees
Claude · Codex · aideryour agent
neovimyour editor
Linear · GitHub · GitLabyour tracker
Built for the workflow

Everything visible. Nothing in your way.

Session Sidebar

Every session at a glance — project group, git branch, agent state, pipeline status, linked issue or PR, and live context tokens. Replaces tmux's status bar with a real workspace map.

jmux session sidebar showing grouped sessions, activity dots, and agent-state flags

Agent State

Three live states, driven by Claude Code hooks + telemetry:

RUNNING !WAITING COMPLETE

Instant Switching

Ctrl-Shift-↑/↓ — no prefix, no menu, no mode. Or click the sidebar.

Context & cache visibility

Live context-token occupancy per session (42k, 1.5M) plus a cache-warm countdown — read straight from Claude Code's OpenTelemetry. Send while warm, save up to 90% on input tokens. No setup.

Command Palette

Ctrl-a p — fuzzy-search sessions, windows, pane actions, settings.

Command Center

Pin the agent pane from every session and drive them all at once in one live grid, organized into named tabs. Tile borders glow by state — type into any tile to steer that agent. Pin by hand or auto-pin every Claude & Codex pane. Fully non-destructive: panes never leave their session.

Single pane of glass

The Command Center

Pin the Claude or Codex pane from every session and they all surface as live, drivable tiles in one grid — your whole fleet on a single screen. Type into any tile to steer that agent for real.

Tile borders match the sidebar's state colors, so you see who's running, waiting, or complete at a glance. Auto-pin every agent pane, or pin by hand with Pin to Command Center — and it's fully non-destructive: panes never leave their own session.

Running a lot at once? Group pinned panes from different sessions into named tabsBackend, Review, whatever fits — and flip between them with Ctrl-a [ / ] or a number. Create, rename, and move panes between tabs entirely from the command palette.

jmux Command Center showing a grid of live Claude agent panes, borders colored by agent state
Keyboard-first

Command Palette

Ctrl-a p to open. Type to fuzzy-search sessions, windows, pane actions, and settings. Hit Enter to execute.

Switch sessions by name, split panes, zoom, change settings — without memorizing keybindings.

jmux command palette floating over a workspace
Code review

Info Panel & Diff

Ctrl-a g to toggle. A tabbed side panel with diffs, issues, and PRs/MRs — the Diff tab powered by hunk: syntax highlighting, word-level diffs, split and full-screen views.

Split mode to monitor while agents work, full-screen for review. [ ] cycle tabs.

jmux diff panel split modejmux diff panel full screen
Issue & PR tracking

Linear, GitHub & GitLab
in the terminal.

The info panel shows your Linear issues and your GitHub/GitLab PRs/MRs in tabbed views, with pipeline status glyphs in the sidebar. Sessions auto-link to their branch's PR and issue.

Select an issue, press n — jmux creates a worktree, opens a session, and launches your agent with the issue context. o open · s status · a approve.

jmux info panel showing Linear issuesjmux info panel showing merge requests
From the terminal

Loved by terminal-native devs.

How it compares

What you give up with a bundled agent IDE.

jmuxBundled IDEsRaw tmux
Parallel agent orchestrationManual
Agent run states (running / waiting / complete)
Scriptable JSON control surfaceManual
Integrated diff review
Issue & PR/MR trackingExtension
Context & cache visibility
Runs over SSH / headless
Use any editor or toolBundled
Sessions outlive the orchestrator
Install size~0.3 MB~200+ MB

Bundled agent IDEs — Orca, Cursor, Windsurf, Conductor — ship their own terminal, editor, and runtime in a desktop app.

Agent orchestration NEW

Agents that orchestrate agents.

A structured JSON control surface for agents and scripts. Read every session's live state, start work from an issue, stream lifecycle events, and flag what needs a human — without scraping a single pane. Context auto-resolves from $TMUX, so it works headless too.

work-radar
# One snapshot of the whole workspace — the work radar
$ jmux ctl status
{"sessions":[{"name":"TRA-812","agent":{"state":"running","ageSeconds":42},"links":[{"type":"issue","id":"TRA-812"}],"attention":false}, …]}
# Start work straight from an issue — worktree, session, agent
$ jmux ctl issue start TRA-933
{"session":"TRA-933-rotate-keys","pane":"%21","issue":"TRA-933","reused":false}
# Watch an agent's lifecycle — JSONL, no polling loop
$ jmux ctl agent watch --session TRA-812
{"type":"agent_state_changed","session":"TRA-812","state":"waiting"}
# Flag a session that needs a human decision
$ jmux ctl session attention set --target TRA-812 --reason "tests fail"
{"target":"TRA-812","attention":true,"reason":"tests fail"}
Ecosystem

Best-in-class tools. Deeply integrated.

Best terminal diff viewer

Powers the integrated diff panel — word-level, split & full-screen.

Git worktree manager

One worktree per agent, one session per branch.

Claude Code
Leading AI coding agent

Ships a jmux-control skill + telemetry for state & tokens.

Modern issue tracking

Assigned issues in the info panel; create sessions from issues.

Pull requests & checks

PR detection, CI glyphs, approve & mark-ready from the panel.

MRs, pipelines, approvals

Pipeline glyphs in the sidebar. Self-hosted supported.

lazygit
Terminal Git UI

Run it in a pane beside your agent.

yours
Whatever you use

vim, emacs, your scripts. It's tmux underneath.

Two commands. You're in.

Requires Bun 1.3.8+ and tmux 3.2+.

$ bun install -g @jx0/jmux
$ jmux

~0.3 MB. Installs in under a second. jmux will install tmux for you if needed.