by Ataraxy-Labs
tmux sidebar for coding agents — Amp, Claude Code, Codex, OpenCode. Per-thread markers, local HTTP API, live session state.
# Add to your Claude Code skills
git clone https://github.com/Ataraxy-Labs/opensessionsPart of the Ataraxy Labs stack — agent-native infrastructure for software development. See also: sem (semantic version control) · weave (entity-level merge driver) · inspect (semantic code review).
Read the manifesto: https://ataraxy-labs.com/#thesis · Essays: https://ataraxy-labs.com/blogs · LLMs: https://ataraxy-labs.com/llms.txt
tmux is all you need. make tmux great again :)
opensessions is a sidebar for tmux when your sessions, agents, and localhost tabs start multiplying.
It lives inside your existing tmux workflow instead of replacing it: one small pane for session switching, agent state, repo breadcrumbs, and quick jumps back into the right terminal.
tmux is the only supported mux today. There is older zellij integration code in the repo, but it is not stable enough to document as supported; we are looking for maintainers who want to help bring it back to that bar.
Requirements:
tmuxbunAdd this to ~/.tmux.conf:
set -g @plugin 'Ataraxy-Labs/opensessions'
Then reload tmux and install plugins:
No comments yet. Be the first to share your thoughts!
tmux source-file ~/.tmux.conf
~/.tmux/plugins/tpm/bin/install_plugins
Open the sidebar with prefix o → s.
TPM clones the repo into ~/.tmux/plugins/opensessions. It does not install a standalone opensessions binary. opensessions runs from that checkout with your local bun installation.
If you want the same setup as a single shell command:
grep -q "Ataraxy-Labs/opensessions" ~/.tmux.conf 2>/dev/null || printf '\nset -g @plugin '\''Ataraxy-Labs/opensessions'\''\n' >> ~/.tmux.conf && tmux source-file ~/.tmux.conf && ~/.tmux/plugins/tpm/bin/install_plugins
Use TPM's built-in update (prefix + U) or run:
~/.tmux/plugins/tpm/bin/update_plugins opensessions
The plugin automatically restarts the server on update so it picks up the new code. Toggle the sidebar back on with prefix o → s if it was open.
Run the uninstall script before removing the plugin files — it cleans up tmux hooks, keybindings, sidebar panes, and environment variables that would otherwise persist and cause glitching:
sh ~/.tmux/plugins/opensessions/integrations/tmux-plugin/scripts/uninstall.sh
Then remove the set -g @plugin 'Ataraxy-Labs/opensessions' line from ~/.tmux.conf and run prefix + alt + u (TPM uninstall).
@opensessions/mux-tmux and the tmux plugin flow are supported.@opensessions/mux-zellij is still experimental.done, error, and interrupted states.j/k, arrows, Tab, 1-9, session reordering, hide/restore, creation, and kill actions.prefix o → s and prefix o → t for sidebar focus and toggle, prefix o → e for sidebar-safe even-horizontal layout in the current window, prefix o → 1 through 9 for quick switching, optional no-prefix shortcuts, in-app theme switching, and plugin hooks for more mux providers or watchers.127.0.0.1:7391.Scripts and agents can push custom metadata to the sidebar over HTTP — no binary needed:
# Set a status pill on a session
curl -X POST http://127.0.0.1:7391/set-status \
-H 'content-type: application/json' \
-d '{"session":"my-app","text":"Deploying","tone":"warn"}'
# Set progress
curl -X POST http://127.0.0.1:7391/set-progress \
-H 'content-type: application/json' \
-d '{"session":"my-app","current":3,"total":10,"label":"services"}'
# Push a log entry
curl -X POST http://127.0.0.1:7391/log \
-H 'content-type: application/json' \
-d '{"session":"my-app","message":"Tests passed","source":"ci","tone":"success"}'
Endpoints: /set-status, /set-progress, /log, /clear-log, /notify
Tones: neutral, info, success, warn, error — each with a distinct icon and color.
Full reference: docs/reference/programmatic-api.md
Smoke test from a local clone:
git clone https://github.com/Ataraxy-Labs/opensessions.git
cd opensessions
bun install
bun test
bun run start:tui
That starts the sidebar client and auto-launches the server if needed.
For the full tmux workflow with keybindings, troubleshooting, and configuration options, follow the guide below.
~/.config/opensessions/session-order.json.~/.local/share/amp/threads/*.json and clears unseen state from Amp's session.json when a thread becomes seen there.~/.claude/projects/.~/.codex/sessions/ or $CODEX_HOME/sessions/ and resolves sessions from turn_context.cwd.~/.local/share/opencode/opencode.db._os_stash, so they can come back without restarting the sidebar process.http://localhost:<port>.apps/server — Bun server bootstrap that wires together built-in mux providers and agent watchersapps/tui — OpenTUI sidebar client built with Solid, plus the canonical sidebar launcher scriptpackages/runtime — shared runtime logic: tracker, config, plugin loader, server internals, themes, orderingpackages/mux/contract — mux contracts and capability guards exposed as @opensessions/muxpackages/mux/providers/tmux — tmux provider exposed as @opensessions/mux-tmuxpackages/mux/providers/zellij — experimental zellij provider exposed as @opensessions/mux-zellijpackages/mux/tmux-sdk — lower-level typed tmux bindings used by tmux-aware codeopensessions.tmux — root TPM entrypoint for usersintegrations/tmux-plugin — tmux-facing scripts and host integration glue127.0.0.1:7391 today.theme, sidebarWidth, sidebarPosition, plugins, and mux are wired through the runtime; other typed config fields are not all live yet.MIT