Skip to content

GagnDeep/tmuxremote

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ccremote — Your Claude. Your terminal. Anywhere.

ccremote

Your Claude. Your terminal. Anywhere.

Self-hosted browser terminal for Claude Code. Connect to your tmux sessions from any device — phone, tablet, laptop — over a single secure WebSocket. One npm install away.

npm CI License: MIT Docker

Website · Docs · Demo


Install

npm install -g ccremote
ccremote start

That's it. ccremote auto-generates a token, opens your browser, and connects you to tmux.

Other package managers & Docker
bun install -g ccremote
pnpm add -g ccremote
docker run -p 14100:14100 ghcr.io/nicholasgriffintn/ccremote

Why ccremote?

ccremote ttyd / GoTTY Web SSH tmate
Mobile-first UX
File browser + Monaco editor
Single-port (HTTP + WS)
Self-hosted optional
WebGL terminal
Built for Claude Code workflows

Features

  • True terminal fidelity — xterm.js + WebGL, Unicode 11, 256-color
  • Mobile-first — keyboard toolbar, swipe gestures, haptic feedback
  • Files + previews — Monaco editor, syntax highlighting, image preview
  • Self-hosted — your machine, your tmux, your token. No third party.
  • Single port — HTTP and WS share one upstream behind nginx/Caddy
  • PWA — installable on iOS/Android home screens

Quick start

ccremote start              # localhost:14100, auto-token, opens browser
ccremote start --host 0.0.0.0 --port 8080
ccremote token print        # show current token
ccremote token rotate       # generate a new one
ccremote --help

Behind a reverse proxy

Single-port means a single upstream. Nginx:

location / {
  proxy_pass http://127.0.0.1:14100;
  proxy_http_version 1.1;
  proxy_set_header Upgrade $http_upgrade;
  proxy_set_header Connection "upgrade";
  proxy_set_header Host $host;
}

Caddy:

ccremote.example.com {
  reverse_proxy 127.0.0.1:14100
}

Configuration

Flag / Env Default Description
--port / PORT 14100 HTTP+WS port
--host / HOST 127.0.0.1 Bind address (0.0.0.0 to expose)
--token / AUTH_TOKEN auto Shared auth token
--allowed-paths / ALLOWED_PATHS $HOME Comma-separated path allow-list for the file browser
--no-open Don't open the browser on start

The auto-generated token is stored at ~/.ccremote/config.json (mode 0600).

Architecture

One Node process, one HTTP server, three layers:

Browser  ⇄ wss/https ⇄  ccremote node  ⇄ pty ⇄  tmux
            (one port)   Next.js + ws        your sessions

Read more →

Development

pnpm install
pnpm dev          # web (14100), relay (14300), docs (14102)
pnpm build
pnpm test
pnpm typecheck
pnpm lint

The repo is a pnpm + Turborepo monorepo. See CLAUDE.md for the full layout.

Production deployments

The CLI is for self-host on a single machine. For multi-tenant or container deployments, the repo also ships:

  • Docker compose (docker-compose.prod.yml) — separate web/relay services
  • PM2 (ecosystem.config.cjs) — multi-process production

Contributing

PRs welcome. Conventional commits (feat:, fix:, chore:). See AGENTS.md and CONTRIBUTING.md.

License

MIT © Nicholas Griffin

About

No description, website, or topics provided.

Resources

License

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors