[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-75040":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":17,"stars30d":18,"stars90d":16,"forks30d":16,"starsTrendScore":19,"compositeScore":20,"rankGlobal":10,"rankLanguage":10,"license":10,"archived":21,"fork":21,"defaultBranch":22,"hasWiki":23,"hasPages":21,"topics":24,"createdAt":10,"pushedAt":10,"updatedAt":33,"readmeContent":34,"aiSummary":35,"trendingCount":16,"starSnapshotCount":16,"syncStatus":36,"lastSyncTime":37,"discoverSource":38},75040,"opensessions","Ataraxy-Labs\u002Fopensessions","Ataraxy-Labs","tmux sidebar for coding agents — Amp, Claude Code, Codex, OpenCode. Per-thread markers, local HTTP API, live session state.","https:\u002F\u002Fataraxy-labs.com\u002F#opensessions",null,"Rust",1234,78,9,5,0,1,56,3,48.79,false,"main",true,[25,26,27,28,29,30,31,32],"agent-orchestration","amp","claude-code","codex","coding-agents","developer-tools","opencode","tmux","2026-10-23 04:01:17","> **Part of the [Ataraxy Labs](https:\u002F\u002Fataraxy-labs.com) stack** — agent-native infrastructure for software development. See also: [sem](https:\u002F\u002Fataraxy-labs.com\u002Fsem) (semantic version control) · [weave](https:\u002F\u002Fataraxy-labs.com\u002Fweave) (entity-level merge driver) · [inspect](https:\u002F\u002Fgithub.com\u002FAtaraxy-Labs\u002Finspect) (semantic code review).\n>\n> Read the manifesto: https:\u002F\u002Fataraxy-labs.com\u002F#thesis · Essays: https:\u002F\u002Fataraxy-labs.com\u002Fblogs · LLMs: https:\u002F\u002Fataraxy-labs.com\u002Fllms.txt\n\n# opensessions\n\n[![License: MIT](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLicense-MIT-blue.svg)](https:\u002F\u002Fopensource.org\u002Flicenses\u002FMIT)\n[![Star History](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fstars\u002FAtaraxy-Labs\u002Fopensessions?style=social)](https:\u002F\u002Fgithub.com\u002FAtaraxy-Labs\u002Fopensessions)\n\ntmux is all you need. make tmux great again :) \n\n\u003Cimg width=\"4180\" height=\"2416\" alt=\"amp-img-e686694168e21738-aesthetic\" src=\"https:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002F2caaee1a-b3f5-4041-aa3c-5b3668aa1912\" \u002F>\n\n`opensessions` is a sidebar for `tmux` when your sessions, agents, and localhost tabs start multiplying.\n\nIt 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.\n\ntmux 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.\n\n## Install With TPM\n\nRequirements:\n\n- `tmux`\n- `bun`\n- [TPM](https:\u002F\u002Fgithub.com\u002Ftmux-plugins\u002Ftpm)\n\nAdd this to `~\u002F.tmux.conf`:\n\n```tmux\nset -g @plugin 'Ataraxy-Labs\u002Fopensessions'\n```\n\nThen reload tmux and install plugins:\n\n```bash\ntmux source-file ~\u002F.tmux.conf\n~\u002F.tmux\u002Fplugins\u002Ftpm\u002Fbin\u002Finstall_plugins\n```\n\nOpen the sidebar with `prefix o → s`.\n\nTPM clones the repo into `~\u002F.tmux\u002Fplugins\u002Fopensessions`. It does not install a standalone `opensessions` binary. `opensessions` runs from that checkout with your local `bun` installation.\n\nIf you want the same setup as a single shell command:\n\n```bash\ngrep -q \"Ataraxy-Labs\u002Fopensessions\" ~\u002F.tmux.conf 2>\u002Fdev\u002Fnull || printf '\\nset -g @plugin '\\''Ataraxy-Labs\u002Fopensessions'\\''\\n' >> ~\u002F.tmux.conf && tmux source-file ~\u002F.tmux.conf && ~\u002F.tmux\u002Fplugins\u002Ftpm\u002Fbin\u002Finstall_plugins\n```\n\n## Update\n\nUse TPM's built-in update (`prefix + U`) or run:\n\n```bash\n~\u002F.tmux\u002Fplugins\u002Ftpm\u002Fbin\u002Fupdate_plugins opensessions\n```\n\nThe 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.\n\n## Uninstall\n\nRun 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:\n\n```bash\nsh ~\u002F.tmux\u002Fplugins\u002Fopensessions\u002Fintegrations\u002Ftmux-plugin\u002Fscripts\u002Funinstall.sh\n```\n\nThen remove the `set -g @plugin 'Ataraxy-Labs\u002Fopensessions'` line from `~\u002F.tmux.conf` and run `prefix + alt + u` (TPM uninstall).\n\n## Support Status\n\n- `@opensessions\u002Fmux-tmux` and the tmux plugin flow are supported.\n- `@opensessions\u002Fmux-zellij` is still experimental.\n- The repo is organized for contributors around runnable apps, reusable packages, and host integrations.\n\n## Today\n\n- Live agent state across sessions for Amp, Claude Code, Codex, and OpenCode.\n- Per-thread unseen markers for `done`, `error`, and `interrupted` states.\n- Session context in the UI: branch in the list, working directory in the detail panel, thread names, and detected localhost ports.\n- Programmatic metadata API: agents and scripts push status, progress, and logs to the sidebar via HTTP.\n- Fast switching with `j`\u002F`k`, arrows, `Tab`, `1`-`9`, session reordering, hide\u002Frestore, creation, and kill actions.\n- `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.\n- Bun workspace, source-first execution, and a local server on `127.0.0.1:7391`.\n\n## Programmatic API\n\nScripts and agents can push custom metadata to the sidebar over HTTP — no binary needed:\n\n```sh\n# Set a status pill on a session\ncurl -X POST http:\u002F\u002F127.0.0.1:7391\u002Fset-status \\\n  -H 'content-type: application\u002Fjson' \\\n  -d '{\"session\":\"my-app\",\"text\":\"Deploying\",\"tone\":\"warn\"}'\n\n# Set progress\ncurl -X POST http:\u002F\u002F127.0.0.1:7391\u002Fset-progress \\\n  -H 'content-type: application\u002Fjson' \\\n  -d '{\"session\":\"my-app\",\"current\":3,\"total\":10,\"label\":\"services\"}'\n\n# Push a log entry\ncurl -X POST http:\u002F\u002F127.0.0.1:7391\u002Flog \\\n  -H 'content-type: application\u002Fjson' \\\n  -d '{\"session\":\"my-app\",\"message\":\"Tests passed\",\"source\":\"ci\",\"tone\":\"success\"}'\n```\n\nEndpoints: `\u002Fset-status`, `\u002Fset-progress`, `\u002Flog`, `\u002Fclear-log`, `\u002Fnotify`\n\nTones: `neutral`, `info`, `success`, `warn`, `error` — each with a distinct icon and color.\n\nFull reference: [docs\u002Freference\u002Fprogrammatic-api.md](.\u002Fdocs\u002Freference\u002Fprogrammatic-api.md)\n\n## Local Development\n\nSmoke test from a local clone:\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002FAtaraxy-Labs\u002Fopensessions.git\ncd opensessions\nbun install\nbun test\nbun run start:tui\n```\n\nThat starts the sidebar client and auto-launches the server if needed.\n\nFor the full tmux workflow with keybindings, troubleshooting, and configuration options, follow the guide below.\n\n## Docs\n\n- [Get started in tmux](.\u002Fdocs\u002Ftutorials\u002Fget-started-in-tmux.md)\n- [Set up Ghostty shortcuts](.\u002Fdocs\u002Fhow-to\u002Fset-up-ghostty-shortcuts.md)\n- [Configuration reference](.\u002Fdocs\u002Freference\u002Fconfiguration.md)\n- [Features and keybindings reference](.\u002Fdocs\u002Freference\u002Ffeatures-and-keybindings.md)\n- [Programmatic API reference](.\u002Fdocs\u002Freference\u002Fprogrammatic-api.md)\n- [Architecture explanation](.\u002Fdocs\u002Fexplanation\u002Farchitecture.md)\n- [Contracts and extension interfaces](.\u002FCONTRACTS.md)\n- [Plugin authoring guide](.\u002FPLUGINS.md)\n\n## A Few Concrete Bits\n\n- Session ordering is persisted in `~\u002F.config\u002Fopensessions\u002Fsession-order.json`.\n- Amp watcher reads `~\u002F.local\u002Fshare\u002Famp\u002Fthreads\u002F*.json` and clears unseen state from Amp's `session.json` when a thread becomes seen there.\n- Claude Code watcher reads JSONL transcripts in `~\u002F.claude\u002Fprojects\u002F`.\n- Codex watcher reads transcript JSONL files in `~\u002F.codex\u002Fsessions\u002F` or `$CODEX_HOME\u002Fsessions\u002F` and resolves sessions from `turn_context.cwd`.\n- OpenCode watcher polls the SQLite database in `~\u002F.local\u002Fshare\u002Fopencode\u002Fopencode.db`.\n- Hidden sidebars are stashed in a tmux session named `_os_stash`, so they can come back without restarting the sidebar process.\n- Clicking a detected port opens `http:\u002F\u002Flocalhost:\u003Cport>`.\n\n## Repo Layout\n\n### Apps\n\n- `apps\u002Fserver` — Bun server bootstrap that wires together built-in mux providers and agent watchers\n- `apps\u002Ftui` — OpenTUI sidebar client built with Solid, plus the canonical sidebar launcher script\n\n### Packages\n\n- `packages\u002Fruntime` — shared runtime logic: tracker, config, plugin loader, server internals, themes, ordering\n- `packages\u002Fmux\u002Fcontract` — mux contracts and capability guards exposed as `@opensessions\u002Fmux`\n- `packages\u002Fmux\u002Fproviders\u002Ftmux` — tmux provider exposed as `@opensessions\u002Fmux-tmux`\n- `packages\u002Fmux\u002Fproviders\u002Fzellij` — experimental zellij provider exposed as `@opensessions\u002Fmux-zellij`\n- `packages\u002Fmux\u002Ftmux-sdk` — lower-level typed tmux bindings used by tmux-aware code\n\n### Integrations\n\n- `opensessions.tmux` — root TPM entrypoint for users\n- `integrations\u002Ftmux-plugin` — tmux-facing scripts and host integration glue\n\n## Current Caveats\n\n- The app is effectively pinned to `127.0.0.1:7391` today.\n- `theme`, `sidebarWidth`, `sidebarPosition`, `plugins`, and `mux` are wired through the runtime; other typed config fields are not all live yet.\n- Inline theme objects exist in core, but the running server persists and broadcasts theme names.\n\n## Star History\n\n[![Star History Chart](https:\u002F\u002Fapi.star-history.com\u002Fsvg?repos=Ataraxy-Labs\u002Fopensessions&type=Date)](https:\u002F\u002Fstar-history.com\u002F#Ataraxy-Labs\u002Fopensessions&Date)\n\n## License\n\nMIT\n","opensessions 是一个为 tmux 设计的轻量级侧边栏插件，专用于管理多线程 AI 编程代理（如 Amp、Claude Code、Codex、OpenCode）的会话状态。它提供每线程标记、本地 HTTP API 接口及实时会话状态可视化，完全嵌入现有 tmux 工作流，不替换终端复用器本身。核心基于 Rust 实现，通过 TPM 插件管理器集成，依赖 bun 运行时。适用于开发者在本地使用多个 LLM 编程代理协同开发时，统一监控、切换与调试会话的场景。",2,"2026-10-23 03:20:01","high_star"]