Dev & Engineering tmux-plugincoding-agent-monitoringratatuilocal-http-apiwebsocketcodexopencode

OpenSessions for tmux

A tmux sidebar for monitoring, organizing, and jumping between live coding-agent sessions.

FollowAgents review · FARS-2.0
Not yet reviewed
See the full review method →

What does this agent do, and when should you use it?

OpenSessions is a Rust sidebar that stays inside an existing tmux workflow while terminal sessions, coding agents, and localhost tabs multiply. Its implementation includes a ratatui sidebar client, a Rust state server, shared runtime packages, and tmux integration scripts; the client connects to the server over WebSocket. The server combines tmux state with local records from Amp, Claude Code, Codex, and OpenCode, exposing branches, working directories, thread names, and detected localhost ports in the UI. Users can switch, reorder, hide, restore, create, and kill sessions, while scripts and agents can post status, progress, and logs to a local HTTP API. It is a local-only application by default, binding to 127.0.0.1; tmux is the only currently supported multiplexer.

The runtime reads tmux sessions plus ~/.local/share/amp/threads/*.json, JSONL transcripts under ~/.claude/projects/, JSONL transcripts under ~/.codex/sessions/ or $CODEX_HOME/sessions/, and ~/.local/share/opencode/opencode.db. It resolves Codex sessions from turn_context.cwd, can clear Amp unseen state through Amp's session.json, assembles live state, and serves it to opensessions-sidebar over WebSocket. The sidebar renders agent status and per-thread unseen markers for done, error, and interrupted states; when it detects a port, it can open http://localhost:<port>. Scripts or agents can POST session metadata to 127.0.0.1:7391/set-status, /set-progress, /log, /clear-log, or /notify to produce status pills, progress, logs, and notifications.

  1. A developer running Claude Code, Codex, or Amp across several repositories in tmux can inspect live session state and jump to the right terminal from one sidebar.
  2. An engineer with several local development servers in tmux can use detected localhost ports to open the relevant service quickly.
  3. A team whose CI or deployment scripts need terminal-visible feedback can post deployment state, test progress, and logs through the local HTTP API.
  4. A solo developer handling multiple agent threads can use unseen done, error, and interrupted markers to find work that needs attention.
  5. A tmux user who wants persistent session ordering, hide/restore behavior, and keyboard switching without adopting a different multiplexer can use the sidebar controls.

What are this agent's strengths and limitations?

Pros
  • It augments an existing tmux workflow instead of replacing the multiplexer.
  • It aggregates local session state for Amp, Claude Code, Codex, and OpenCode, using the concrete records documented for each source.
  • Its local HTTP endpoints let scripts publish status, progress, and logs without requiring a separate client binary.
  • The native Rust ratatui client receives server state over WebSocket and is described as having zero runtime dependencies.
Limitations
  • tmux is the only documented supported multiplexer; older zellij integration is explicitly described as unstable.
  • Adoption requires local tmux and TPM, plus curl or wget for the normal first-load binary download; unsupported platforms may require a Cargo build.
  • Agent monitoring depends on local, provider-specific data locations and formats, including Claude Code and Codex JSONL transcripts and the OpenCode SQLite database.
  • The documented default is local-only on 127.0.0.1, and parsed plugins, port, and keybinding settings are not active runtime extension hooks today.

How do you install or deploy this agent?

Requirements: tmux, TPM, and curl or wget to download prebuilt binaries on first load. Add this to ~/.tmux.conf:
set -g @plugin 'Ataraxy-Labs/opensessions'

Then run:
tmux source-file ~/.tmux.conf
~/.tmux/plugins/tpm/bin/install_plugins

On first load, the plugin downloads a release bundle containing opensessions-sidebar, opensessions-server, and lazydiff. Open the sidebar with prefix o → s. For an unsupported platform or local development:
cd ~/.tmux/plugins/opensessions
cargo build --release

How do you use this agent?

Within tmux, use prefix o → s to focus the sidebar and prefix o → t to toggle it; prefix o → 1 through 9 switches sessions quickly. To set a status from a script, run:
curl -X POST http://127.0.0.1:7391/set-status -H 'content-type: application/json' -d '{"session":"my-app","text":"Deploying","tone":"warn"}'

For local development, start the sidebar with cargo run -p opensessions-sidebar or the server with cargo run -p opensessions-server.

FAQ

Does it replace tmux?
No. It runs as a sidebar inside tmux, which is currently the only supported multiplexer.
Which coding agents are monitored?
The documented live-state integrations are Amp, Claude Code, Codex, and OpenCode.
Does session data go to a remote service?
It is documented as local-only by default, with a default host of 127.0.0.1 and API examples using that local address.
Can automation display custom job progress?
Yes. Scripts can send JSON to /set-status, /set-progress, or /log to add sidebar metadata.

Related agents