[{"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":18,"stars30d":19,"stars90d":16,"forks30d":16,"starsTrendScore":20,"compositeScore":21,"rankGlobal":10,"rankLanguage":10,"license":10,"archived":22,"fork":22,"defaultBranch":23,"hasWiki":24,"hasPages":22,"topics":25,"createdAt":10,"pushedAt":10,"updatedAt":34,"readmeContent":35,"aiSummary":36,"trendingCount":16,"starSnapshotCount":16,"syncStatus":15,"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",1106,65,8,2,0,12,28,74,36,91.86,false,"main",true,[26,27,28,29,30,31,32,33],"agent-orchestration","amp","claude-code","codex","coding-agents","developer-tools","opencode","tmux","2026-06-12 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 设计的侧边栏工具，用于管理编码代理（如Amp、Claude Code、Codex、OpenCode）的会话。其核心功能包括每个线程标记、本地HTTP API以及实时会话状态显示，旨在增强开发者的tmux体验而无需改变现有的工作流程。通过简洁的界面提供了会话切换、代理状态查看、仓库路径导航等功能。适用于需要同时处理多个终端会话及代理服务的开发者场景，特别是在使用AI辅助编程工具时能显著提高效率。基于TypeScript编写，支持通过TPM插件管理系统轻松安装和更新。","2026-06-11 03:52:04","high_star"]