9Remote Dashboard # 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.** [![npm version](https://img.shields.io/npm/v/9remote.svg)](https://www.npmjs.com/package/9remote) [![Downloads](https://img.shields.io/npm/dm/9remote.svg)](https://www.npmjs.com/package/9remote) [![License](https://img.shields.io/badge/license-Proprietary-orange.svg)](#-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:** ```bash 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
πŸ’» CLI
npm install -g 9remote
macOS β€’ Linux β€’ Windows
πŸ–₯️ Desktop App
Tauri native app
macOS β€’ Windows β€’ Linux
🌐 Web Client
9remote.cc
Any modern browser
πŸ“± Mobile App
iOS β€’ Android
React Native / Expo
--- ## 🎯 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
πŸš€ Installation Options ### Option 1 β€” NPM (recommended) ```bash npm install -g 9remote 9remote ``` ### Option 2 β€” Desktop App Download from [9remote.cc/download](https://9remote.cc) β€” 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"
πŸ”‘ First Run & QR Login 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:** 1. Run `9remote` on your Mac/Linux/Windows machine 2. A QR code appears in the terminal 3. Open 9Remote app (or [9remote.cc](https://9remote.cc)) on your phone 4. Scan the QR β†’ connected instantly > Keys are **never** stored on our servers after the session ends.
πŸ–±οΈ Remote Desktop Setup (macOS) Remote Desktop requires two system permissions on macOS: 1. **Screen Recording** β€” `System Settings β†’ Privacy & Security β†’ Screen Recording β†’ enable Terminal (or 9Remote Desktop app)` 2. **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
🌐 Local Sites Proxy 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:///proxy/3000/ http://localhost:5173 β†’ https:///proxy/5173/ ``` Perfect for: - Testing responsive design on real devices - Sharing WIP builds with clients - Mobile debugging without USB cable
⌨️ CLI Commands | Command | Description | |---------|-------------| | `9remote` | TUI mode β€” interactive menu with QR code | | `9remote ui` | Web UI mode β€” opens browser dashboard at `localhost:2208` |
--- ## ❓ Frequently Asked Questions
πŸ”’ Is 9Remote secure? **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
πŸ’° Is it free? **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).
πŸ“¦ When will it be open-source? **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!
🌐 Do I need to open any ports? **No.** 9Remote uses Cloudflare Quick Tunnel β€” outbound connection only. Works behind: - Home NAT routers - Corporate firewalls - Mobile hotspots - VPNs
πŸ“΄ Does it work offline / on LAN only? **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.
πŸ€– Can I use AI coding tools through 9Remote? **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](https://github.com/decolua/9router), you get free AI coding from anywhere.
πŸ–₯️ What platforms are supported? **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)
--- ## πŸ› οΈ Tech Stack - **Runtime:** Node.js 20+ - **Tunnel:** [Cloudflare Quick Tunnel](https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/) β€” zero-config secure tunnel - **Terminal:** [node-pty](https://github.com/microsoft/node-pty) β€” persistent PTY sessions - **Remote Desktop:** [node-datachannel](https://github.com/murat-dogan/node-datachannel) (WebRTC) + [robotjs](https://github.com/octalmage/robotjs) (input control) - **Real-time:** [Socket.IO](https://socket.io/) β€” terminal streaming + WebRTC signaling - **Agent UI:** [Preact](https://preactjs.com/) β€” lightweight embedded dashboard - **Web Client:** [Next.js 16](https://nextjs.org/) + React 19 + Tailwind CSS 4 - **Desktop App:** [Tauri 2](https://tauri.app/) β€” native shell with auto-updater - **Mobile App:** [Expo](https://expo.dev/) β€” 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 9remote` then retry - Or run on a different port: `PORT=3308 9remote` **"Cloudflare tunnel failed to start"** - Check internet connection - `cloudflared` auto-installed on first run β€” if it fails, install manually: [cloudflared docs](https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/downloads/) **"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](https://www.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](https://9remote.cc) - **Documentation:** [docs.9remote.cc](https://docs.9remote.cc) - **NPM Package:** [npmjs.com/package/9remote](https://www.npmjs.com/package/9remote) - **GitHub:** [github.com/decolua/9remote](https://github.com/decolua/9remote) - **Issues:** [github.com/decolua/9remote/issues](https://github.com/decolua/9remote/issues) - **Facebook Community:** [facebook.com/groups/9teamvn](https://www.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**. ---
Built with ❀️ for developers who code from anywhere β€” bed, beach, or bus.