9remote
v0.1.64
Published
Remote terminal access from anywhere
Readme
9remote
Your Mac/Linux terminal in your pocket — anywhere, instantly
🌐 Web App • 📖 Docs • 🚀 Get Started
Why 9remote?
- ❌ SSH is a hassle — need to open firewall, configure port forwarding, manage keys
- ❌ VPN is overkill — too complex to set up just to check a terminal
- ❌ ngrok / tunnels expire — lose connection, have to restart everything
9remote solves it:
- ✅ One command —
npx 9remote, scan QR, done - ✅ Auto tunnel — Cloudflare tunnel starts automatically, no port forwarding
- ✅ Works on phone — full terminal from your browser, under 50ms latency
- ✅ Remote Desktop — view and control your screen, mouse & keyboard
- ✅ Persistent sessions — PTY daemon survives server restarts
⚡ Quick Start
npx 9remoteScan the QR code on your phone → you're in.
Or install globally:
npm install -g 9remote
9remoteReady in 30 seconds. No config needed.
✨ Features
- 🖥️ Remote Terminal — Full PTY shell, always on, persistent across reconnects
- 🖱️ Remote Desktop — Live screen streaming via WebRTC + mouse/keyboard control
- 📁 File Explorer — Browse, upload, download files from your browser
- 📱 QR Login — One-time key (30 min) for quick mobile access
- 🔒 E2E Secure — All traffic through Cloudflare tunnel, no open ports
- 🔄 Auto Restart — Server + tunnel auto-recover on crash
📖 CLI Commands
| Command | Description |
|---|---|
| 9remote | TUI mode — interactive menu with QR |
| 9remote ui | Web UI mode — open browser dashboard |
| 9remote start | Auto start server + tunnel (headless) |
- Start —
9remotespawns a local server on port2208 - Tunnel — A Cloudflare Quick Tunnel is created automatically (no account needed)
- QR — A one-time login link is generated and shown as QR code
- Connect — Scan from your phone → authenticated session via 9remote.cc
- Transport — Terminal uses WebSocket; Remote Desktop uses WebRTC DataChannel for low latency
- Screen streaming via WebRTC (adaptive: 60ms active / 400ms idle)
- Tile-based diff rendering — only changed regions are sent
- Mouse & keyboard control via
robotjs - Requires macOS permissions: Screen Recording + Accessibility
Enable from TUI menu: Remote Desktop → Toggle ON
- Permanent Key — stored locally, tied to your machine ID
- One-Time Key — 30-minute temporary key for quick phone access
- Keys are never stored on our servers after session ends
- Regenerate your key anytime from the TUI menu
🛠️ Built With
- Cloudflare Tunnel — Zero-config secure tunnel
- node-datachannel — WebRTC for low-latency desktop streaming
- node-pty — Persistent PTY terminal sessions
- Socket.IO — Real-time terminal + signaling
- Preact — Lightweight Web UI
📝 License
MIT © 9remote
