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/opensessionsLast scanned: 5/2/2026
{
"issues": [],
"status": "PASSED",
"scannedAt": "2026-05-02T06:10:38.970Z",
"semgrepRan": false,
"npmAuditRan": false,
"pipAuditRan": true
}opensessions is an open-source ai agents skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by Ataraxy-Labs. tmux sidebar for coding agents — Amp, Claude Code, Codex, OpenCode. Per-thread markers, local HTTP API, live session state. It has 1,195 GitHub stars.
Yes. opensessions passed SkillsLLM's automated security scan — a dependency vulnerability audit plus prompt-injection heuristics — with no high-severity issues. You can read the full report in the Security Report section on this page.
Clone the repository with "git clone https://github.com/Ataraxy-Labs/opensessions" and add it to your Claude Code skills directory (see the Installation section above).
opensessions is primarily written in Rust. It is open-source under Ataraxy-Labs on GitHub, so you can review or fork the full source.
Yes. SkillsLLM lists many other AI Agents skills you can browse and compare side by side. Open the AI Agents category from the badge at the top of this page, or use the Related Skills and comparison links further down to weigh opensessions against similar tools.
No comments yet. Be the first to share your thoughts!
Part 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.
Built with Rust and ratatui for native performance and zero runtime dependencies.
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:
tmuxcurl or wget for downloading prebuilt binaries on first loadAdd this to ~/.tmux.conf:
set -g @plugin 'Ataraxy-Labs/opensessions'
Then reload tmux and install plugins:
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. On first load, opensessions downloads the matching prebuilt release bundle into bin/; that bundle includes opensessions-sidebar, opensessions-server, and lazydiff.
If your platform is unsupported or you are developing locally, you can still build from source:
cd ~/.tmux/plugins/opensessions
cargo build --release
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
No rebuild step:
No local rebuild is needed for normal installs. Reload tmux after TPM updates the plugin; opensessions will download the matching release bundle if bin/ is missing or incomplete.
The plugin automatically restarts the server on update so it picks up the new binary. 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).
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, and in-app theme switching.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
Build and run from a local clone:
git clone https://github.com/Ataraxy-Labs/opensessions.git
cd opensessions
cargo build --release
cargo test
Start the sidebar manually (outside tmux, for testing):
cargo run -p opensessions-sidebar
Start the server:
cargo run -p opensessions-server
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/tui-rs/ — Rust ratatui sidebar client (connects to server over WebSocket)apps/server-rs/ — Rust server that assembles state from mux providers and agent watchersapps/tui/scripts/ — Shell scripts for tmux sidebar launch and session switchingpackages/runtime-rs/ — Shared Rust runtime: tmux provider, agent watchers, config, tracker, protocolpackages/sidebar-core-rs/ — Core sidebar state, input, and rendering logicopensessions.tmux — Root TPM entrypoint for usersintegrations/tmux-plugin/ — tmux-facing scripts and host integration glueintegrations/amp/ — Amp agent integrationintegrations/pi-extension/ — Pi extension integration127.0.0.1, and ports are derived per tmux socket unless explicitly overridden.theme, sidebarWidth, sidebarPosition, detailPanelHeight, sessionFilter, and mux are wired through the runtime. plugins, port, and keybinding are parsed for compatibility but are not active runtime extension hooks today.MIT