Repository
9remote
π± Terminal in Your Pocket β Control Claude Code, Codex, Gemini CLI & your Mac/Linux/Windows from any phone or browser. Vibe coding from anywhere. Alternative to MobileCLI, Claude Remote, vibe-remote, MuxAgent.
- Feature
- What It Does
- π₯οΈ Remote Terminal
- Remote Terminal
- π±οΈ Remote Desktop
- Remote Desktop
- π File Explorer
- File Explorer
Specs
- FeatureWhat It Does
- π₯οΈ Remote TerminalRemote Terminal
- π±οΈ Remote DesktopRemote Desktop
- π File ExplorerFile Explorer
- π» Code EditorCode Editor
- π Git IntegrationGit Integration
- π± Mobile OptimizedMobile Optimized
- π QR LoginQR Login
- π Auto TunnelAuto Tunnel
- π Persistent SessionsPersistent Sessions
- π Multi-Device SyncMulti-Device Sync
- π Push NotificationsPush Notifications
- π€ AI IntegrationAI Integration
- π Local Sites ProxyLocal Sites Proxy
- β‘ Low LatencyLow Latency
- π Pair DevicePair Device
- π No Account RequiredNo Account Required
- CommandDescription
- 9remoteTUI mode β interactive menu with QR code
- 9remote uiWeb UI mode β opens browser dashboard at localhost:2208
README
# 9Remote β Terminal in Your Pocket
**Want to code from bed? Fix bugs while having coffee? Deploy while on vacation?**
**Your Mac/Linux/Windows terminal, remote desktop, and file explorer β accessible from any phone or browser, anywhere, instantly.**
[](https://www.npmjs.com/package/9remote)
[](https://www.npmjs.com/package/9remote)
[](#-license)
[π Quick Start](#-quick-start) β’ [π Comparison](#-9remote-vs-other-remote-solutions) β’ [π‘ Features](#-key-features) β’ [π Website](https://9remote.cc) β’ [π Docs](https://docs.9remote.cc) β’ [π¬ Facebook](https://www.facebook.com/groups/9teamvn)
[πΊπΈ English](./README.md) β’ [π»π³ TiαΊΏng Viα»t](./i18n/README.vi.md)
π§ Development Status
9Remote is currently in active development.
The source code is not open-source yet. If this project gets enough β support from the community, we will fully open-source it so everyone can contribute and self-host.
β Star this repo to help us reach the open-source milestone!
π€ Why 9Remote?
Remote access today is painful:
- β SSH is a hassle β firewall rules, port forwarding, SSH keys, IP whitelisting
- β VPN is overkill β complex setup just to check a terminal
- β ngrok / tunnels expire β lose connection, restart everything
- β TeamViewer is slow β high latency, desktop-only, paid for commercial use
- β Chrome Remote Desktop β no terminal, no file explorer, no mobile
- β Termius β SSH-only, no remote desktop, no browser access
9Remote solves all of it:
- β One command β install, scan QR, done in 30 seconds
- β Auto tunnel β Cloudflare tunnel starts automatically, no port forwarding
- β All-in-one β terminal + remote desktop + file explorer + code editor in one app
- β Works on phone β full workspace from your browser, under 50ms latency
- β Persistent sessions β PTY daemon survives server restarts
- β Pair Device security β only approved devices can connect, zero signup friction
β‘ Quick Start
Install globally:
npm install -g 9remote
9remote
π Scan the QR code on your phone β pair your device β you're in.
That's it! No config, no firewall rules, no signup.
Ready in 30 seconds. Works on macOS, Linux, and Windows.
π 9Remote vs Other Remote Solutions
| Feature | 9Remote | Claude Remote | TeamViewer | Chrome Remote | Termius |
|---|---|---|---|---|---|
| Zero Config | β | β | β | β | β |
| Terminal Access | β | β | β | β | β |
| Remote Desktop | β | β | β | β | β |
| File Explorer | β | β | β | β | β |
| Code Editor | β | β | β | β | β |
| Git Integration | β | β | β | β | β |
| Mobile Optimized | β | β | β | β | β |
| Browser-Based | β | β | β | β | β |
| QR Login | β | β | β | β | β |
| Auto Tunnel | β | β | β | β | β |
| Persistent Sessions | β | β | β | β | β |
| Multi-Device Sync | β | β | β | β | β |
| Push Notifications | β | β | β | β | β |
| AI Integration | β | β | β | β | β |
| No Port Forwarding | β | β | β | β | β |
| No Account Required | β | β | β | β | β |
| TOTAL | 16 / 16 | 11 / 16 | 7 / 16 | 5 / 16 | 7 / 16 |
π 9Remote: All-in-one solution with 16/16 features.
β¨ Key Features
| Feature | What It Does | Why It Matters |
|---|---|---|
| π₯οΈ Remote Terminal | Full PTY shell via WebSocket | Code like you're sitting at your Mac |
| π±οΈ Remote Desktop | Live screen streaming via WebRTC | View & control your machine from phone |
| π File Explorer | Browse, upload, download files | Manage files without SSH/SFTP |
| π» Code Editor | Built-in editor with syntax highlighting | Quick edits without opening IDE |
| π Git Integration | Run git commands with visual status | Commit/push from your phone |
| π± Mobile Optimized | Touch-friendly UI, gesture controls | Full workspace on a 6" screen |
| π QR Login | One-time 30-min key, scan to connect | Zero-friction mobile access |
| π Auto Tunnel | Cloudflare tunnel, no port forwarding | Works behind any NAT/firewall |
| π Persistent Sessions | PTY daemon survives restarts | Long-running commands stay alive |
| π Multi-Device Sync | Same session across phone/tablet/laptop | Switch devices without losing context |
| π Push Notifications | Build finished? Get notified | Never miss a critical event |
| π€ AI Integration | Works with Claude Code, Codex, OpenClaw | Code with AI from anywhere |
| π Local Sites Proxy | Expose localhost:3000 to phone |
Test dev servers on mobile instantly |
| β‘ Low Latency | <50ms typical, WebRTC for desktop | Feels like local |
| π Pair Device | Approve each device before it connects | No unauthorized access, full control |
| π No Account Required | Machine ID + QR key, zero signup | Privacy-first design |
π± Available Platforms
π― Use Cases
Case 1: "Code from bed"
Problem: It's 11 PM, you remember a bug but laptop is in another room.
Solution:
1. Open 9remote app on phone
2. Scan QR (or use saved session)
3. Open terminal β fix bug β git push
4. Sleep well π΄
Case 2: "Fix bugs at a cafe"
Problem: Production is down. You only have your phone and a bad cafΓ© Wi-Fi.
Solution:
1. Connect to your home/office Mac via 9remote
2. Tail logs in terminal
3. Edit config in built-in editor
4. Deploy β crisis averted
Case 3: "Deploy while on vacation"
Problem: Client needs a hotfix. You're on the beach.
Solution:
1. Phone β 9remote β your dev machine
2. git pull β build β deploy
3. Back to the beach in 5 minutes ποΈ
Case 4: "On-call engineer"
Problem: PagerDuty alert at 3 AM. Don't want to power on laptop.
Solution:
1. Push notification β tap β 9remote opens
2. Terminal + remote desktop ready
3. Diagnose + restart service from bed
4. Resolve incident without getting up
π Setup Guide
<details>
<summary><b>π Installation Options</b></summary>
Option 1 β NPM (recommended)
npm install -g 9remote
9remote
Option 2 β Desktop App
Download from 9remote.cc/download β native app with system tray integration, auto-start on boot, and background mode.
Option 3 β Mobile App
- iOS: App Store β "9Remote"
- Android: Google Play β "9Remote"
</details>
<details>
<summary><b>π First Run & QR Login</b></summary>
On first run, 9Remote generates two keys:
- Permanent Key β stored locally, tied to your machine ID, used for trusted devices
- One-Time Key β 30-minute temporary key, used for the QR code shown in terminal
Connect from phone:
- Run
9remoteon your Mac/Linux/Windows machine - A QR code appears in the terminal
- Open 9Remote app (or 9remote.cc) on your phone
- Scan the QR β connected instantly
Keys are never stored on our servers after the session ends.
</details>
<details>
<summary><b>π±οΈ Remote Desktop Setup (macOS)</b></summary>
Remote Desktop requires two system permissions on macOS:
- Screen Recording β
System Settings β Privacy & Security β Screen Recording β enable Terminal (or 9Remote Desktop app) - Accessibility β
System Settings β Privacy & Security β Accessibility β enable Terminal (or 9Remote Desktop app)
Then enable in 9Remote:
TUI menu β Remote Desktop β Toggle ON
Performance:
- Adaptive framerate: 60ms active / 400ms idle
- Tile-based diff rendering (only changed regions sent)
- WebRTC DataChannel for minimal latency
</details>
<details>
<summary><b>π Local Sites Proxy</b></summary>
Expose your local dev servers (e.g. localhost:3000, localhost:5173) to your phone automatically.
9Remote auto-detects running ports and proxies them:
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 with clients
- Mobile debugging without USB cable
</details>
<details>
<summary><b>β¨οΈ CLI Commands</b></summary>
| Command | Description |
|---|---|
9remote |
TUI mode β interactive menu with QR code |
9remote ui |
Web UI mode β opens browser dashboard at localhost:2208 |
</details>
β Frequently Asked Questions
<details>
<summary><b>π Is 9Remote secure?</b></summary>
Yes. 9Remote uses a Pair Device approval system β every new device must be explicitly approved by you before it can access the host. Plus:
- No open ports on your machine (Cloudflare tunnel, outbound-only)
- Keys are never stored on our servers after the session ends
- No terminal output, files, or screen data is collected
- One-time QR keys expire in 30 minutes
- Pending/rejected devices can be managed anytime from the TUI menu
</details>
<details>
<summary><b>π° Is it free?</b></summary>
Yes, during the development phase. 9Remote is free to use. No signup, no credit card.
Once we open-source, it will remain free forever (MIT license planned).
</details>
<details>
<summary><b>π¦ When will it be open-source?</b></summary>
When the project reaches enough β GitHub stars to prove community interest.
We want to make sure there's a real community before committing to open-source maintenance. Star this repo to help us hit the milestone faster!
</details>
<details>
<summary><b>π Do I need to open any ports?</b></summary>
No. 9Remote uses Cloudflare Quick Tunnel β outbound connection only. Works behind:
- Home NAT routers
- Corporate firewalls
- Mobile hotspots
- VPNs
</details>
<details>
<summary><b>π΄ Does it work offline / on LAN only?</b></summary>
Yes. 9Remote includes a LocalFirstAdapter that races LAN vs tunnel connection and uses whichever is faster. If phone and host are on the same Wi-Fi, traffic stays local.
</details>
<details>
<summary><b>π€ Can I use AI coding tools through 9Remote?</b></summary>
Yes! 9Remote works seamlessly with:
- Claude Code
- OpenAI Codex CLI
- Cursor
- OpenClaw
- Any CLI tool that runs in a terminal
Run them on your host machine, access them from your phone. Combined with 9Router, you get free AI coding from anywhere.
</details>
<details>
<summary><b>π₯οΈ What platforms are supported?</b></summary>
Host (where 9Remote agent runs):
- β macOS (Intel + Apple Silicon)
- β Linux (x64, arm64)
- β Windows (x64)
Client (where you connect from):
- β Any modern browser (Chrome, Safari, Firefox, Edge)
- β iOS 14+
- β Android 8+
- β Tauri desktop app (macOS, Windows, Linux)
</details>
π οΈ Tech Stack
- Runtime: Node.js 20+
- Tunnel: Cloudflare Quick Tunnel β zero-config secure tunnel
- Terminal: node-pty β persistent PTY sessions
- Remote Desktop: node-datachannel (WebRTC) + robotjs (input control)
- Real-time: Socket.IO β terminal streaming + WebRTC signaling
- Agent UI: Preact β lightweight embedded dashboard
- Web Client: Next.js 16 + React 19 + Tailwind CSS 4
- Desktop App: Tauri 2 β native shell with auto-updater
- Mobile App: Expo β React Native with WebView shell
- Edge API: Cloudflare Workers β session management + TURN credentials
π Troubleshooting
"Port 2208 already in use"
- Another 9Remote instance is running β
pkill -f 9remotethen retry - Or run on a different port:
PORT=3308 9remote
"Cloudflare tunnel failed to start"
- Check internet connection
cloudflaredauto-installed on first run β if it fails, install manually: cloudflared docs
"Screen Recording / Accessibility permission denied" (macOS)
- Grant permissions in
System Settings β Privacy & Security - Restart 9Remote after granting
"QR code expired"
- One-time 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 (skip LAN): Settings β Connection β Tunnel only
"Remote desktop laggy"
- Reduce resolution in settings
- Switch to terminal-only if desktop not needed
- Use LAN mode if on same Wi-Fi for lowest latency
β Show Your Support
9Remote is in active development and we need your support to reach the open-source milestone!
- β Star this repo β every star brings us closer to going open-source
- π¦ Share on Twitter / X β tell other devs about 9Remote
- π¬ Join our Facebook community β facebook.com/groups/9teamvn
- π Report issues β found a bug? Let us know!
- π‘ Request features β what would make your remote workflow better?
π§ Support & Links
- Website: 9remote.cc
- Documentation: docs.9remote.cc
- NPM Package: npmjs.com/package/9remote
- GitHub: github.com/decolua/9remote
- Issues: github.com/decolua/9remote/issues
- Facebook Community: facebook.com/groups/9teamvn
π License
Proprietary β All Rights Reserved.
9Remote is currently in active development and is not open-source yet. The published npm package is free to use, but the source code is not publicly available.
π― Open-source milestone: once this repo reaches enough β support, the full source code will be released under the MIT license.