tmux-agent-sidebar shows every coding agent pane in one place
A tmux sidebar that monitors AI coding agents across all windows and sessions in real-time
At a glance
- What is it?
- tmux-agent-sidebar is a tmux plugin written in Rust that tracks Claude Code, Codex and OpenCode panes across every tmux session and window, showing prompts, tool calls, background shell state, Git status and worktrees in a side panel with desktop notifications. It suits a developer running several agents at once, and it needs tmux 3.0 or newer plus TPM.
- Who is it for?
- Adopt tmux-agent-sidebar when you routinely run several coding agents in parallel tmux panes and need to see which one is waiting, which is blocked on permission and which has finished, without switching windows. Do not adopt it if you run one agent at a time in a single pane, since the panel adds a hook integration per agent for little benefit.
- Can I use it commercially?
- Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository last received commits 2 days ago.
- What is it written in?
- Mainly Rust, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on October 22, 2026, and from our analysis. They are not legal advice.
Editorial analysis
The problem is many agents in many panes
tmux-agent-sidebar is one tmux sidebar that tracks every Claude Code, Codex and OpenCode pane across every session and window, so you can see status, background shells, prompts, Git state, activity and worktrees without switching windows. The framing is the interesting part, because the tool is not about one agent. The workflow it assumes is a developer running several agents at once, each in its own pane, each working on a different part of a task, and the cost of that workflow is that you lose track of them. An agent that is waiting for a permission prompt looks identical to one that is idle, and an agent that failed looks like one that is still thinking. The feature list names the four things the panel exists to solve. Every pane in one view, across all sessions and windows. Live metadata covering prompts, tool calls, response previews, background shell state, wait reasons, task progress and subagent trees, refreshing as the agents work. Worktrees, where you can spawn a fresh worktree and agent from the sidebar and tear it down, window, worktree and branch, in one keystroke. And desktop notifications when an agent finishes, needs permission or errors out.
Installing the plugin, and the wizard
The requirements are tmux 3.0 or newer, TPM, or the manual install described in the installation documentation, and the GitHub CLI, which is optional and needed only for pull request numbers in the Git tab. With TPM, installation is one line added to the tmux configuration:
set -g @plugin 'hiroppy/tmux-agent-sidebar'You then reload tmux with tmux source ~/.tmux.conf and press prefix + I, and the install wizard either downloads a pre-built binary or builds from source. That last part matters, because the wizard is doing the build for you and the pre-built path is the one to prefer when the release artefacts cover your platform. The repository is a Rust project at version 0.13.0 on edition 2024, with the terminal interface built on ratatui and crossterm, an arboard crate for the clipboard, a vte terminal emulator parser for reading pane contents, and unicode-width for correct display of wide characters in the panel. The release profile strips symbols and enables link time optimisation, and there is a debug feature that forces the version, missing hooks and plugin notices to display even when nothing is pending, which the manifest describes as useful for iterating on the notices popup.
Wiring the hooks, which is where the agent integration happens
The plugin can only see an agent once that agent is told to report, so the hook setup is a separate step for each tool. For Claude Code you register the plugin inside Claude Code itself with the marketplace add and install commands. For Codex, the README describes a more interactive route: open a Codex pane, press prefix + e, click the yellow badge, copy the setup snippet and paste it into the Codex pane. For OpenCode there is a small local plugin bridge instead of per-event hook configuration, and the plugin file lives at .opencode/plugins/tmux-agent-sidebar.js. It is symlinked as a single file into the OpenCode plugin directory so it coexists with any existing plugins rather than replacing the directory. The OpenCode case is the one worth a second look, because the failure mode of a plugin directory conflict is that one tool silently stops working, and a single symlinked file is the shape that avoids it.
Worktrees and the Git tab are the operational half
The worktree feature is what turns a status display into a workflow tool. You can spawn a fresh worktree and an agent in it from the sidebar, and tear the whole thing down, window, worktree and branch, in one keystroke. That matters because the alternative is a sequence of shell commands for git worktree add, a tmux new-window, and a cleanup that leaves branches behind when you forget it. The documentation has a dedicated worktree lifecycle page, and the Git tab and activity log have their own pages along with the notifications page. The GitHub CLI being optional and only needed for pull request numbers tells you where the boundary is, since the sidebar reads Git state locally and only reaches out to GitHub when it wants a number for a branch. The keybinding reference and the tmux options reference are separate pages, and there is also a scripting page, which suggests the panel can be driven from outside rather than only by keystrokes.
Toggling the sidebar and the local build loop
The sidebar has two toggles, which is a small design decision with a real effect. prefix + e toggles the sidebar in the current window and prefix + E toggles it everywhere, so you can hide it in one pane while keeping it in the others, or take it away from all of them while you focus on writing code. For development, the README tells you to symlink the plugin directory to your working copy so builds are picked up without copying, and the commands are short:
rm -rf ~/.tmux/plugins/tmux-agent-sidebar
ln -s <path-to-this-repo> ~/.tmux/plugins/tmux-agent-sidebar
cargo build --releaseYou then toggle the sidebar off and on to pick up the new binary. The Claude Code plugin has its own wrinkle, because its install path holds a copy of the released binary that the hooks resolve before falling back to the release build directory, so a local build does not reach the hooks until that copy is replaced with a symlink to your working copy. The README also tells you to remove a stale release binary at bin/ in your repository if one is present, since both the tmux launcher and the hook script prefer that path over the cargo build output, which means a leftover file there silently masks your new build.
Editorial conclusion
Adopt tmux-agent-sidebar when you routinely run several coding agents in parallel tmux panes and need to see which one is waiting, which is blocked on permission and which has finished, without switching windows. Do not adopt it if you run one agent at a time in a single pane, since the panel adds a hook integration per agent for little benefit. Verify first that your tmux is version 3.0 or newer, that you use TPM or follow the manual install, and that the agent hook wiring for your specific tool is in place, since the sidebar only sees an agent once its hook is registered.
Frequently asked questions
What does the tmux-agent-sidebar show?
It tracks Claude Code, Codex and OpenCode panes across all tmux sessions and windows, showing prompts, tool calls, response previews, background shell state, wait reasons, task progress and subagent trees, alongside Git state, activity and worktrees, with desktop notifications when an agent finishes, needs permission or errors.
How do I install the tmux-agent-sidebar plugin?
With TPM, add set -g @plugin 'hiroppy/tmux-agent-sidebar' to the tmux configuration, reload tmux with tmux source ~/.tmux.conf, then press prefix + I. The install wizard downloads a pre-built binary or builds from source. You need tmux 3.0 or newer, and the GitHub CLI only if you want pull request numbers in the Git tab.
How do the agent hooks get set up for each tool?
Claude Code registers the plugin with the marketplace add and install commands, Codex uses a snippet copied from the yellow badge in the sidebar and pasted into the Codex pane, and OpenCode uses a small local plugin bridge at .opencode/plugins/tmux-agent-sidebar.js, symlinked as a single file into the OpenCode plugin directory so existing plugins are untouched.
Why does my local cargo build not show up in the sidebar?
The tmux launcher and the hook script both prefer the bin/ directory over the cargo build output, so a stale binary there masks your build and should be removed. With the Claude Code plugin installed, the plugin cache also holds a copy of the released binary that hooks resolve before falling back, so that copy has to be replaced with a symlink to your working copy. The README notes the plugin updater may overwrite the symlink later.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/hiroppy-tmux-agent-sidebar)Was this useful?