MCPcopy Index your code
hub / github.com/openchamber/openchamber

github.com/openchamber/openchamber @v1.13.9 sqlite

repository ↗ · DeepWiki ↗ · release v1.13.9 ↗
9,278 symbols 28,031 edges 1,186 files 141 documented · 2%
README

OpenChamber

GitHub stars GitHub release Created with OpenCode Discord Support the project

OpenCode, everywhere. Desktop. Browser. Phone.

A rich interface for OpenCode. Review diffs, manage agents, run dev servers, and keep the big picture while your AI codes.

OpenChamber Chat

More screenshots

Tool Output Settings Diff View VS Code Extension

PWA Chat PWA Diff

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 app versions)

  • Branchable chat timeline with /undo, /redo, and one-click forks from earlier turns
  • Smart tool UIs for diffs, file operations, permissions, and long-running task progress
  • Voice mode with speech input and read-aloud responses for hands-free workflows
  • Multi-agent runs from one prompt with isolated worktrees for safe side-by-side comparisons
  • Git workflows in-app: identities, commits, PR creation, checks, and merge actions
  • GitHub-native workflows: start sessions from issues and pull requests with context already attached
  • Plan/Build mode with a dedicated plan view for drafting and iterating implementation steps
  • Inline comment drafts on diffs, files, and plans that can be sent back to the agent
  • Context visibility tools (token/cost breakdowns, raw message inspection, and activity summaries)
  • Integrated terminal with per-directory sessions and stable performance on heavy output
  • Built-in skills catalog and local skill management for reusable automation workflows

Web / PWA

  • Provider-aware tunnel access model with Cloudflare quick, managed-remote, and managed-local modes
  • 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

Desktop (macOS + Windows)

  • Floating Mini Chat: keep a small always-on-top assistant beside your editor, browser, or terminal
  • Multiple native windows for separate projects or sessions
  • Native notifications for task alerts while OpenChamber is hidden
  • One-click open in VS Code, Cursor, Terminal, Finder, Explorer, and more
  • Desktop host switcher for local and remote OpenChamber instances
  • Convenient tunnel management without manual setup
  • Deep-link connections for joining remote OpenChamber from a link
  • SSH remote access with host import, connection management, and port forwarding

VS Code Extension

  • Editor-native workflow: open files directly from tool output and keep sessions beside your code
  • Agent Manager for parallel multi-model runs from a single prompt
  • Right-click actions to add context, explain selections, and improve code in-place
  • In-extension settings, responsive layout, and theme mapping that matches your editor
  • Hardened runtime lifecycle and health checks for faster startup and fewer stuck reconnect states

Custom Themes

  • Use it from anywhere - Cloudflare tunnel with QR code onboarding. Scan, connect, code from your couch.
  • Branchable chat timeline - Undo, redo, fork from any turn. Explore different approaches without losing your place.
  • GitHub-native workflows - Start sessions from issues and PRs with context already attached. Review checks, merge - all in-app.
  • Project Actions - Run dev servers, configure SSH port forwarding, open remote URLs locally. Your project commands, one click away.
  • Connect to remote machines - Desktop app connects to remote OpenChamber instances over SSH, with dedicated lifecycle and UX flows.

Quick Start

Prerequisite: Desktop bundles the matching OpenCode CLI. CLI/Web and VS Code use your installed OpenCode CLI.

Desktop (macOS + Windows)

Download from Releases.

VS Code

Install from Marketplace or search "OpenChamber" in Extensions.

CLI (Web + PWA)

requires Node.js 22+

curl -fsSL https://raw.githubusercontent.com/btriapitsyn/openchamber/main/scripts/install.sh | bash
openchamber --ui-password be-creative-here

Advanced CLI options

openchamber --port 8080              # Custom port
openchamber --lan --port 3000        # Listen on LAN (0.0.0.0)
openchamber --ui-password secret     # Password-protect UI
openchamber startup enable           # Start at login as a native service
OPENCHAMBER_UI_PASSWORD=secret openchamber startup enable # Save service password env
openchamber startup status           # Show startup service status
openchamber startup disable          # Remove startup service
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 connect-url --port 3000  # Add this server to OpenChamber Desktop
openchamber connect-url --server http://host:3000 --qr
openchamber connect-url --port 3000 --qr
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

startup enable snapshots your current environment into the native service so startup behaves like you launched openchamber from the same shell. This preserves provider tokens, PATH, SSH agent settings, and other CLI auth/config env vars. Use --no-env-snapshot if you want a minimal service env.

Connect to an existing OpenCode server:

OPENCODE_PORT=4096 OPENCODE_SKIP_START=true openchamber
OPENCODE_HOST=https://myhost:4096 OPENCODE_SKIP_START=true openchamber

Bind managed OpenCode server to all interfaces (use only on trusted networks):

OPENCHAMBER_OPENCODE_HOSTNAME=0.0.0.0 openchamber --port 3000

Expose OpenChamber itself on your LAN:

openchamber --lan --port 3000 --ui-password secret

Add this server to OpenChamber Desktop or another OpenChamber app:

openchamber connect-url --port 3000 --qr

If no OpenChamber server is running on that port, connect-url starts one before generating the link.

Headless/API-only setup for a remote machine:

openchamber connect-url --port 3000 --api-only --lan --server http://your-host-or-ip:3000 --qr --ui-password secret

This runs OpenChamber as an API-only server without the desktop app or browser UI assets on that machine, then creates a link for Desktop to import. --lan makes the server reachable from other machines. --server is the address Desktop should use.

