Beam your terminal
Termbridge runs a local server, tunnels it through Cloudflare, and streams your tmux session to any browser.
npx termbridgeLatest release 0.3.13 MIT Node 20+, tmux and cloudflared
# Create a tmux session and start the agent
tmux new-session -d -s claude "claude"
# Then attach Termbridge to it
termbridge --session claudeIn practice
Start it on your computer, then open the terminal on another device.
From your laptop to your phone
npx termbridge starts a local server, a tmux session and a Cloudflare tunnel, then prints a QR code with a one-time login link.
Scanning the code redeems the token into a cookie session. Add --proxy 5173 to show your dev server in a Preview view next to the terminal.
npx termbridge# Start your Vite app first
cd my-app && npm run dev # runs on port 5173
# Then start Termbridge with proxy
termbridge --proxy 5173Mobile Ready
Scan the QR code and open your terminal in the browser on your phone.
True Terminal
tmux + node-pty feed a real PTY into xterm.js with colors and TUIs.
Cloudflare Tunnel
Quick Tunnel exposes your local server with no port-forwarding.
Token Login
The QR link holds a single-use token valid for 90 seconds. Redeeming it sets an HttpOnly, Secure session cookie, with CSRF checks and 5 redemptions a minute. Sessions do not expire.
Multi-Session
One server can host multiple tmux sessions with in-app switching.
One Command
npx termbridge starts the server, the Cloudflare tunnel and the QR code. Needs Node 20+, tmux and cloudflared on macOS or Linux; Windows is not supported.
CLI First
Designed as a terminal-first tool with TTY status and QR output.
QR Handoff
Each run prints one QR code with a single-use login link. Scan it on the device you want to use.
Dev Server Preview
Proxy your local Vite app and preview it alongside the terminal.
HMR Passthrough
WebSocket proxying keeps Vite's Hot Module Replacement working.
View Switching
Switch between Terminal and Preview from the Views sheet in the bottom bar.
Full-Stack Workflow
Run terminal commands and watch your app update in real-time.
Why Termbridge
No port forwarding or VPN
An account-less Cloudflare Quick Tunnel gives your local server a public HTTPS URL. The device you connect from only needs a browser.
Full-screen programs work
node-pty attaches to tmux and reports a 256-colour terminal, so TUIs such as htop and vim behave as they do locally.
Sessions outlive the bridge
Ctrl+C closes the tunnel and the server but leaves your tmux sessions running. Start again with --session to attach to one you already have.
Runs on your machine
The server, the WebSocket and the terminal registry live on your computer and listen on 127.0.0.1 by default. Termbridge operates no backend of its own.
Compared with
Other ways to reach a terminal from another device, and where Termbridge differs.
| Tool | Good at | Difference with Termbridge |
|---|---|---|
| ttyd | Good atttyd shares any command over the web with CJK and IME input, ZMODEM and trzsz file transfer, Sixel images, SSL and basic authentication, and runs on macOS, Linux, the BSDs, OpenWrt and Windows. | Difference with TermbridgeTermbridge adds the tunnel, a single-use QR login link and a phone control bar, and keeps the shell in tmux so it survives a restart. It is built for macOS and Linux. |
| sshx | Good atsshx shares a terminal with anyone in one command, on an infinite canvas where collaborators see each other's cursors, with end-to-end encryption and binaries for Linux, macOS and Windows. | Difference with TermbridgeTermbridge is for reaching your own terminal: each run issues one login link that works once, and traffic goes through a Cloudflare tunnel to the server on your machine. |
| Tailscale SSH | Good atTailscale SSH lets Tailscale handle authentication and authorization of SSH connections in your tailnet, encrypted over WireGuard with node keys, from any device running Tailscale. | Difference with TermbridgeTermbridge needs no client or private network on the other device. It gives you a public URL and a QR code, and the terminal opens in the browser. |
Sources, checked
Questions and answers
Short answers from the Termbridge documentation.
In the default mode it passes through a Cloudflare Quick Tunnel on its way to the Termbridge server on your computer. Termbridge runs no backend of its own. In Daytona sandbox mode the terminal runs in a sandbox in your Daytona account, and in direct mode the server runs there too and you connect through the Daytona preview link.
The QR link carries a one-time token that is valid for 90 seconds and works once. Redeeming it sets an HttpOnly session cookie, and terminal WebSocket connections also need a CSRF token. Do not share the QR code or the URL with people you do not trust.
Yes. Set TERMBRIDGE_SESSIONS=3 to start three tmux sessions, then switch between them with the terminal switcher in the app.
Not officially. Termbridge is built for macOS and Linux. It might work with WSL, but that is not tested.
Not yet. Cloudflare is the only tunnel provider. You can use a named Cloudflare tunnel on your own hostname, disable the tunnel and pass your own public URL, or use Daytona direct mode.
In local mode the connection lasts as long as Termbridge runs, and it closes when the computer sleeps or Termbridge exits. Your tmux sessions stay alive, so you can start Termbridge again, scan the new QR code and attach with --session. In Daytona direct mode the server runs inside the sandbox.
Install Node 20+, tmux and cloudflared, run npx termbridge, and scan the QR code to open your terminal in a browser on your phone.