* feat: added themes system * feat: smart sidebar auto-hide for files/diff tabs + lower files sidebar threshold * feat: added Checkbox component and update theming - Add reusable Checkbox component for toggles across UI - Replace several inputs with Checkbox in settings and commands panels - Add DiffIcon and apply surface/border theming to key UI areas * feat: Add convert-vscode-theme.cjs to convert VS Code themes to OpenChamber format * refactor: remove unused permission logic from ChatInput - Remove unused permission rules parsing logic from ChatInput - Memoize renderTheme in DiffWorkerProvider to avoid unnecessary recalculations - Remove forceOpaque helper in vscode theme adapter * fix: guard VSCode theme loading in MarkdownRenderer * feat: add custom user themes loading and reload - Load user themes from ~/.config/openchamber/themes at runtime - Expose /api/config/themes to fetch custom themes - Allow theme reloading from Settings → Theme → Reload themes in the UI
170 lines
13 KiB
Markdown
170 lines
13 KiB
Markdown
# <picture><source media="(prefers-color-scheme: dark)" srcset="docs/references/badges/openchamber-logo-dark.svg"><img src="docs/references/badges/openchamber-logo-light.svg" width="32" height="32" align="absmiddle" /></picture> OpenChamber
|
|
|
|
[](https://github.com/btriapitsyn/openchamber/stargazers)
|
|
[](https://github.com/btriapitsyn/openchamber/network/members)
|
|
[](https://github.com/btriapitsyn/openchamber/releases/latest)
|
|
[](https://opencode.ai)
|
|
[](https://zread.ai/btriapitsyn/openchamber)
|
|
[](https://discord.gg/ZYRSdnwwKA)
|
|
[](https://ko-fi.com/G2G41SAWNS)
|
|
|
|
Web and desktop interface for the [OpenCode](https://opencode.ai) AI coding agent. Works alongside the OpenCode TUI.
|
|
|
|
The OpenCode team is actively working on their own desktop app. I still decided to release this project as a fan-made alternative.
|
|
|
|
It 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.
|
|
|
|
The 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.
|
|
|
|

|
|
|
|
<details>
|
|
<summary>More screenshots</summary>
|
|
|
|

|
|

|
|

|
|

|
|

|
|
|
|
<p>
|
|
<img src="docs/references/pwa_chat_example.png" width="45%" alt="PWA Chat">
|
|
<img src="docs/references/pwa_terminal_example.png" width="45%" alt="PWA Terminal">
|
|
</p>
|
|
|
|
</details>
|
|
|
|
## Why use OpenChamber?
|
|
|
|
- **Cross-device continuity**: Start in TUI, continue on tablet/phone, return to terminal - same session
|
|
- **Remote access**: Use OpenCode from anywhere via browser
|
|
- **Familiarity**: A visual alternative for developers who prefer GUI workflows
|
|
|
|
## Features
|
|
|
|
### Core (all apps versions)
|
|
|
|
- Integrated terminal
|
|
- Git operations with identity management and AI commit message generation
|
|
- Smart tool visualization (inline diffs, file trees, results highlighting)
|
|
- Rich permission cards with syntax-highlighted operation previews
|
|
- Per-agent permission modes (ask/allow/full) per session
|
|
- Multi-agent runs from a single prompt (isolated worktrees; Web/PWA + Desktop)
|
|
- Branchable conversations: start a new session from any assistant response
|
|
- Task tracker UI with live progress and tool summaries
|
|
- Model selection UX: favorites, recents, and configurable tool output density
|
|
- UI scaling controls (font size and spacing)
|
|
- Session auto-cleanup with configurable retention
|
|
- Memory optimizations with LRU eviction
|
|
|
|
### Web / PWA
|
|
|
|
- Mobile-first UI with gestures and optimized terminal controls
|
|
- Self-serve web updates (no CLI required)
|
|
- Update and restart keeps previous server settings (port/password)
|
|
- Cloudflare Quick Tunnel support for easy remote access (`--try-cf-tunnel`)
|
|
- QR code generation for quick mobile access (`--tunnel-qr`)
|
|
- Auto-login URL with embedded password (`--tunnel-password-url`)
|
|
|
|
### Desktop (macOS)
|
|
|
|
- Native macOS menu bar integration with app actions
|
|
- First-launch directory picker to minimize permission prompts
|
|
|
|
### VS Code Extension
|
|
|
|
- Editor-integrated file picker and click-to-open from tool output
|
|
- In-extension Settings access and theme mapping
|
|
|
|
### GitHub Actions (Cloud Usage)
|
|
|
|
Run OpenChamber remotely using GitHub Actions. No local computer required.
|
|
|
|
* **Zero Setup:** Runs on GitHub's infrastructure.
|
|
* **Persistence:** Optional; enabled when `OPENCODE_SERVER_PASSWORD` is set (encrypted).
|
|
* **Remote Access:** Access via secure tunnel (Cloudflare/Ngrok).
|
|
|
|
[**Read the Guide: OpenChamber for Actions**](docs/OPENCHAMBER_FOR_ACTIONS.md)
|
|
|
|
### Custom Themes
|
|
|
|
Create your own color schemes by dropping JSON files into `~/.config/openchamber/themes/`. Hot reload supported — no restart needed.
|
|
|
|
[**Read the Guide: Custom Themes**](docs/CUSTOM_THEMES.md)
|
|
|
|
## Installation
|
|
|
|
### VS Code Extension
|
|
|
|
Install 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.
|
|
|
|
### CLI (Web Server)
|
|
|
|
```bash
|
|
# Quick install (auto-detects your package manager)
|
|
curl -fsSL https://raw.githubusercontent.com/btriapitsyn/openchamber/main/scripts/install.sh | bash
|
|
|
|
# Or install manually
|
|
bun add -g @openchamber/web # or npm, pnpm, yarn
|
|
```
|
|
|
|
```bash
|
|
openchamber # Start on port 3000
|
|
openchamber --port 8080 # Custom port
|
|
openchamber --daemon # Background mode
|
|
openchamber --ui-password secret # Password-protect UI
|
|
openchamber --try-cf-tunnel # Create a Cloudflare Quick Tunnel for remote access
|
|
openchamber --try-cf-tunnel --tunnel-qr # Show QR code for easy mobile access
|
|
openchamber --try-cf-tunnel --tunnel-password-url # Include password in URL for auto-login
|
|
OPENCODE_PORT=4096 OPENCODE_SKIP_START=true openchamber # Connect to external OpenCode server
|
|
openchamber stop # Stop server
|
|
openchamber update # Update to latest version
|
|
```
|
|
|
|
### Desktop App (macOS)
|
|
|
|
Download from [Releases](https://github.com/btriapitsyn/openchamber/releases).
|
|
|
|
## Prerequisites
|
|
|
|
- [OpenCode CLI](https://opencode.ai) installed
|
|
- Node.js 20+ (for web version)
|
|
- [cloudflared](https://github.com/cloudflare/cloudflared/releases) (required for `--try-cf-tunnel`)
|
|
|
|
See [CONTRIBUTING.md](./CONTRIBUTING.md) for guidelines.
|
|
|
|
## Tech Stack
|
|
|
|
### Frontend
|
|

|
|

|
|

|
|

|
|
|
|
### State & UI
|
|

|
|

|
|
|
|
### Backend & Desktop
|
|

|
|

|
|

|
|
|
|
## Acknowledgments
|
|
|
|
Independent project, not affiliated with OpenCode team.
|
|
|
|
**Special thanks to:**
|
|
|
|
- [OpenCode](https://opencode.ai) - For the excellent API and extensible architecture.
|
|
- [Flexoki](https://github.com/kepano/flexoki) - Beautiful color scheme by [Steph Ango](https://stephango.com/flexoki).
|
|
- [Pierre](https://pierrejs-docs.vercel.app/) - Fast, beautiful diff viewer with syntax highlighting.
|
|
- [Tauri](https://github.com/tauri-apps/tauri) - Desktop application framework.
|
|
- [Ghossty-web](https://github.com/coder/ghostty-web) - for a great implementeation of a Ghostty web renderer.
|
|
- [David Hill](https://x.com/iamdavidhill) - who inspired me to release this without [overthinking](https://x.com/iamdavidhill/status/1993648326450020746?s=20).
|
|
- My wife, who created a beautiful firework animation for the app while testing it for the first time.
|
|
|
|
## License
|
|
|
|
MIT
|