jmux

agent
Security Audit
Warn
Health Warn
  • License — License: MIT
  • Description — Repository has a description
  • Active repo — Last push 0 days ago
  • Low visibility — Only 8 GitHub stars
Code Warn
  • process.env — Environment variable access in config/new-session.sh
Permissions Pass
  • Permissions — No dangerous permissions requested
Purpose
This tool is a terminal-based orchestration layer built on top of tmux. It allows developers to run multiple coding agents (like Claude Code or Codex) in parallel, providing a persistent sidebar to monitor active sessions, logs, and completed tasks.

Security Assessment
Overall risk: Low. The tool functions as a terminal workspace manager, so it natively executes shell commands and interacts with your local environment to manage tmux sessions. The automated scan flagged environment variable access via `process.env` in a setup script (`new-session.sh`), which is standard behavior for a CLI tool configuring its operating environment. There are no hardcoded secrets detected, no dangerous permissions requested, and no indications of unauthorized outbound network requests.

Quality Assessment
The project is licensed under the permissive MIT license. It is actively maintained, with repository activity as recent as today. However, it currently has very low community visibility with only 8 GitHub stars. This means that while the project is actively developed by its creator, it has not yet been widely vetted or battle-tested by a large open-source audience.

Verdict
Safe to use, but keep in mind it is a young, low-visibility project.
SUMMARY

A tmux environment built for running coding agents in parallel — with a persistent sidebar that shows every session, what's running, and what needs your attention.

README.md

jmux

The terminal workspace for agentic development.

Agents, editors, servers, logs. All running. All visible. One terminal.

Run Claude Code, Codex, or aider in parallel — jmux shows you which agents are working, which finished, and which need your review. No Electron. No lock-in. Just your terminal.

npm
license

jmux sidebar with grouped sessions alongside vim and Claude Code

Install

bun install -g @jx0/jmux
jmux

Requires Bun 1.2+, tmux 3.2+, fzf, and optionally git for branch display. jmux will offer to install tmux and fzf for you on first run.

New to tmux? See the Getting Started guide — no prior tmux knowledge needed.


Why

GUI agent orchestrators are 100MB+ Electron apps that lock you into their editor, their diff viewer, their Git workflow. They work on one platform. They'll charge you eventually.

jmux takes the opposite approach: it's a thin orchestration layer over tmux — the tool you already know. Your editor, your Git workflow, your shell, your tools. jmux just makes them visible and navigable when you're running 10+ agents in parallel.

jmux GUI orchestrators
Size ~0.3 MB ~100+ MB
Platform Anywhere tmux runs (macOS, Linux, SSH, containers) macOS only
Editor Yours (vim, emacs, VS Code, whatever) Built-in (take it or leave it)
Git git, gh, lazygit, wtm, your workflow Built-in GUI (their workflow)
Agents Any (Claude Code, Codex, aider, custom) Bundled subset
Lock-in None — it's tmux underneath Proprietary workspace format
Cost Free, open source Free today, VC-funded

Features

Session Sidebar

Every session visible at a glance — name, window count, git branch. Sessions sharing a parent directory are automatically grouped under a header. Mouse wheel scrolling when sessions overflow.

  • Green marker + highlighted background on the active session
  • Green dot for sessions with new output
  • Orange ! flag for attention (e.g., an agent finished and needs review)

Smart Window & Pane Titles

Window tabs auto-name to the working directory. Pane borders show the running command with automatic detection for tools like Claude Code. No more tabs full of zsh or garbled version strings.

Instant Switching

Ctrl-Shift-Up/Down moves between sessions with zero delay. No prefix key, no menu, no mode to enter. Or just click a session in the sidebar. Indicators only clear when you actually interact with a session — not when you're cycling through.

New Session Modal

Ctrl-a n opens a two-step fzf flow: fuzzy-search your git repos for a directory, then name the session. Pre-filled with the directory basename.

Bring Your Own Everything

jmux works with your existing ~/.tmux.conf. Your plugins, theme, prefix key, and custom bindings carry over. jmux applies its defaults first, then your config overrides them. Only a small set of core settings are enforced.

Use any editor. Any Git tool. Any AI agent. Any shell. jmux doesn't replace your tools — it organizes them.

Works Great With

  • wtm — Git worktree manager. Create isolated worktrees for each agent, one session per branch. wtm create feature-auth --from main + jmux = parallel agents on parallel branches.
  • Claude Code — AI coding agent with built-in attention flag support.
  • lazygit — Terminal Git UI. Run it in a jmux pane alongside your agent.
  • gh / glab — GitHub and GitLab CLIs for PRs, issues, and reviews without leaving the terminal.

Agent Integration

Built for running multiple coding agents in parallel. One command sets up attention notifications:

jmux --install-agent-hooks

When Claude Code finishes a response, the orange ! appears on that session in the sidebar. Switch to it, review the work, move on. Works with any agent that can run a shell command on completion. See docs/claude-code-integration.md for details.


Keybindings

Sessions

Key Action
Ctrl-Shift-Up/Down Switch to prev/next session
Ctrl-a n New session
Ctrl-a r Rename session
Ctrl-a m Move window to another session
Click sidebar Switch to session
Scroll wheel (sidebar) Scroll session list

Windows

Key Action
Ctrl-a j fzf window picker
Ctrl-a c New window
Ctrl-Right/Left Next/prev window
Ctrl-Shift-Right/Left Reorder windows

Panes

Key Action
Ctrl-a | Split horizontal
Ctrl-a - Split vertical
Shift-Left/Right/Up/Down Navigate panes (vim-aware)
Ctrl-a Left/Right/Up/Down Resize panes
Ctrl-a P Toggle pane border titles

Utilities

Key Action
Ctrl-a k Clear pane + scrollback
Ctrl-a y Copy pane to clipboard
Ctrl-a i Settings

Configuration

Config loads in three layers:

config/defaults.conf      <- jmux defaults (baseline)
~/.tmux.conf              <- your config (overrides defaults)
config/core.conf          <- jmux core (always wins)

Override any default in your ~/.tmux.conf — prefix key, colors, keybindings, plugins. Only core settings the sidebar depends on are enforced (mouse on, detach-on-destroy off, window naming, status-left).

See docs/configuration.md for the full guide.


Architecture

Terminal (Ghostty, iTerm, etc.)
  +-- jmux (owns the terminal surface)
       +-- Sidebar (26 cols) -- session groups, indicators
       +-- Border (1 col)
       +-- tmux PTY (remaining cols)
            +-- PTY client ---- @xterm/headless for VT emulation
            +-- Control client - tmux -C for real-time metadata

~1800 lines of TypeScript. No opinions about what you run inside tmux.


License

MIT

Reviews (0)

No results found