Vibing everything
Loading…
Settings
These values pre-fill the new-session dialog.
Cloud Servers
Loading…
Help & setup guide
Paste this URL into your AI agent — it'll set up everything for you.
Drop the URL above into Claude / ChatGPT / Cursor along with "set up CCR to connect to this hub" and follow the agent's lead. The rest of this page is the manual route.

What is this?

Vibing everything is a self-hosted web console for the claude CLI. The Hub you're looking at is a central service that aggregates one or more server processes running on your machines. From here you can chat with Claude on any of them, approve tool calls, see diffs — same UI regardless of which machine the session lives on.

How it works

  1. Server processes run on your dev machines (Linux, macOS, Docker, …). They host the actual claude CLI subprocesses and persist sessions locally.
  2. Each server opens a reverse WebSocket to this Hub. No inbound port on your machine — outbound TLS only.
  3. Your browser hits the Hub. The Hub routes HTTP + WS to the right server via the tunnel. Multiple servers from the same user are merged into one session list.

Setup — quick path

  1. Sign in to this Hub (top of the page).
  2. Open Cloud Servers (icon in the top bar).
  3. Click +, name the server (e.g. laptop, vps-01), and you'll get a device token. Copy it now — it's shown only once.
  4. On your dev machine, install a CCR server and set three env vars (see below). Restart the service.
  5. Refresh this page. The new server should appear under Cloud Servers as online; its sessions show up in the merged session list with a chip indicating which server they're on.

Installing a CCR server on a Linux host

Source: https://github.com/hwaipy/ClaudeCodeRemote (or your fork).

1. Get the source

git clone https://github.com/hwaipy/ClaudeCodeRemote.git cd ClaudeCodeRemote python3 -m venv .venv && .venv/bin/pip install -r requirements.txt

2. Set environment (~/.config/ccr/env)

Replace tok-... with the device token from step 3 of the quick path. CCR_TOKEN protects the local port if you also browse the server directly (LAN); pick any random hex string.

3. systemd user service

Drop a unit at ~/.config/systemd/user/ccr.service from deploy/ccr.service.example in the repo. Then:

systemctl --user daemon-reload systemctl --user enable --now ccr.service journalctl --user -u ccr.service -f

For the server to keep running when you log out: sudo loginctl enable-linger $USER.

Installing a CCR server in Docker

Cleaner option — full stack (Python + Node + Claude Code) in a container, drop-in replacement for the Linux host path.

1. Get the source & cd

git clone https://github.com/hwaipy/ClaudeCodeRemote.git cd ClaudeCodeRemote/deploy/local-app

2. Write .env

3. Bring it up

docker compose up -d --build docker compose logs -f ccr-app-local

Verifying

Troubleshooting

SymptomLikely cause / fix
Server stays offline on Hub Check journalctl --user -u ccr for the hub_client connect line. Common: wrong CCR_HUB_URL (must be wss://) or revoked token.
Server constantly disconnects with superseded Two processes sharing the same device token. Each server needs its own. Revoke + re-register if unsure.
Sessions on one server appear under another Caches; hard-reload (Ctrl+Shift+R). If persists, restart the affected server — it'll resync its session snapshot to the Hub.
Lost the device token Revoke the server entry from Cloud Servers and register a new one. Tokens are stored as a SHA-256 hash; the Hub can't recover them.
↓0 0s