◆ local · no cloud relay · zero dependencies

Your Claude Code & OpenCode chats,
on your phone.

A tiny bridge that lets you read and continue your live Claude Code and OpenCode sessions from any device on your LAN or VPN — with full context, live updates, and nothing routed through the cloud.

Claude Code + OpenCode Python stdlib only Live via SSE Markdown + tables
L
llama.cpp
working…
can you summarize the plan?
Plan
Refactor the loader, then:
  • cache by mtime
  • stream via SSE
  • ship it
▸ Read  src/loader.py
looks good — go
On it. Pushing the change now.
reply…

Why it's nice

Simple on purpose. It reads Claude Code and OpenCode's own transcripts and continues them — no new moving parts.

Both backends, one UI

Reads Claude Code's JSONL transcripts and OpenCode's SQLite DB. Same chat list, same --resume continuation, same SSE — pick a backend per chat.

Live, no refresh

Server-Sent Events push the moment a transcript changes. Thinking and tool calls stream in as they happen — for both backends.

Reads beautifully

Full markdown — headings, code blocks, tables, and collapsible tool calls. No more raw characters.

Stays on your network

Binds to your LAN/VPN, no inbound ports opened to the world, nothing relayed through anyone's cloud.

Zero dependencies

Just Python's standard library. One server file, one HTML file. Nothing to pip install.

Made for the couch

Searchable chat list, tap to open, infinite scroll, dark/light, and inputs that don't zoom on iOS.

Three steps

Leave it running on the machine with your chats. Open the URL anywhere on your network.

Install it

uv tool install git+https://github.com/qxZap/cc-bridge, then run cc-bridge on the machine where your chats live. It prints a LAN URL.

Open on your phone

Hit that URL over Wi-Fi or VPN. Every Claude Code and OpenCode chat — VS Code and terminal — shows up live.

Read & reply

Tap a chat, follow the thinking, and reply straight into the same conversation. Open a brand-new one with + from any device.

Quickstart

Requires the claude CLI for Claude Code chats, the opencode CLI for OpenCode chats (either or both), and uv. Python 3.8+.

# on the machine running your chats
uv tool install git+https://github.com/qxZap/cc-bridge
cc-bridge
# or without installing: uvx --from git+https://github.com/qxZap/cc-bridge cc-bridge
# -> open the printed http://<lan-ip>:8787/ on your phone

Access from anywhere — Tailscale

cc-bridge is LAN-only by design (no auth, no cloud). To use it from outside your home network, the easiest path is Tailscale — a free personal VPN that ties your devices together with no port forwarding.

# on the machine running cc-bridge:
# install Tailscale (Linux one-liner)
curl -fsSL https://tailscale.com/install.sh | sh
# install on macOS / Windows: download from https://tailscale.com/download
# then expose cc-bridge to your tailnet (HTTPS, Tailscale-terminated cert)
tailscale serve --bg 8899
# -> reach from your phone at https://<your-laptop>.<your-tailnet>.ts.net:8899
#    MagicDNS gives every device a stable hostname; no port-forwarding required.

Other options: any LAN/VPN works — Tailscale, ZeroTier, WireGuard, or a plain LAN. Just open the printed http://<lan-ip>:8787/ from any device on the same network.

One honest limit. A message you send from your phone lands in the conversation on disk, but an open VS Code panel keeps its copy in memory and won't refresh until you /resume it — Claude Code exposes no way to push into a live panel. Think of cc-bridge as a second live head on the same conversation. Simple rule: one head at a time.

Support

Free and MIT. If it saves you a walk back to your desk, you can buy me a coffee — no pressure.