When OpenChamber was started with --lan or --host 0.0.0.0, connect-url automatically uses a detected LAN IP instead of 127.0.0.1. Use --server http://host:3000 to override the advertised address, and include --lan when connect-url needs to start the server for LAN access.

Paste the printed openchamber://connect?... link in Desktop under Settings -> Remote Instances -> Direct Instances -> Import Link. The link contains the server URL and a client token. It does not enable browser UI password protection; use --ui-password when exposing a server beyond localhost.

systemd service (VPN / LAN access)

Run OpenChamber and OpenCode as separate persistent services — useful when you want to access your dev machine over a VPN (e.g. Tailscale) or LAN without a Cloudflare tunnel.

How it works: - OpenCode runs as its own service, binding only to localhost. - OpenChamber connects to it via OPENCODE_HOST and --lan makes it reachable on your VPN IP. - --foreground keeps the CLI process alive so systemd can track and restart it.

~/.config/systemd/user/opencode.service

[Unit]
Description=OpenCode Server

[Service]
Type=simple
ExecStart=opencode serve --port 4095
Environment="PATH=/home/linuxbrew/.linuxbrew/bin:/home/linuxbrew/.linuxbrew/sbin:/home/YOU/.local/bin:/home/YOU/.npm-global/bin:/usr/local/bin:/usr/bin:/bin"
Environment=SSH_AUTH_SOCK=%t/ssh-agent.socket
Restart=on-failure
RestartSec=5

[Install]
WantedBy=default.target

Why set PATH and SSH_AUTH_SOCK? systemd user services start with a minimal environment — no shell profile is sourced. Without an explicit PATH, OpenCode won't find tools installed via Homebrew, npm, or ~/.local/bin. Without SSH_AUTH_SOCK, git operations over SSH (push, pull, clone) will fail because the agent socket isn't inherited. Adjust the PATH to match your own tool installation paths. %t expands to $XDG_RUNTIME_DIR (e.g. /run/user/1000), where most SSH agents write their socket.

~/.config/systemd/user/openchamber.service

[Unit]
Description=OpenChamber Web Server
After=opencode.service

[Service]
Type=simple
ExecStart=openchamber serve --port 3000 --host 0.0.0.0 --ui-password your-password --foreground
Environment="OPENCODE_HOST=http://localhost:4095"
Environment="OPENCODE_SKIP_START=true"
Restart=on-failure
RestartSec=5

[Install]
WantedBy=default.target
systemctl --user daemon-reload
systemctl --user enable --now opencode openchamber

OpenChamber will be reachable at `http://<your-vpn-hostname

Extension points exported contracts — how you extend this code

AttachedFile (Interface)
Attached file for agent manager
packages/ui/src/components/views/agent-manager/AgentManagerEmptyState.tsx
SessionActivity (Interface)
(no doc)
packages/vscode/src/sessionActivityWatcher.ts
RegisterSWOptions (Interface)
(no doc)
packages/web/src/pwa.d.ts
ThemePaletteColors (Interface)
(no doc)
scripts/port-opencode-theme.ts
ConnectorSegment (Interface)
* Describes one visible line/curve in a commit row's SVG. * Each segment covers the FULL row height (y=0 to y=100%). *
packages/ui/src/components/views/git/gitGraph.ts
WorkspaceFolderInput (Interface)
(no doc)
packages/vscode/src/workspaceResolver.ts
Window (Interface)
(no doc)
packages/web/src/mobile-main.tsx
ThemeSeedColors (Interface)
(no doc)
scripts/port-opencode-theme.ts

Core symbols most depended-on inside this repo

t
called by 4756
packages/ui/src/components/session/sidebar/utils.tsx
push
called by 1529
packages/vscode/src/git.d.ts
getState
called by 907
packages/ui/src/sync/child-store.ts
cn
called by 866
packages/ui/src/lib/utils.ts
status
called by 644
packages/vscode/src/git.d.ts
delete
called by 482
packages/ui/src/lib/api/types.ts
log
called by 449
packages/vscode/src/git.d.ts
add
called by 448
packages/vscode/src/git.d.ts

Shape

Function 7,904
Interface 709
Method 608
Class 53
Enum 4

Languages

TypeScript100%
Java1%

Modules by API surface

packages/ui/src/lib/api/types.ts242 symbols
packages/web/server/lib/git/service.js186 symbols
packages/electron/main.mjs178 symbols
packages/vscode/src/gitService.ts148 symbols
packages/vscode/src/opencodeConfig.ts142 symbols
packages/web/server/index.js117 symbols
packages/ui/src/sync/sync-context.tsx102 symbols
packages/vscode/src/git.d.ts94 symbols
packages/ui/src/lib/opencode/client.ts84 symbols
packages/electron/ssh-manager.mjs80 symbols
packages/ui/src/lib/gitApiHttp.ts77 symbols
packages/ui/src/lib/gitApi.ts77 symbols

Dependencies from manifests, versioned

@aparajita/capacitor-secure-storage8.0.0 · 1×
@base-ui/react1.4.0 · 1×
@capacitor-mlkit/barcode-scanning8.1.0 · 1×
@capacitor/android8.4.1 · 1×
@capacitor/app8.0.0 · 1×
@capacitor/cli8.4.1 · 1×
@capacitor/core8.4.1 · 1×
@capacitor/ios8.4.1 · 1×
@capacitor/push-notifications8.1.1 · 1×
@capacitor/status-bar8.0.0 · 1×
@clack/prompts1.1.0 · 1×

Datastores touched

dbDatabase · 1 repos

For agents

$ claude mcp add openchamber \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact