9remote
v2.0.17
Published
Remote terminal access from anywhere
Downloads
1,804
Readme
9Remote — Terminal in Your Pocket
Your Mac/Linux/Windows terminal, remote desktop, and file explorer — accessible from any phone or browser, anywhere, instantly.
🚀 Quick Start • 💡 Features • 🌐 Website • 📖 Docs
🤔 Why 9Remote?
Remote access today is painful:
- ❌ SSH — firewall rules, port forwarding, SSH keys
- ❌ VPN — overkill just to check a terminal
- ❌ ngrok / tunnels — expire, lose connection
- ❌ TeamViewer — slow, desktop-only, paid
- ❌ Termius — SSH-only, no desktop, no browser
9Remote solves all of it:
- ✅ One command — install, scan QR, done in 30 seconds
- ✅ Auto tunnel — Cloudflare tunnel, no port forwarding
- ✅ All-in-one — terminal + desktop + file explorer + editor
- ✅ Works on phone — full workspace from browser, <50ms latency
- ✅ Persistent — PTY sessions survive restarts
- ✅ Pair Device — only approved devices connect, zero signup
⚡ Quick Start
npm install -g 9remote
9remote🎉 Scan the QR → pair your device → you're in.
Works on macOS, Linux, Windows. Requires Node.js 20+.
CLI Commands
| Command | Description |
|---------|-------------|
| 9remote | TUI mode — interactive menu with QR code |
| 9remote ui | Web UI mode — opens dashboard at localhost:2208 |
✨ Features
| Feature | What It Does |
|---------|--------------|
| 🖥️ Remote Terminal | Full PTY shell via WebSocket |
| 🖱️ Remote Desktop | Live screen streaming via WebRTC |
| 📁 File Explorer | Browse, upload, download files |
| 💻 Code Editor | Built-in editor with syntax highlighting |
| 🔗 Git Integration | Run git commands with visual status |
| 📱 Mobile Optimized | Touch-friendly UI, gesture controls |
| 🔑 QR Login | One-time 30-min key, scan to connect |
| 🔒 Auto Tunnel | Cloudflare tunnel, no port forwarding |
| 🔄 Persistent Sessions | PTY daemon survives restarts |
| 🌍 Multi-Device Sync | Same session across phone/tablet/laptop |
| 🔔 Push Notifications | Build finished? Get notified |
| 🤖 AI Integration | Claude Code, Codex, Cursor, OpenClaw |
| 🌐 Local Sites Proxy | Expose localhost:3000 to phone |
| 🔐 Pair Device | Approve each device before it connects |
| 🆓 No Account | Machine ID + QR key, zero signup |
🎯 Use Cases
Code from bed — 11 PM, bug in prod, laptop in another room? Open the app on your phone, scan QR, fix, push, sleep.
Fix bugs at a cafe — Production down, only phone + café Wi-Fi? Connect to your home Mac, tail logs, edit config, deploy.
Deploy on vacation — Client needs a hotfix, you're on the beach? Phone → 9remote → git pull → deploy → back to the beach.
On-call engineer — 3 AM alert, don't want to boot laptop? Push notification → terminal + remote desktop from bed.
📖 Setup
On first run, 9Remote generates two keys:
- Permanent Key — stored locally, tied to your machine ID
- One-Time Key — 30-minute temporary key for the QR code
Connect from phone:
- Run
9remoteon your machine - A QR code appears in the terminal
- Open 9remote.cc on your phone (or the mobile app)
- Scan the QR → connected instantly
Keys are never stored on our servers after the session ends.
Requires two system permissions:
- Screen Recording —
System Settings → Privacy & Security → Screen Recording - Accessibility —
System Settings → Privacy & Security → Accessibility
Enable Terminal (or the app you ran 9remote from), then toggle Remote Desktop in the TUI menu.
Performance:
- Adaptive framerate: 60ms active / 400ms idle
- Tile-based diff rendering (only changed regions sent)
- WebRTC DataChannel for minimal latency
Expose your local dev servers automatically:
http://localhost:3000 → https://<tunnel>/proxy/3000/
http://localhost:5173 → https://<tunnel>/proxy/5173/Perfect for testing responsive design on real devices, sharing WIP builds, or mobile debugging without USB.
❓ FAQ
Yes. Every new device must be explicitly approved via Pair Device before it can access the host. Plus:
- No open ports — Cloudflare tunnel is outbound-only
- Keys never stored on our servers after session ends
- No terminal output, files, or screen data collected
- One-time QR keys expire in 30 minutes
Yes. Free to use, no signup, no credit card. MIT licensed.
No. Uses Cloudflare Quick Tunnel — outbound only. Works behind home NAT, corporate firewalls, mobile hotspots, VPNs.
Yes. A LocalFirstAdapter races LAN vs tunnel and uses whichever is faster. If phone and host share the same Wi-Fi, traffic stays local.
Yes. Works seamlessly with Claude Code, OpenAI Codex CLI, Cursor, OpenClaw, and any CLI tool. Run them on your host, access from your phone.
Host: macOS (Intel + Apple Silicon), Linux (x64, arm64), Windows (x64) Client: Any modern browser, iOS 14+, Android 8+
🐛 Troubleshooting
"Port 2208 already in use"
- Another instance running →
pkill -f 9remoteand retry - Or use a different port:
PORT=3308 9remote
"Cloudflare tunnel failed to start"
- Check internet connection
cloudflaredauto-installed on first run; otherwise install manually from cloudflared docs
"Screen Recording / Accessibility denied" (macOS)
- Grant permissions in
System Settings → Privacy & Security, then restart 9Remote
"QR code expired"
- Keys expire in 30 minutes → regenerate from TUI menu:
Key → Regenerate
"Can't connect from phone"
- Check both devices have internet
- Try forcing tunnel mode: Settings → Connection → Tunnel only
📧 Links
- Website: 9remote.cc
- Docs: docs.9remote.cc
- GitHub: github.com/decolua/9remote
- Issues: github.com/decolua/9remote/issues
- Community: facebook.com/groups/9teamvn
📄 License
MIT © 9Team
