Self-Host a Claude Code GUI for Your Whole Team (One Dev Box, Zero Installs)
OpenCockpit is web client–server: install it once on a shared dev box, and every teammate opens a browser and gets a seat — each coding with AI in their own project or worktree. Setup takes 5 minutes.
Most Claude Code GUIs are desktop apps: one install per laptop, one config per person, one machine per seat. OpenCockpit is a web client–server — which unlocks a deployment model the desktop apps can't do:
Install it once on the machine where the code lives. Every teammate opens a browser and gets a seat.
No per-laptop installs. No "works on my machine". One box, the whole team flying together.
Why a shared dev box?
- The code already lives there. Many teams keep a beefy dev box (or cloud VM) where repos are cloned, databases run, and services are wired up. Cockpit sits next to the code instead of dragging the code to each laptop.
- One environment, zero drift. Node version,
claudeCLI login, Ollama models, DB credentials — configured once, shared by everyone. - Shared horsepower. A single GPU box serves everyone's local Ollama tabs. Laptops stay cool.
- Any device is a seat. A browser is the only client — that includes your phone on the same VPN.
Setup (5 minutes)
On the dev box:
# 1. Install (Node ≥ 20)
npm install -g @surething/cockpit
# 2. Expose on the network + require a token for remote clients
COCKPIT_HOST=0.0.0.0 cockpit --token your-shared-secret
That's it. Two knobs worth knowing:
| Knob | Meaning |
|---|---|
COCKPIT_HOST | Defaults to 127.0.0.1 (local-only). Set 0.0.0.0 to accept LAN / VPN clients. |
--token (or COCKPIT_TOKEN) | Remote clients must present this token; loopback stays exempt, so local CLI use keeps working untouched. See the access-token post. |
To keep it running, wrap it in your process manager of choice — a minimal systemd unit:
[Unit]
Description=OpenCockpit
After=network.target
[Service]
User=dev
Environment=COCKPIT_HOST=0.0.0.0
Environment=COCKPIT_TOKEN=your-shared-secret
ExecStart=/usr/local/bin/cockpit
Restart=on-failure
[Install]
WantedBy=multi-user.target
Give every teammate a seat
Each dev opens:
http://<dev-box>:3457/?token=your-shared-secret
Cockpit sets a cookie and cleans the URL — the token doesn't linger in the address bar. From there, everyone:
- opens their own project as a tab (multi-project tabs are independent sessions),
- or, when two people work the same repo, each takes a git worktree — Cockpit manages worktrees from the Explorer, so parallel agents never trample each other's checkout,
- picks their engine per tab: Claude by default, or Codex / DeepSeek / Kimi / Ollama with their own key.
Every seat gets the full cockpit: agent chat, xterm.js terminal, Chrome control, PostgreSQL / MySQL / Redis bubbles, code review pages, scheduled tasks.
The honest part: what this is and isn't
OpenCockpit's multi-seat model is trust-based, like SSH access to a shared box:
- The token gates entry; it is not per-user accounts. Anyone with the token sees the same projects and sessions.
- Treat it like you treat shell access: fine for a team that already shares the dev box, wrong for strangers.
- Keep it on a LAN or VPN (Tailscale / WireGuard work great). Don't put the port naked on the public internet.
If your team already SSHes into the same machine, Cockpit adds seats to that machine — it doesn't change your security model.
FAQ
Can two devs use it at the same time? Yes — that's the point. Each browser is an independent client; sessions run server-side in parallel.
Same repo, two agents? Use git worktrees (managed in the Explorer). Each agent gets its own checkout; branches merge like normal git.
Does it work over Tailscale / WireGuard?
Yes. It's plain HTTP + WebSocket on one port (default 3457, --port to change).
Can I use it from a phone? Yes — the UI is a three-panel swipe layout designed for it. Same URL, same token.
What about Ollama — fully offline? Install Ollama on the dev box and every seat can pick any pulled model. No keys, no cloud, air-gapped if you want.
One npm i -g on one box, and the whole team flies together. If you try it, tell us how it went — and if something in this guide drifts out of date, PRs welcome.