{"id":46937459,"url":"https://github.com/openchamber/openchamber","last_synced_at":"2026-04-07T22:01:15.917Z","repository":{"id":328949344,"uuid":"1054790989","full_name":"openchamber/openchamber","owner":"openchamber","description":"Desktop and web interface for OpenCode AI agent","archived":false,"fork":false,"pushed_at":"2026-04-07T12:47:53.000Z","size":35978,"stargazers_count":2759,"open_issues_count":177,"forks_count":287,"subscribers_count":17,"default_branch":"main","last_synced_at":"2026-04-07T14:51:54.121Z","etag":null,"topics":["ai","opencode","opencode-ai","opencode-app","opencode-ui","opencode-web"],"latest_commit_sha":null,"homepage":"https://openchamber.dev/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/openchamber.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2025-09-11T10:34:59.000Z","updated_at":"2026-04-07T14:39:33.000Z","dependencies_parsed_at":"2026-03-04T03:06:19.172Z","dependency_job_id":null,"html_url":"https://github.com/openchamber/openchamber","commit_stats":null,"previous_names":["btriapitsyn/openchamber","openchamber/openchamber"],"tags_count":86,"template":false,"template_full_name":null,"purl":"pkg:github/openchamber/openchamber","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openchamber%2Fopenchamber","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openchamber%2Fopenchamber/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openchamber%2Fopenchamber/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openchamber%2Fopenchamber/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/openchamber","download_url":"https://codeload.github.com/openchamber/openchamber/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openchamber%2Fopenchamber/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31530647,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-07T16:28:08.000Z","status":"ssl_error","status_checked_at":"2026-04-07T16:28:06.951Z","response_time":105,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai","opencode","opencode-ai","opencode-app","opencode-ui","opencode-web"],"created_at":"2026-03-11T06:00:28.191Z","updated_at":"2026-04-07T22:01:15.911Z","avatar_url":"https://github.com/openchamber.png","language":"TypeScript","readme":"# \u003cpicture\u003e\u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"docs/references/badges/openchamber-logo-dark.svg\"\u003e\u003cimg src=\"docs/references/badges/openchamber-logo-light.svg\" width=\"32\" height=\"32\" align=\"absmiddle\" /\u003e\u003c/picture\u003e OpenChamber\n\n[![GitHub stars](https://img.shields.io/github/stars/btriapitsyn/openchamber?style=flat\u0026logo=data%3Aimage%2Fsvg%2Bxml%3Bbase64%2CPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiIgZmlsbD0iI2YxZWNlYyIgdmlld0JveD0iMCAwIDI1NiAyNTYiPjxwYXRoIGQ9Ik0yMjkuMDYsMTA4Ljc5bC00OC43LDQyLDE0Ljg4LDYyLjc5YTguNCw4LjQsMCwwLDEtMTIuNTIsOS4xN0wxMjgsMTg5LjA5LDczLjI4LDIyMi43NGE4LjQsOC40LDAsMCwxLTEyLjUyLTkuMTdsMTQuODgtNjIuNzktNDguNy00MkE4LjQ2LDguNDYsMCwwLDEsMzEuNzMsOTRMOTUuNjQsODguOGwyNC42Mi01OS42YTguMzYsOC4zNiwwLDAsMSwxNS40OCwwbDI0LjYyLDU5LjZMMjI0LjI3LDk0QTguNDYsOC40NiwwLDAsMSwyMjkuMDYsMTA4Ljc5WiIgb3BhY2l0eT0iMC4yIj48L3BhdGg%2BPHBhdGggZD0iTTIzOS4xOCw5Ny4yNkExNi4zOCwxNi4zOCwwLDAsMCwyMjQuOTIsODZsLTU5LTQuNzZMMTQzLjE0LDI2LjE1YTE2LjM2LDE2LjM2LDAsMCwwLTMwLjI3LDBMOTAuMTEsODEuMjMsMzEuMDgsODZhMTYuNDYsMTYuNDYsMCwwLDAtOS4zNywyOC44Nmw0NSwzOC44M0w1MywyMTEuNzVhMTYuMzgsMTYuMzgsMCwwLDAsMjQuNSwxNy44MkwxMjgsMTk4LjQ5bDUwLjUzLDMxLjA4QTE2LjQsMTYuNCwwLDAsMCwyMDMsMjExLjc1bC0xMy43Ni01OC4wNyw0NS0zOC44M0ExNi40MywxNi40MywwLDAsMCwyMzkuMTgsOTcuMjZabS0xNS4zNCw1LjQ3LTQ4LjcsNDJhOCw4LDAsMCwwLTIuNTYsNy45MWwxNC44OCw2Mi44YS4zNy4zNywwLDAsMS0uMTcuNDhjLS4xOC4xNC0uMjMuMTEtLjM4LDBsLTU0LjcyLTMzLjY1YTgsOCwwLDAsMC04LjM4LDBMNjkuMDksMjE1Ljk0Yy0uMTUuMDktLjE5LjEyLS4zOCwwYS4zNy4zNywwLDAsMS0uMTctLjQ4bDE0Ljg4LTYyLjhhOCw4LDAsMCwwLTIuNTYtNy45MWwtNDguNy00MmMtLjEyLS4xLS4yMy0uMTktLjEzLS41cy4xOC0uMjcuMzMtLjI5bDYzLjkyLTUuMTZBOCw4LDAsMCwwLDEwMyw5MS44NmwyNC42Mi01OS42MWMuMDgtLjE3LjExLS4yNS4zNS0uMjVzLjI3LjA4LjM1LjI1TDE1Myw5MS44NmE4LDgsMCwwLDAsNi43NSw0LjkybDYzLjkyLDUuMTZjLjE1LDAsLjI0LDAsLjMzLjI5UzIyNCwxMDIuNjMsMjIzLjg0LDEwMi43M1oiPjwvcGF0aD48L3N2Zz4%3D\u0026logoColor=FFFCF0\u0026labelColor=100F0F\u0026color=66800B)](https://github.com/btriapitsyn/openchamber/stargazers)\n[![GitHub release](https://img.shields.io/github/v/release/btriapitsyn/openchamber?style=flat\u0026logo=data%3Aimage%2Fsvg%2Bxml%3Bbase64%2CPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiIgZmlsbD0iI2YxZWNlYyIgdmlld0JveD0iMCAwIDI1NiAyNTYiPjxwYXRoIGQ9Ik0xMjgsMTI5LjA5VjIzMmE4LDgsMCwwLDEtMy44NC0xbC04OC00OC4xOGE4LDgsMCwwLDEtNC4xNi03VjgwLjE4YTgsOCwwLDAsMSwuNy0zLjI1WiIgb3BhY2l0eT0iMC4yIj48L3BhdGg%2BPHBhdGggZD0iTTIyMy42OCw2Ni4xNSwxMzUuNjgsMThhMTUuODgsMTUuODgsMCwwLDAtMTUuMzYsMGwtODgsNDguMTdhMTYsMTYsMCwwLDAtOC4zMiwxNHY5NS42NGExNiwxNiwwLDAsMCw4LjMyLDE0bDg4LDQ4LjE3YTE1Ljg4LDE1Ljg4LDAsMCwwLDE1LjM2LDBsODgtNDguMTdhMTYsMTYsMCwwLDAsOC4zMi0xNFY4MC4xOEExNiwxNiwwLDAsMCwyMjMuNjgsNjYuMTVaTTEyOCwzMmw4MC4zNCw0NC0yOS43NywxNi4zLTgwLjM1LTQ0Wk0xMjgsMTIwLDQ3LjY2LDc2bDMzLjktMTguNTYsODAuMzQsNDRaTTQwLDkwbDgwLDQzLjc4djg1Ljc5TDQwLDE3NS44MlptMTc2LDg1Ljc4aDBsLTgwLDQzLjc5VjEzMy44MmwzMi0xNy41MVYxNTJhOCw4LDAsMCwwLDE2LDBWMTA3LjU1TDIxNiw5MHY4NS43N1oiPjwvcGF0aD48L3N2Zz4%3D\u0026logoColor=FFFCF0\u0026labelColor=100F0F\u0026color=205EA6)](https://github.com/btriapitsyn/openchamber/releases/latest)\n[![Created with OpenCode](docs/references/badges/created-with-opencode.svg)](https://opencode.ai)\n[![Discord](https://img.shields.io/badge/Discord-join.svg?style=flat\u0026labelColor=100F0F\u0026color=8B7EC8\u0026logo=discord\u0026logoColor=FFFCF0)](https://discord.gg/ZYRSdnwwKA)\n[![Support the project](https://img.shields.io/badge/Support-Project-black?style=flat\u0026labelColor=100F0F\u0026color=EC8B49\u0026logo=ko-fi\u0026logoColor=FFFCF0)](https://ko-fi.com/G2G41SAWNS)\n\n## **OpenCode, everywhere.** Desktop. Browser. Phone.\n\n### A rich interface for [OpenCode](https://opencode.ai). Review diffs, manage agents, run dev servers, and keep the big picture while your AI codes.\n\n![OpenChamber Chat](docs/references/chat_example.png)\n\n\u003cdetails\u003e\n\u003csummary\u003eMore screenshots\u003c/summary\u003e\n\n![Tool Output](docs/references/tool_output_example.png)\n![Settings](docs/references/settings_example.png)\n![Web Version](docs/references/web_version_example.png)\n![Diff View](docs/references/diff_example.png)\n![VS Code Extension](packages/vscode/extension.jpg)\n\n\u003cp\u003e\n\u003cimg src=\"docs/references/pwa_chat_example.png\" width=\"45%\" alt=\"PWA Chat\"\u003e\n\u003cimg src=\"docs/references/pwa_diff_example.png\" width=\"45%\" alt=\"PWA Diff\"\u003e\n\u003c/p\u003e\n\n\u003c/details\u003e\n\n## Why use OpenChamber?\n\n- **Cross-device continuity**: Start in TUI, continue on tablet/phone, return to terminal - same session\n- **Remote access**: Use OpenCode from anywhere via browser\n- **Familiarity**: A visual alternative for developers who prefer GUI workflows\n\n## Features\n\n### Core (all app versions)\n\n- Branchable chat timeline with `/undo`, `/redo`, and one-click forks from earlier turns\n- Smart tool UIs for diffs, file operations, permissions, and long-running task progress\n- Voice mode with speech input and read-aloud responses for hands-free workflows\n- Multi-agent runs from one prompt with isolated worktrees for safe side-by-side comparisons\n- Git workflows in-app: identities, commits, PR creation, checks, and merge actions\n- GitHub-native workflows: start sessions from issues and pull requests with context already attached\n- Plan/Build mode with a dedicated plan view for drafting and iterating implementation steps\n- Inline comment drafts on diffs, files, and plans that can be sent back to the agent\n- Context visibility tools (token/cost breakdowns, raw message inspection, and activity summaries)\n- Integrated terminal with per-directory sessions and stable performance on heavy output\n- Built-in skills catalog and local skill management for reusable automation workflows\n\n### Web / PWA\n\n- Provider-aware tunnel access model with Cloudflare `quick`, `managed-remote`, and `managed-local` modes\n- One-scan onboarding with tunnel QR + password URL helpers\n- Mobile-first experience: optimized chat controls, keyboard-safe layouts, and attachment-friendly UI\n- Background notifications plus reliable cross-tab session activity tracking\n- Built-in self-update + restart flow that keeps your server settings intact\n\n### Desktop (macOS)\n\n- Native macOS menu integration with polished app actions and deep-link handling\n- Multi-window support for parallel project/session workflows\n- \"Open In\" shortcuts for Finder, Terminal, and your preferred editor\n- Fast switching between local and remote instances\n- Workspace-first startup flow with directory picker and steadier window restore behavior\n\n### VS Code Extension\n\n- Editor-native workflow: open files directly from tool output and keep sessions beside your code\n- Agent Manager for parallel multi-model runs from a single prompt\n- Right-click actions to add context, explain selections, and improve code in-place\n- In-extension settings, responsive layout, and theme mapping that matches your editor\n- Hardened runtime lifecycle and health checks for faster startup and fewer stuck reconnect states\n\n### Custom Themes\n\n- **Use it from anywhere** - Cloudflare tunnel with QR code onboarding. Scan, connect, code from your couch.\n- **Branchable chat timeline** - Undo, redo, fork from any turn. Explore different approaches without losing your place.\n- **GitHub-native workflows** - Start sessions from issues and PRs with context already attached. Review checks, merge - all in-app.\n- **Project Actions** - Run dev servers, configure SSH port forwarding, open remote URLs locally. Your project commands, one click away.\n- **Connect to remote machines** - Desktop app connects to remote OpenChamber instances over SSH, with dedicated lifecycle and UX flows.\n\n## Quick Start\n\n\u003e **Prerequisite:** [OpenCode CLI](https://opencode.ai) installed.\n\n### **Desktop (macOS)**\nDownload from [Releases](https://github.com/btriapitsyn/openchamber/releases).\n\n### **VS Code**\nInstall from [Marketplace](https://marketplace.visualstudio.com/items?itemName=fedaykindev.openchamber) or search \"OpenChamber\" in Extensions.\n\n### **CLI (Web + PWA)**\n_requires Node.js 20+_\n\n```bash\ncurl -fsSL https://raw.githubusercontent.com/btriapitsyn/openchamber/main/scripts/install.sh | bash\nopenchamber --ui-password be-creative-here\n```\n\n\u003cdetails\u003e\n\u003csummary\u003eAdvanced CLI options\u003c/summary\u003e\n\n```bash\nopenchamber --port 8080              # Custom port\nopenchamber --ui-password secret     # Password-protect UI\nopenchamber tunnel help              # Tunnel lifecycle commands\nopenchamber tunnel providers         # Show provider capabilities\nopenchamber tunnel profile add --provider cloudflare --mode managed-remote --name prod-main --hostname app.example.com --token \u003ctoken\u003e\nopenchamber tunnel start --profile prod-main\nopenchamber tunnel start --provider cloudflare --mode quick --qr\nopenchamber tunnel start --provider cloudflare --mode managed-local --config ~/.cloudflared/config.yml\nopenchamber tunnel status --all      # Show tunnel state across instances\nopenchamber tunnel stop --port 3000  # Stop tunnel only (server stays running)\nopenchamber logs                     # Follow latest instance logs\nOPENCODE_PORT=4096 OPENCODE_SKIP_START=true openchamber                    # Connect to external OpenCode server\nOPENCODE_HOST=https://myhost:4096 OPENCODE_SKIP_START=true openchamber  # Connect via custom host/HTTPS\nopenchamber stop                     # Stop server\nopenchamber update                   # Update to latest\n```\n\nConnect to an existing OpenCode server:\n```bash\nOPENCODE_PORT=4096 OPENCODE_SKIP_START=true openchamber\nOPENCODE_HOST=https://myhost:4096 OPENCODE_SKIP_START=true openchamber\n```\n\nBind managed OpenCode server to all interfaces (use only on trusted networks):\n```bash\nOPENCHAMBER_OPENCODE_HOSTNAME=0.0.0.0 openchamber --port 3000\n```\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003esystemd service (VPN / LAN access)\u003c/summary\u003e\n\nRun OpenChamber and OpenCode as separate persistent services — useful when you want to access your\ndev machine over a VPN (e.g. Tailscale) or LAN without a Cloudflare tunnel.\n\n**How it works:**\n- OpenCode runs as its own service, binding only to `localhost`.\n- OpenChamber connects to it via `OPENCODE_HOST` and `--host 0.0.0.0` makes it reachable on your VPN IP.\n- `--foreground` keeps the CLI process alive so systemd can track and restart it.\n\n**`~/.config/systemd/user/opencode.service`**\n```ini\n[Unit]\nDescription=OpenCode Server\n\n[Service]\nType=simple\nExecStart=opencode serve --port 4095\nEnvironment=\"PATH=/home/linuxbrew/.linuxbrew/bin:/home/linuxbrew/.linuxbrew/sbin:/home/YOU/.local/bin:/home/YOU/.npm-global/bin:/usr/local/bin:/usr/bin:/bin\"\nEnvironment=SSH_AUTH_SOCK=%t/ssh-agent.socket\nRestart=on-failure\nRestartSec=5\n\n[Install]\nWantedBy=default.target\n```\n\n\u003e **Why set `PATH` and `SSH_AUTH_SOCK`?**\n\u003e systemd user services start with a minimal environment — no shell profile is sourced.\n\u003e Without an explicit `PATH`, OpenCode won't find tools installed via Homebrew, npm, or `~/.local/bin`.\n\u003e Without `SSH_AUTH_SOCK`, git operations over SSH (push, pull, clone) will fail because the agent socket isn't inherited.\n\u003e Adjust the `PATH` to match your own tool installation paths.\n\u003e `%t` expands to `$XDG_RUNTIME_DIR` (e.g. `/run/user/1000`), where most SSH agents write their socket.\n\n**`~/.config/systemd/user/openchamber.service`**\n```ini\n[Unit]\nDescription=OpenChamber Web Server\nAfter=opencode.service\n\n[Service]\nType=simple\nExecStart=openchamber serve --port 3000 --host 0.0.0.0 --ui-password your-password --foreground\nEnvironment=\"OPENCODE_HOST=http://localhost:4095\"\nEnvironment=\"OPENCODE_SKIP_START=true\"\nRestart=on-failure\nRestartSec=5\n\n[Install]\nWantedBy=default.target\n```\n\n```bash\nsystemctl --user daemon-reload\nsystemctl --user enable --now opencode openchamber\n```\n\nOpenChamber will be reachable at `http://\u003cyour-vpn-hostname\u003e:3000` from any device on your VPN.\n\n\u003e **Note:** `--host 0.0.0.0` is required to listen on all interfaces. The default\n\u003e bind address is `127.0.0.1` (localhost only). Use `--host \u003cip\u003e` or\n\u003e `OPENCHAMBER_HOST=\u003cip\u003e` to bind to a specific interface instead.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003eDocker\u003c/summary\u003e\n\n```bash\ndocker compose up -d\n```\n\nAvailable at `http://localhost:3000`.\n\n**UI Password:**\n```yaml\nenvironment:\n  UI_PASSWORD: your_secure_password\n```\n\n**Cloudflare Tunnel (optional):**\n```yaml\nenvironment:\n  OPENCHAMBER_TUNNEL_MODE: quick # quick | managed-remote | managed-local\n  OPENCHAMBER_TUNNEL_PROVIDER: cloudflare\n```\n\nFor `managed-remote` mode, provide:\n\n```yaml\nenvironment:\n  OPENCHAMBER_TUNNEL_MODE: managed-remote\n  OPENCHAMBER_TUNNEL_HOSTNAME: app.example.com\n  OPENCHAMBER_TUNNEL_TOKEN: \u003ctoken\u003e\n```\n\nFor `managed-local` mode, optionally provide:\n\n```yaml\nenvironment:\n  OPENCHAMBER_TUNNEL_MODE: managed-local\n  OPENCHAMBER_TUNNEL_CONFIG: /home/openchamber/.cloudflared/config.yml\n```\n\nManaged-local path note: `OPENCHAMBER_TUNNEL_CONFIG` must point to a path inside the container user home (`/home/openchamber/...`). If your Cloudflare config references a credentials JSON file, that file path must also be accessible inside the container (mount with `volumes`).\n\n### Tunnel behavior notes\n\n- OpenChamber supports one active tunnel per running instance (port).\n- Starting a tunnel with a different mode/provider on the same instance replaces the current tunnel.\n- Replacing or stopping a tunnel revokes existing connect links and invalidates remote tunnel sessions for that instance.\n- Connect links are one-time tokens; generating a new link revokes the previous unused link.\n\n**Data Directory Permission Note:** The `data/` directory is mounted into the container for persistent storage (config, sessions, SSH keys, workspaces). Before running, ensure the directory exists and has proper permissions:\n\n```bash\nmkdir -p data/openchamber data/opencode/share data/opencode/config data/ssh\nchown -R 1000:1000 data/\n```\n\n**SSH/Git:** If git push/pull fails, run `ssh -T git@github.com` in terminal.\n\n\u003c/details\u003e\n\n\n## Features\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eChat \u0026 Interaction\u003c/strong\u003e\u003c/summary\u003e\n\n- Branchable chat timeline with `/undo`, `/redo`, and one-click forks from any turn\n- Multi-agent runs from one prompt with isolated worktrees for safe side-by-side comparisons\n- Voice mode with speech input and read-aloud responses for hands-free workflows\n- Plan/Build mode with a dedicated plan view for drafting and iterating steps\n- Inline comment drafts on diffs, files, and plans - send feedback back to the agent\n- Shell mode via leading `!` with inline output\n- Share messages as images\n- Mermaid diagrams render inline with copy/download actions\n- Smart tool UIs for diffs, file operations, permissions, and task progress\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eGit \u0026 GitHub\u003c/strong\u003e\u003c/summary\u003e\n\n- Full Git sidebar with staging, commits, push/pull, branch management, and rebase/merge flows\n- PR creation with AI-generated descriptions, status checks, and merge actions\n- Start sessions from GitHub issues and pull requests with context baked in\n- Multi-remote push and fork-aware PR creation\n- Worktree integration: isolated sessions per branch, merge back with conflict handling\n- Git identities, gitmoji support, and multi-account GitHub auth\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eFiles, Diff \u0026 Terminal\u003c/strong\u003e\u003c/summary\u003e\n\n- Workspace file browser with inline editing, syntax highlighting, and markdown preview\n- Beautiful diff viewer with stacked/inline modes, lazy loading for large changesets\n- Integrated terminal with per-directory sessions, tabbed interface, and stable heavy-output performance\n- Clickable file paths in messages - jump to exact line locations\n- File-type icons across all views for faster visual scanning\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eWeb / PWA\u003c/strong\u003e\u003c/summary\u003e\n\n- Cloudflare tunnel with quick, managed-remote, and managed-local modes, secure one-time connect links, and QR onboarding\n- Mobile-first: optimized chat controls, keyboard-safe layouts, drag-to-reorder projects\n- Background notifications and cross-tab session tracking\n- Self-update + restart flow that keeps your server settings intact\n- Installable as PWA with project-aware naming\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eDesktop (macOS)\u003c/strong\u003e\u003c/summary\u003e\n\n- Connect to remote OpenChamber instances over SSH with dedicated lifecycle flows\n- Project Actions: run dev servers, SSH port forwarding, open remote URLs locally\n- Multi-window support for parallel project workflows\n- \"Open In\" shortcuts for Finder, Terminal, and your preferred editor\n- Fast switching between local and remote instances\n- Native macOS menu, deep-link handling, and polished startup\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eVS Code Extension\u003c/strong\u003e\u003c/summary\u003e\n\n- Editor-native: open files from tool output, keep sessions beside your code\n- Agent Manager for parallel multi-model runs from a single prompt\n- Right-click actions: add context, explain selections, improve code in-place\n- Session editor panel, responsive layout, and theme mapping to your editor\n- Edit-style tool results open directly in focused diff views\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eCustomization\u003c/strong\u003e\u003c/summary\u003e\n\n- 18+ built-in themes with light/dark variants\n- Custom themes via JSON files in `~/.config/openchamber/themes/` - hot reload, no restart\n- Configurable keyboard shortcuts for chat, panels, and services\n- Font size, spacing, corner radius, and layout controls\n- Customizable project icons with upload and automatic favicon discovery\n- Skills catalog and local skill management for reusable automation\n\n[Read the Guide: Custom Themes](docs/CUSTOM_THEMES.md)\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eContext \u0026 Productivity\u003c/strong\u003e\u003c/summary\u003e\n\n- Token usage, cost breakdowns, and raw message inspection panel\n- Usage quota tracking across multiple providers with pace/prediction indicators\n- Favorite model cycling via keyboard shortcuts\n- Session folders and subfolders with drag-to-reorder\n- Persistent project notes and todos per project\n- Draft persistence per session with expanded focus mode for longer prompts\n\n\u003c/details\u003e\n\n## Roadmap\n\nActive development. Here's what's being worked on or planned:\n\n- Windows and Linux desktop apps\n- Mobile app with remote instance and laptop connectivity\n- More built-in tunneling options\n- Kanban board for multi-agent management - keeping the human in the loop and in control\n- Custom OpenCode plugins/tools built-in catalog\n- Linear integration\n- Built-in browser for running dev apps with agent integration\n\n## Acknowledgments\n\nIndependent project, not affiliated with the OpenCode team.\n\n**Special thanks to:**\n\n- [OpenCode](https://opencode.ai) - For the excellent API and extensible architecture.\n- [Flexoki](https://github.com/kepano/flexoki) - Beautiful color scheme by [Steph Ango](https://stephango.com/flexoki).\n- [Pierre](https://pierrejs-docs.vercel.app/) - Fast, beautiful diff viewer with syntax highlighting.\n- [Tauri](https://github.com/tauri-apps/tauri) - Desktop application framework.\n- [Ghostty-web](https://github.com/coder/ghostty-web) - Great implementation of a Ghostty web renderer.\n- [David Hill](https://x.com/iamdavidhill) - Who inspired me to release this without [overthinking](https://x.com/iamdavidhill/status/1993648326450020746).\n- [My wife](https://github.com/yulia-ivashko), who - with zero AI background - sat down with the app for the first time and built the firework celebration that plays on every successful push.\n- Every contributor who shaped this project with their PRs, ideas, and attention to detail.\n\n## Contributing\n\nSee [CONTRIBUTING.md](./CONTRIBUTING.md) for development setup and guidelines.\n\nDocs source lives in [`packages/docs`](packages/docs/README.md).\n\n## License\n\nMIT\n","funding_links":["https://ko-fi.com/G2G41SAWNS"],"categories":["TypeScript","ai"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenchamber%2Fopenchamber","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fopenchamber%2Fopenchamber","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenchamber%2Fopenchamber/lists"}