2026-01-15 00:49:58 +02:00
# <picture><source media="(prefers-color-scheme: dark)" srcset="https://github.com/btriapitsyn/openchamber/raw/HEAD/docs/references/badges/openchamber-logo-dark.svg"><img src="https://github.com/btriapitsyn/openchamber/raw/HEAD/docs/references/badges/openchamber-logo-light.svg" width="32" height="32" align="absmiddle" /></picture> @openchamber/web
[](https://github.com/btriapitsyn/openchamber/stargazers)
[](https://github.com/btriapitsyn/openchamber/releases/latest)
[](https://discord.gg/ZYRSdnwwKA)
2025-12-07 19:32:53 +02:00
2026-03-05 03:07:26 +02:00
Run [OpenCode ](https://opencode.ai ) in your browser. Install the CLI, open `localhost:3000` , done. Works on desktop browsers, tablets, and phones as a PWA.
2025-12-21 16:21:10 +02:00
2026-03-05 03:07:26 +02:00
Full project overview, screenshots, and all features: [github.com/btriapitsyn/openchamber ](https://github.com/btriapitsyn/openchamber )
2025-12-21 16:21:10 +02:00
2026-03-05 03:07:26 +02:00
## Install
2025-12-07 19:32:53 +02:00
```bash
2025-12-19 19:57:18 +02:00
curl -fsSL https://raw.githubusercontent.com/btriapitsyn/openchamber/main/scripts/install.sh | bash
```
2026-03-05 03:07:26 +02:00
Or install manually: `bun add -g @openchamber/web` (or npm, pnpm, yarn).
> **Prerequisites:** [OpenCode CLI](https://opencode.ai) installed, Node.js 20+.
2025-12-19 19:57:18 +02:00
## Usage
```bash
2026-03-12 19:40:22 +02:00
openchamber # Start on port 3000
openchamber --port 8080 # Custom port
openchamber --ui-password secret # Password-protect UI
openchamber tunnel help # Tunnel lifecycle commands
openchamber tunnel providers # Show provider capabilities
openchamber tunnel profile add --provider cloudflare --mode managed-remote --name prod-main --hostname app.example.com --token <token>
openchamber tunnel start --profile prod-main
openchamber tunnel start --provider cloudflare --mode quick --qr
openchamber tunnel start --provider cloudflare --mode managed-local --config ~/.cloudflared/config.yml
openchamber tunnel status --all # Show tunnel state across instances
openchamber tunnel stop --port 3000 # Stop tunnel only (server stays running)
openchamber logs # Follow latest instance logs
OPENCODE_PORT = 4096 OPENCODE_SKIP_START = true openchamber # Connect to external OpenCode server
OPENCODE_HOST = https://myhost:4096 OPENCODE_SKIP_START = true openchamber # Connect via custom host/HTTPS
openchamber stop # Stop server
openchamber update # Update to latest version
2026-03-05 03:07:26 +02:00
```
2026-03-12 19:40:22 +02:00
### Tunnel behavior notes
2026-03-05 03:07:26 +02:00
2026-03-12 19:40:22 +02:00
- One active tunnel per running OpenChamber instance (port).
- Starting a different tunnel mode/provider on the same instance replaces the active tunnel.
- Replacing or stopping a tunnel revokes existing connect links and invalidates remote tunnel sessions.
- Connect links are one-time tokens; generating a new link revokes the previous unused link.
2026-03-03 18:35:03 +02:00
2026-03-05 03:07:26 +02:00
**Optional env vars:**
```yaml
environment :
UI_PASSWORD : your_secure_password
2026-03-15 00:12:11 +02:00
OPENCHAMBER_TUNNEL_MODE : quick # quick | managed-remote | managed-local
OPENCHAMBER_TUNNEL_PROVIDER : cloudflare
2026-03-05 03:07:26 +02:00
```
2026-01-22 08:32:04 -08:00
2026-03-15 00:12:11 +02:00
For `managed-remote` mode, also set:
```yaml
environment :
OPENCHAMBER_TUNNEL_MODE : managed-remote
OPENCHAMBER_TUNNEL_HOSTNAME : app.example.com
OPENCHAMBER_TUNNEL_TOKEN : <token>
```
For `managed-local` mode, you can set:
```yaml
environment :
OPENCHAMBER_TUNNEL_MODE : managed-local
OPENCHAMBER_TUNNEL_CONFIG : /home/openchamber/.cloudflared/config.yml
```
Managed-local path note: `OPENCHAMBER_TUNNEL_CONFIG` must use a container path under `/home/openchamber/...` . If the config file references `credentials-file` , ensure that JSON path is also mounted and reachable inside the container.
2026-03-05 03:07:26 +02:00
**Data directory:** mount `data/` for persistent storage. Ensure permissions:
```bash
mkdir -p data/openchamber data/opencode/share data/opencode/config data/ssh
chown -R 1000:1000 data/
```
2026-01-22 08:32:04 -08:00
2026-03-05 03:07:26 +02:00
</details>
2025-12-07 19:32:53 +02:00
2026-03-05 03:07:26 +02:00
<details>
<summary>Background & daemon mode</summary>
2025-12-07 19:32:53 +02:00
2026-03-05 03:07:26 +02:00
```bash
2026-03-15 00:12:11 +02:00
openchamber # Runs in background by default
2026-03-05 03:07:26 +02:00
openchamber stop # Stop background server
```
2025-12-07 19:32:53 +02:00
2026-03-05 03:07:26 +02:00
</details>
2025-12-21 16:21:10 +02:00
2026-03-05 03:07:26 +02:00
## What makes the web version special
2025-12-21 16:21:10 +02:00
2026-03-05 11:20:39 +02:00
- **Remote access** - Cloudflare tunnel with QR onboarding. Scan from your phone, start coding.
- **Mobile-first PWA** - optimized chat controls, keyboard-safe layouts, drag-to-reorder projects
- **Background notifications** - know when your agent finishes, even from another tab
- **Self-update** - update and restart from the UI, server settings stay intact
- **Cross-tab tracking** - session activity stays in sync across browser tabs
2025-12-21 16:21:10 +02:00
2026-03-15 00:12:11 +02:00
- Cloudflare tunnel access with quick, managed-remote, and managed-local modes
2026-03-12 19:40:22 +02:00
- One-scan onboarding with tunnel QR + password URL helpers
- Mobile-first experience: optimized chat controls, keyboard-safe layouts, and attachment-friendly UI
- Background notifications plus reliable cross-tab session activity tracking
- Built-in self-update + restart flow that keeps your server settings intact
2025-12-07 19:32:53 +02:00
## License
MIT