{"id":34732855,"url":"https://github.com/btriapitsyn/openchamber","last_synced_at":"2026-03-04T03:00:56.734Z","repository":{"id":328949344,"uuid":"1054790989","full_name":"btriapitsyn/openchamber","owner":"btriapitsyn","description":"Desktop and web interface for OpenCode AI agent","archived":false,"fork":false,"pushed_at":"2026-03-02T00:46:10.000Z","size":25337,"stargazers_count":1194,"open_issues_count":80,"forks_count":153,"subscribers_count":10,"default_branch":"main","last_synced_at":"2026-03-02T03:44:34.589Z","etag":null,"topics":["ai","opencode","opencode-ai","opencode-app","opencode-ui","opencode-web"],"latest_commit_sha":null,"homepage":"","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/btriapitsyn.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":null,"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-03-02T03:21:21.000Z","dependencies_parsed_at":"2026-01-04T03:08:38.828Z","dependency_job_id":null,"html_url":"https://github.com/btriapitsyn/openchamber","commit_stats":null,"previous_names":["btriapitsyn/openchamber"],"tags_count":78,"template":false,"template_full_name":null,"purl":"pkg:github/btriapitsyn/openchamber","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btriapitsyn%2Fopenchamber","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btriapitsyn%2Fopenchamber/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btriapitsyn%2Fopenchamber/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btriapitsyn%2Fopenchamber/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/btriapitsyn","download_url":"https://codeload.github.com/btriapitsyn/openchamber/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btriapitsyn%2Fopenchamber/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30070479,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-04T01:03:42.280Z","status":"online","status_checked_at":"2026-03-04T02:00:07.464Z","response_time":59,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":"2025-12-25T03:17:03.809Z","updated_at":"2026-03-04T03:00:56.677Z","avatar_url":"https://github.com/btriapitsyn.png","language":"TypeScript","funding_links":["https://ko-fi.com/G2G41SAWNS"],"categories":["ai","Uncategorized"],"sub_categories":["Uncategorized"],"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 forks](https://img.shields.io/github/forks/btriapitsyn/openchamber?style=flat\u0026logo=data%3Aimage%2Fsvg%2Bxml%3Bbase64%2CPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiIgZmlsbD0iI2YxZWNlYyIgdmlld0JveD0iMCAwIDI1NiAyNTYiPjxwYXRoIGQ9Ik04OCw2NEEyNCwyNCwwLDEsMSw2NCw0MCwyNCwyNCwwLDAsMSw4OCw2NFpNMTkyLDQwYTI0LDI0LDAsMSwwLDI0LDI0QTI0LDI0LDAsMCwwLDE5Miw0MFoiIG9wYWNpdHk9IjAuMiI%2BPC9wYXRoPjxwYXRoIGQ9Ik0yMjQsNjRhMzIsMzIsMCwxLDAtNDAsMzF2MTdhOCw4LDAsMCwxLTgsOEg4MGE4LDgsMCwwLDEtOC04Vjk1YTMyLDMyLDAsMSwwLTE2LDB2MTdhMjQsMjQsMCwwLDAsMjQsMjRoNDB2MjVhMzIsMzIsMCwxLDAsMTYsMFYxMzZoNDBhMjQsMjQsMCwwLDAsMjQtMjRWOTVBMzIuMDYsMzIuMDYsMCwwLDAsMjI0LDY0Wk00OCw2NEExNiwxNiwwLDEsMSw2NCw4MCwxNiwxNiwwLDAsMSw0OCw2NFptOTYsMTI4YTE2LDE2LDAsMSwxLTE2LTE2QTE2LDE2LDAsMCwxLDE0NCwxOTJaTTE5Miw4MGExNiwxNiwwLDEsMSwxNi0xNkExNiwxNiwwLDAsMSwxOTIsODBaIj48L3BhdGg%2BPC9zdmc%2B\u0026logoColor=FFFCF0\u0026labelColor=100F0F\u0026color=BC5215)](https://github.com/btriapitsyn/openchamber/network/members)\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[![Ask Zread](https://img.shields.io/badge/Ask_Zread-_.svg?style=flat\u0026labelColor=100F0F\u0026color=3AA99F\u0026logo=data%3Aimage%2Fsvg%2Bxml%3Bbase64%2CPHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTQuOTYxNTYgMS42MDAxSDIuMjQxNTZDMS44ODgxIDEuNjAwMSAxLjYwMTU2IDEuODg2NjQgMS42MDE1NiAyLjI0MDFWNC45NjAxQzEuNjAxNTYgNS4zMTM1NiAxLjg4ODEgNS42MDAxIDIuMjQxNTYgNS42MDAxSDQuOTYxNTZDNS4zMTUwMiA1LjYwMDEgNS42MDE1NiA1LjMxMzU2IDUuNjAxNTYgNC45NjAxVjIuMjQwMUM1LjYwMTU2IDEuODg2NjQgNS4zMTUwMiAxLjYwMDEgNC45NjE1NiAxLjYwMDFaIiBmaWxsPSIjZmZmIi8%2BCjxwYXRoIGQ9Ik00Ljk2MTU2IDEwLjM5OTlIMi4yNDE1NkMxLjg4ODEgMTAuMzk5OSAxLjYwMTU2IDEwLjY4NjQgMS42MDE1NiAxMS4wMzk5VjEzLjc1OTlDMS42MDE1NiAxNC4xMTM0IDEuODg4MSAxNC4zOTk5IDIuMjQxNTYgMTQuMzk5OUg0Ljk2MTU2QzUuMzE1MDIgMTQuMzk5OSA1LjYwMTU2IDE0LjExMzQgNS42MDE1NiAxMy43NTk5VjExLjAzOTlDNS42MDE1NiAxMC42ODY0IDUuMzE1MDIgMTAuMzk5OSA0Ljk2MTU2IDEwLjM5OTlaIiBmaWxsPSIjZmZmIi8%2BCjxwYXRoIGQ9Ik0xMy43NTg0IDEuNjAwMUgxMS4wMzg0QzEwLjY4NSAxLjYwMDEgMTAuMzk4NCAxLjg4NjY0IDEwLjM5ODQgMi4yNDAxVjQuOTYwMUMxMC4zOTg0IDUuMzEzNTYgMTAuNjg1IDUuNjAwMSAxMS4wMzg0IDUuNjAwMUgxMy43NTg0QzE0LjExMTkgNS42MDAxIDE0LjM5ODQgNS4zMTM1NiAxNC4zOTg0IDQuOTYwMVYyLjI0MDFDMTQuMzk4NCAxLjg4NjY0IDE0LjExMTkgMS42MDAxIDEzLjc1ODQgMS42MDAxWiIgZmlsbD0iI2ZmZiIvPgo8cGF0aCBkPSJNNCAxMkwxMiA0TDQgMTJaIiBmaWxsPSIjZmZmIi8%2BCjxwYXRoIGQ9Ik00IDEyTDEyIDQiIHN0cm9rZT0iI2ZmZiIgc3Ryb2tlLXdpZHRoPSIxLjUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPgo8L3N2Zz4K\u0026logoColor=FFFCF0)](https://zread.ai/btriapitsyn/openchamber)\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\nWeb and desktop interface for the [OpenCode](https://opencode.ai) AI coding agent. Works alongside the OpenCode TUI.\n\nThe OpenCode team is actively working on their own desktop app. I still decided to release this project as a fan-made alternative.\n\nIt was entirely built with OpenCode tool - first with the TUI version, then with the first usable version of OpenChamber, which I then used to build the rest.\n\nThe whole project was built entirely with AI coding agents under my supervision. It started as a hobby project and proof of concept that AI agents can create genuinely usable software.\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_terminal_example.png\" width=\"45%\" alt=\"PWA Terminal\"\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- Cloudflare Quick Tunnel for instant remote access (`--try-cf-tunnel`)\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\nCreate your own color schemes by dropping JSON files into `~/.config/openchamber/themes/`. Hot reload supported — no restart needed.\n\n[**Read the Guide: Custom Themes**](docs/CUSTOM_THEMES.md)\n\n## Installation\n\n### VS Code Extension\n\nInstall from [VS Code Marketplace](https://marketplace.visualstudio.com/items?itemName=fedaykindev.openchamber) / [Open VSX Registry](https://open-vsx.org/extension/FedaykinDev/openchamber) or search \"OpenChamber\" in Extensions.\n\n### CLI (Web Server)\n\n```bash\n# Quick install (auto-detects your package manager)\ncurl -fsSL https://raw.githubusercontent.com/btriapitsyn/openchamber/main/scripts/install.sh | bash\n\n# Or install manually\nbun add -g @openchamber/web    # or npm, pnpm, yarn\n```\n\n```bash\nopenchamber                          # Start on port 3000\nopenchamber --port 8080              # Custom port\nopenchamber --daemon                 # Background mode\nopenchamber --ui-password secret     # Password-protect UI\nopenchamber --try-cf-tunnel          # Create a Cloudflare Quick Tunnel for remote access\nopenchamber --try-cf-tunnel --tunnel-qr              # Show QR code for easy mobile access\nopenchamber --try-cf-tunnel --tunnel-password-url   # Include password in URL for auto-login\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 version\n```\n\n### Desktop App (macOS)\n\nDownload from [Releases](https://github.com/btriapitsyn/openchamber/releases).\n\n### Docker Compose\n\n```bash\ndocker compose up -d\n```\n\nThe service will be available at `http://localhost:3000`.\n\n**UI Password (optional):** To enable password-protected access, uncomment and set the `UI_PASSWORD` environment variable in `docker-compose.yml`:\n\n```yaml\nenvironment:\n  UI_PASSWORD: your_secure_password\n```\n\nOr pass it via command line:\n\n```bash\nUI_PASSWORD=secret docker compose up -d\n```\n\n**Cloudflare Tunnel (optional):** To enable Cloudflare Quick Tunnel for remote access, set the `CF_TUNNEL` environment variable:\n\n```yaml\nenvironment:\n  CF_TUNNEL: \"true\" # Options: true, qr, password, full\n```\n\n| Value      | Description                     |\n| ---------- | ------------------------------- |\n| `true`     | Enable tunnel only              |\n| `qr`       | Enable tunnel + QR code         |\n| `password` | Enable tunnel + password in URL |\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\n# Create data directories with correct ownership\nmkdir -p data/openchamber data/opencode/share data/opencode/config data/ssh\n\n# Fix permissions (replace $USER with your username)\nchown -R 1000:1000 data/\n```\n\nWithout proper permissions, the container may fail to start or encounter permission denied errors when writing to these directories.\n\n**SSH/Git Authentication Note:** If git pull/push fails. Run `ssh -T git@github.com` in terminal.\n\n## Prerequisites\n\n- [OpenCode CLI](https://opencode.ai) installed\n- Node.js 20+ (for web version)\n- [cloudflared](https://github.com/cloudflare/cloudflared/releases) (required for `--try-cf-tunnel`)\n\nSee [CONTRIBUTING.md](./CONTRIBUTING.md) for guidelines.\n\n## Tech Stack\n\n### Frontend\n\n![React](https://img.shields.io/badge/React-19-61DAFB?style=flat\u0026logo=react\u0026logoColor=white)\n![TypeScript](https://img.shields.io/badge/TypeScript-5.0+-3178C6?style=flat\u0026logo=typescript\u0026logoColor=white)\n![Vite](https://img.shields.io/badge/Vite-7-646CFF?style=flat\u0026logo=vite\u0026logoColor=white)\n![Tailwind CSS](https://img.shields.io/badge/Tailwind_CSS-v4-06B6D4?style=flat\u0026logo=tailwindcss\u0026logoColor=white)\n\n### State \u0026 UI\n\n![Zustand](https://img.shields.io/badge/Zustand-State_Management-FF6B6B?style=flat)\n![Radix UI](https://img.shields.io/badge/Radix_UI-Components-8B5CF6?style=flat\u0026logo=radixui\u0026logoColor=white)\n\n### Backend \u0026 Desktop\n\n![Express](https://img.shields.io/badge/Express.js-Server-000000?style=flat\u0026logo=express\u0026logoColor=white)\n![Tauri](https://img.shields.io/badge/Tauri-Desktop-FFC131?style=flat\u0026logo=tauri\u0026logoColor=white)\n![OpenCode SDK](https://img.shields.io/badge/OpenCode-SDK-4F46E5?style=flat)\n\n## Acknowledgments\n\nIndependent project, not affiliated with 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- [Ghossty-web](https://github.com/coder/ghostty-web) - for a great implementeation 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?s=20).\n- My wife, who created a beautiful firework animation for the app while testing it for the first time.\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbtriapitsyn%2Fopenchamber","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbtriapitsyn%2Fopenchamber","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbtriapitsyn%2Fopenchamber/lists"}