Mobile-first web access for local tmux sessions.

bridge-app is a self-hosted terminal bridge: a Go server runs beside tmux, streams sessions over authenticated WebSockets, and serves a React/xterm.js UI for phones, tablets, and long-running maintainer workflows.

MIT licensed Public MVP Go + React + xterm.js Self-hosted
tmux: maintainer@bridge
$ bridge-server --static-dir web/dist
bridge-server listening on :8080

$ tmux list-sessions
release: 2 windows
tests:   1 window
agent:   1 window

browser -> WebSocket -> Go -> tmux

Why it exists

SSH and tmux remain the base. bridge-app helps when maintainers need to check, resume, or steer long-running work from a device where a full terminal is awkward.

Security posture

Auth uses bcrypt and JWT cookies, WebSockets default to same-origin checks, and deployment guidance treats the app like SSH-grade shell access.

Current status

The public MVP includes backend, frontend, tmux APIs, WebSocket streaming, CI, deployment examples, issue templates, and a security policy.

Quick Start

Build from source, create the first user, then serve the web UI from the Go binary.

git clone https://github.com/ivanxgb/bridge-app.git
cd bridge-app

cd web && npm install && cd ..
make build

export BRIDGE_JWT_SECRET="$(openssl rand -hex 32)"
make seed
make run

What still needs work

The project is useful as an MVP, but the roadmap is intentionally honest about hardening.

  • Rate limiting and login throttling.
  • Audit logs for session and command actions.
  • Broader end-to-end coverage around real tmux sessions.
  • Screenshots or a short demo walkthrough in the README.

Project docs

Use these links when evaluating architecture, current status, and contribution areas.