
# 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:**
```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.