9remote 3.0.2 → 3.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +79 -33
- package/dist/cli.cjs +62 -62
- package/dist/ptyDaemon.cjs +7 -7
- package/dist/server.cjs +206 -187
- package/dist/ui/assets/index-B3Etxg9r.js +8 -0
- package/dist/ui/index.html +1 -1
- package/dist/web/404.html +1 -1
- package/dist/web/__next.__PAGE__.txt +2 -2
- package/dist/web/__next._full.txt +7 -7
- package/dist/web/__next._head.txt +1 -1
- package/dist/web/__next._index.txt +6 -6
- package/dist/web/__next._tree.txt +2 -2
- package/dist/web/_next/static/chunks/1750.a35b00a05b21d196.js +1 -0
- package/dist/web/_next/static/chunks/3973-2b22a02354eb3d07.js +1 -0
- package/dist/web/_next/static/chunks/6552-5bb346448e83e0a2.js +1 -0
- package/dist/web/_next/static/chunks/{8334-0e9493cfa1547244.js → 8334-eeba96b49fa7e52d.js} +1 -1
- package/dist/web/_next/static/chunks/8529-dc6ec7164d23d48e.js +1 -0
- package/dist/web/_next/static/chunks/9958-4e13af15ce454c7a.js +1 -0
- package/dist/web/_next/static/chunks/app/admin/admins/{page-0f20b93a1fbe900c.js → page-b68025e0c5fe453c.js} +1 -1
- package/dist/web/_next/static/chunks/app/admin/login/page-38d9b3d31ee14847.js +1 -0
- package/dist/web/_next/static/chunks/app/admin/modes/{page-8f292692166b56fc.js → page-7ebdbd17bfde67fd.js} +1 -1
- package/dist/web/_next/static/chunks/app/admin/ota/{page-c9fe76f24ac08288.js → page-b237f7c870eeade4.js} +1 -1
- package/dist/web/_next/static/chunks/app/admin/{page-622381f5dac39ddb.js → page-a197e50c2b5a08f4.js} +1 -1
- package/dist/web/_next/static/chunks/app/admin/turn/{page-8f6b835a319f3fe3.js → page-dc625ee476578675.js} +1 -1
- package/dist/web/_next/static/chunks/app/dev/question/page-db919ed1d6babdb4.js +1 -0
- package/dist/web/_next/static/chunks/app/{layout-341400810c81f67e.js → layout-ec53a1a0c4b3e99e.js} +1 -1
- package/dist/web/_next/static/chunks/app/login/{page-3e24e4b0ca0a7df2.js → page-e2c75b449a40fc02.js} +1 -1
- package/dist/web/_next/static/chunks/app/page-24d612a793ea7763.js +22 -0
- package/dist/web/_next/static/chunks/app/workspace/layout-f5d5ba72458fb2a7.js +14 -0
- package/dist/web/_next/static/chunks/{webpack-c971919003362f96.js → webpack-210219beafaa52a1.js} +1 -1
- package/dist/web/_next/static/css/3bb9c5823a043a03.css +1 -0
- package/dist/web/_not-found/__next._full.txt +6 -6
- package/dist/web/_not-found/__next._head.txt +1 -1
- package/dist/web/_not-found/__next._index.txt +6 -6
- package/dist/web/_not-found/__next._not-found.__PAGE__.txt +1 -1
- package/dist/web/_not-found/__next._not-found.txt +1 -1
- package/dist/web/_not-found/__next._tree.txt +2 -2
- package/dist/web/_not-found.html +1 -1
- package/dist/web/_not-found.txt +6 -6
- package/dist/web/admin/__next._full.txt +7 -7
- package/dist/web/admin/__next._head.txt +1 -1
- package/dist/web/admin/__next._index.txt +6 -6
- package/dist/web/admin/__next._tree.txt +2 -2
- package/dist/web/admin/__next.admin.__PAGE__.txt +2 -2
- package/dist/web/admin/__next.admin.txt +1 -1
- package/dist/web/admin/admins/__next._full.txt +7 -7
- package/dist/web/admin/admins/__next._head.txt +1 -1
- package/dist/web/admin/admins/__next._index.txt +6 -6
- package/dist/web/admin/admins/__next._tree.txt +2 -2
- package/dist/web/admin/admins/__next.admin.admins.__PAGE__.txt +2 -2
- package/dist/web/admin/admins/__next.admin.admins.txt +1 -1
- package/dist/web/admin/admins/__next.admin.txt +1 -1
- package/dist/web/admin/admins.html +1 -1
- package/dist/web/admin/admins.txt +7 -7
- package/dist/web/admin/login/__next._full.txt +7 -7
- package/dist/web/admin/login/__next._head.txt +1 -1
- package/dist/web/admin/login/__next._index.txt +6 -6
- package/dist/web/admin/login/__next._tree.txt +2 -2
- package/dist/web/admin/login/__next.admin.login.__PAGE__.txt +2 -2
- package/dist/web/admin/login/__next.admin.login.txt +1 -1
- package/dist/web/admin/login/__next.admin.txt +1 -1
- package/dist/web/admin/login.html +1 -1
- package/dist/web/admin/login.txt +7 -7
- package/dist/web/admin/modes/__next._full.txt +7 -7
- package/dist/web/admin/modes/__next._head.txt +1 -1
- package/dist/web/admin/modes/__next._index.txt +6 -6
- package/dist/web/admin/modes/__next._tree.txt +2 -2
- package/dist/web/admin/modes/__next.admin.modes.__PAGE__.txt +2 -2
- package/dist/web/admin/modes/__next.admin.modes.txt +1 -1
- package/dist/web/admin/modes/__next.admin.txt +1 -1
- package/dist/web/admin/modes.html +1 -1
- package/dist/web/admin/modes.txt +7 -7
- package/dist/web/admin/ota/__next._full.txt +7 -7
- package/dist/web/admin/ota/__next._head.txt +1 -1
- package/dist/web/admin/ota/__next._index.txt +6 -6
- package/dist/web/admin/ota/__next._tree.txt +2 -2
- package/dist/web/admin/ota/__next.admin.ota.__PAGE__.txt +2 -2
- package/dist/web/admin/ota/__next.admin.ota.txt +1 -1
- package/dist/web/admin/ota/__next.admin.txt +1 -1
- package/dist/web/admin/ota.html +1 -1
- package/dist/web/admin/ota.txt +7 -7
- package/dist/web/admin/turn/__next._full.txt +7 -7
- package/dist/web/admin/turn/__next._head.txt +1 -1
- package/dist/web/admin/turn/__next._index.txt +6 -6
- package/dist/web/admin/turn/__next._tree.txt +2 -2
- package/dist/web/admin/turn/__next.admin.turn.__PAGE__.txt +2 -2
- package/dist/web/admin/turn/__next.admin.turn.txt +1 -1
- package/dist/web/admin/turn/__next.admin.txt +1 -1
- package/dist/web/admin/turn.html +1 -1
- package/dist/web/admin/turn.txt +7 -7
- package/dist/web/admin.html +1 -1
- package/dist/web/admin.txt +7 -7
- package/dist/web/agent-icons/antigravity-ui.png +0 -0
- package/dist/web/agent-icons/omp-ui.svg +1 -0
- package/dist/web/agent-icons/opencode-ui.png +0 -0
- package/dist/web/dev/question/__next._full.txt +7 -7
- package/dist/web/dev/question/__next._head.txt +1 -1
- package/dist/web/dev/question/__next._index.txt +6 -6
- package/dist/web/dev/question/__next._tree.txt +2 -2
- package/dist/web/dev/question/__next.dev.question.__PAGE__.txt +2 -2
- package/dist/web/dev/question/__next.dev.question.txt +1 -1
- package/dist/web/dev/question/__next.dev.txt +1 -1
- package/dist/web/dev/question.html +1 -1
- package/dist/web/dev/question.txt +7 -7
- package/dist/web/index.html +1 -1
- package/dist/web/index.txt +7 -7
- package/dist/web/login/__next._full.txt +7 -7
- package/dist/web/login/__next._head.txt +1 -1
- package/dist/web/login/__next._index.txt +6 -6
- package/dist/web/login/__next._tree.txt +2 -2
- package/dist/web/login/__next.login.__PAGE__.txt +2 -2
- package/dist/web/login/__next.login.txt +1 -1
- package/dist/web/login.html +1 -1
- package/dist/web/login.txt +7 -7
- package/dist/web/workspace/__next._full.txt +7 -7
- package/dist/web/workspace/__next._head.txt +1 -1
- package/dist/web/workspace/__next._index.txt +6 -6
- package/dist/web/workspace/__next._tree.txt +2 -2
- package/dist/web/workspace/__next.workspace.__PAGE__.txt +1 -1
- package/dist/web/workspace/__next.workspace.txt +2 -2
- package/dist/web/workspace/browse/__next._full.txt +7 -7
- package/dist/web/workspace/browse/__next._head.txt +1 -1
- package/dist/web/workspace/browse/__next._index.txt +6 -6
- package/dist/web/workspace/browse/__next._tree.txt +2 -2
- package/dist/web/workspace/browse/__next.workspace.browse.__PAGE__.txt +1 -1
- package/dist/web/workspace/browse/__next.workspace.browse.txt +1 -1
- package/dist/web/workspace/browse/__next.workspace.txt +2 -2
- package/dist/web/workspace/browse.html +1 -1
- package/dist/web/workspace/browse.txt +7 -7
- package/dist/web/workspace/editor/__next._full.txt +7 -7
- package/dist/web/workspace/editor/__next._head.txt +1 -1
- package/dist/web/workspace/editor/__next._index.txt +6 -6
- package/dist/web/workspace/editor/__next._tree.txt +2 -2
- package/dist/web/workspace/editor/__next.workspace.editor.__PAGE__.txt +1 -1
- package/dist/web/workspace/editor/__next.workspace.editor.txt +1 -1
- package/dist/web/workspace/editor/__next.workspace.txt +2 -2
- package/dist/web/workspace/editor.html +1 -1
- package/dist/web/workspace/editor.txt +7 -7
- package/dist/web/workspace/files/__next._full.txt +7 -7
- package/dist/web/workspace/files/__next._head.txt +1 -1
- package/dist/web/workspace/files/__next._index.txt +6 -6
- package/dist/web/workspace/files/__next._tree.txt +2 -2
- package/dist/web/workspace/files/__next.workspace.files.__PAGE__.txt +1 -1
- package/dist/web/workspace/files/__next.workspace.files.txt +1 -1
- package/dist/web/workspace/files/__next.workspace.txt +2 -2
- package/dist/web/workspace/files.html +1 -1
- package/dist/web/workspace/files.txt +7 -7
- package/dist/web/workspace/git/__next._full.txt +7 -7
- package/dist/web/workspace/git/__next._head.txt +1 -1
- package/dist/web/workspace/git/__next._index.txt +6 -6
- package/dist/web/workspace/git/__next._tree.txt +2 -2
- package/dist/web/workspace/git/__next.workspace.git.__PAGE__.txt +1 -1
- package/dist/web/workspace/git/__next.workspace.git.txt +1 -1
- package/dist/web/workspace/git/__next.workspace.txt +2 -2
- package/dist/web/workspace/git.html +1 -1
- package/dist/web/workspace/git.txt +7 -7
- package/dist/web/workspace/mobile/__next._full.txt +7 -7
- package/dist/web/workspace/mobile/__next._head.txt +1 -1
- package/dist/web/workspace/mobile/__next._index.txt +6 -6
- package/dist/web/workspace/mobile/__next._tree.txt +2 -2
- package/dist/web/workspace/mobile/__next.workspace.mobile.__PAGE__.txt +1 -1
- package/dist/web/workspace/mobile/__next.workspace.mobile.txt +1 -1
- package/dist/web/workspace/mobile/__next.workspace.txt +2 -2
- package/dist/web/workspace/mobile.html +1 -1
- package/dist/web/workspace/mobile.txt +7 -7
- package/dist/web/workspace/remote/__next._full.txt +7 -7
- package/dist/web/workspace/remote/__next._head.txt +1 -1
- package/dist/web/workspace/remote/__next._index.txt +6 -6
- package/dist/web/workspace/remote/__next._tree.txt +2 -2
- package/dist/web/workspace/remote/__next.workspace.remote.__PAGE__.txt +1 -1
- package/dist/web/workspace/remote/__next.workspace.remote.txt +1 -1
- package/dist/web/workspace/remote/__next.workspace.txt +2 -2
- package/dist/web/workspace/remote.html +1 -1
- package/dist/web/workspace/remote.txt +7 -7
- package/dist/web/workspace/terminal/default/__next._full.txt +7 -7
- package/dist/web/workspace/terminal/default/__next._head.txt +1 -1
- package/dist/web/workspace/terminal/default/__next._index.txt +6 -6
- package/dist/web/workspace/terminal/default/__next._tree.txt +2 -2
- package/dist/web/workspace/terminal/default/__next.workspace.terminal.$d$sessionId.__PAGE__.txt +1 -1
- package/dist/web/workspace/terminal/default/__next.workspace.terminal.$d$sessionId.txt +1 -1
- package/dist/web/workspace/terminal/default/__next.workspace.terminal.txt +1 -1
- package/dist/web/workspace/terminal/default/__next.workspace.txt +2 -2
- package/dist/web/workspace/terminal/default.html +1 -1
- package/dist/web/workspace/terminal/default.txt +7 -7
- package/dist/web/workspace/workspaces/__next._full.txt +7 -7
- package/dist/web/workspace/workspaces/__next._head.txt +1 -1
- package/dist/web/workspace/workspaces/__next._index.txt +6 -6
- package/dist/web/workspace/workspaces/__next._tree.txt +2 -2
- package/dist/web/workspace/workspaces/__next.workspace.txt +2 -2
- package/dist/web/workspace/workspaces/__next.workspace.workspaces.__PAGE__.txt +1 -1
- package/dist/web/workspace/workspaces/__next.workspace.workspaces.txt +1 -1
- package/dist/web/workspace/workspaces.html +1 -1
- package/dist/web/workspace/workspaces.txt +7 -7
- package/dist/web/workspace.html +1 -1
- package/dist/web/workspace.txt +7 -7
- package/package.json +1 -1
- package/dist/ui/assets/index-Ckex1BQP.js +0 -8
- package/dist/web/_next/static/chunks/1750.f7ba3332b56a8e68.js +0 -1
- package/dist/web/_next/static/chunks/3973-3a61c2014e1b09b8.js +0 -1
- package/dist/web/_next/static/chunks/6552-a42cab8d91efbdea.js +0 -1
- package/dist/web/_next/static/chunks/7629-16de8d4154923623.js +0 -1
- package/dist/web/_next/static/chunks/8922-a9cee4a104876005.js +0 -1
- package/dist/web/_next/static/chunks/app/admin/login/page-dbcfb21ebbd0bb00.js +0 -1
- package/dist/web/_next/static/chunks/app/dev/question/page-5fd80ae293617365.js +0 -1
- package/dist/web/_next/static/chunks/app/page-35b671680baa15ac.js +0 -22
- package/dist/web/_next/static/chunks/app/workspace/layout-45760b58dab691e3.js +0 -14
- package/dist/web/_next/static/css/5c40e58137a11306.css +0 -1
- /package/dist/web/_next/static/{ddcA6fYUJfX5M6tasvU49 → -4kBSWRXKHPAs-s1ygA3F}/_buildManifest.js +0 -0
- /package/dist/web/_next/static/{ddcA6fYUJfX5M6tasvU49 → -4kBSWRXKHPAs-s1ygA3F}/_ssgManifest.js +0 -0
package/README.md
CHANGED
|
@@ -1,16 +1,22 @@
|
|
|
1
1
|
<div align="center">
|
|
2
|
-
<img src="https://raw.githubusercontent.com/decolua/9remote_public/main/images/
|
|
2
|
+
<img src="https://raw.githubusercontent.com/decolua/9remote_public/main/images/desktop-ide.webp" alt="9Remote desktop workspace: terminal, editor and AI agent panes side by side" width="900"/>
|
|
3
3
|
|
|
4
|
-
|
|
4
|
+
<p align="center">
|
|
5
|
+
<img src="https://raw.githubusercontent.com/decolua/9remote_public/main/images/mobile-1.webp" width="32%" alt="Claude Code on Phone"/>
|
|
6
|
+
<img src="https://raw.githubusercontent.com/decolua/9remote_public/main/images/mobile-2.webp" width="32%" alt="File Explorer on Phone"/>
|
|
7
|
+
<img src="https://raw.githubusercontent.com/decolua/9remote_public/main/images/mobile-3.webp" width="32%" alt="System Dashboard on Phone"/>
|
|
8
|
+
</p>
|
|
5
9
|
|
|
6
|
-
|
|
7
|
-
|
|
10
|
+
# 9Remote — Remote Everything, Vibecode Everywhere
|
|
11
|
+
|
|
12
|
+
**Your entire dev workstation in your pocket.**<br/>
|
|
13
|
+
**Remote IDE, 60fps Desktop, Visual File Explorer, Live Mobile Emulator, Zero-Config Localhost, and Remote Vibe Coding with 30+ AI agents on PC, Web, iPad, or phone.**
|
|
8
14
|
|
|
9
15
|
[](https://www.npmjs.com/package/9remote)
|
|
10
16
|
[](https://www.npmjs.com/package/9remote)
|
|
11
|
-
[](#-license)
|
|
12
18
|
|
|
13
|
-
[🚀 Quick Start](#-quick-start) • [✨ Superpowers](#-
|
|
19
|
+
[🚀 Quick Start](#-quick-start) • [📱 Platforms](#-supported-platforms) • [✨ 8 Superpowers](#-8-remote-superpowers) • [🛡️ Security](#-zero-trust-security-architecture) • [📊 Comparison](#-how-9remote-compares) • [🌐 Website](https://9remote.cc) • [📖 Docs](https://docs.9remote.cc)
|
|
14
20
|
</div>
|
|
15
21
|
|
|
16
22
|
---
|
|
@@ -24,7 +30,7 @@ npm install -g 9remote
|
|
|
24
30
|
9remote
|
|
25
31
|
```
|
|
26
32
|
|
|
27
|
-
🎉 **Scan the QR code with your phone camera (or open the link
|
|
33
|
+
🎉 **Scan the QR code with your phone camera (or open the link on any browser) → click "Approve" on your host → you're in!**
|
|
28
34
|
|
|
29
35
|
> **Works on macOS, Linux, and Windows.** Requires Node.js 18+.
|
|
30
36
|
> Zero configuration. No port forwarding. No account or signup required.
|
|
@@ -38,47 +44,86 @@ npm install -g 9remote
|
|
|
38
44
|
|
|
39
45
|
---
|
|
40
46
|
|
|
41
|
-
##
|
|
47
|
+
## 📱 Supported Platforms
|
|
42
48
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
49
|
+
| Platform | Host (Your Machine) | Client (Anywhere) | Download / Access |
|
|
50
|
+
|---|:---:|:---:|---|
|
|
51
|
+
| **macOS** | ✅ | ✅ | `npm i -g 9remote` or [Download .dmg](https://github.com/decolua/9remote/releases/latest/download/9Remote-macos-universal.dmg) |
|
|
52
|
+
| **Windows** | ✅ | ✅ | `npm i -g 9remote` or [Download .exe](https://github.com/decolua/9remote/releases/latest/download/9Remote-windows-x64-setup.exe) |
|
|
53
|
+
| **Linux** | ✅ | ✅ | `npm i -g 9remote` |
|
|
54
|
+
| **Web Browser** | — | ✅ | [`https://9remote.cc/login`](https://9remote.cc/login) *(Zero install, any browser)* |
|
|
55
|
+
| **iOS / iPadOS** | — | ✅ | Web / PWA (Add to Home Screen) *(Supports iPad keyboard & trackpad)* |
|
|
56
|
+
| **Android** | — | ✅ | Web / PWA (Add to Home Screen) *(Fullscreen dev mode)* |
|
|
57
|
+
|
|
58
|
+
---
|
|
59
|
+
|
|
60
|
+
## ✨ 8 Remote Superpowers
|
|
61
|
+
|
|
62
|
+
### 🤖 1. Remote Vibe Coding (AI-Ready)
|
|
63
|
+
- Run **Claude Code**, Cursor CLI, Aider, Codex & 30+ AI agents on the go.
|
|
64
|
+
- Built-in artifact inspector with live rendering for HTML, Markdown, and Mermaid diagrams.
|
|
65
|
+
- Dedicated AI shortcut triggers and multi-turn workflow tracking.
|
|
48
66
|
|
|
49
|
-
### 📱 2.
|
|
67
|
+
### 📱 2. Every Screen, Everywhere (Mobile Full Feature)
|
|
50
68
|
- Dedicated developer keyboard row (`Esc`, `Tab`, `Ctrl`, `Alt`, navigation arrows).
|
|
51
|
-
- Customizable
|
|
69
|
+
- Customizable shortcuts and fluid swipe navigation between sessions.
|
|
52
70
|
- Tactile haptic feedback on touch for responsive coding.
|
|
53
71
|
- Fully adaptive UI: Multi-column IDE on desktop/tablet, touch-first card view on mobile.
|
|
54
72
|
|
|
55
|
-
### 🖥️ 3.
|
|
73
|
+
### 🖥️ 3. 60fps Remote Desktop (WebRTC P2P)
|
|
56
74
|
- Hardware-accelerated screen streaming with ultra-low latency (<20ms).
|
|
57
75
|
- Mouse, touch, keyboard controls, and multi-monitor switching.
|
|
58
76
|
- Vastly lighter on battery and bandwidth than VNC, AnyDesk, or TeamViewer.
|
|
59
77
|
|
|
60
|
-
###
|
|
61
|
-
-
|
|
62
|
-
-
|
|
63
|
-
-
|
|
78
|
+
### 💻 4. Full Remote IDE & Multi-pane Terminal
|
|
79
|
+
- Multi-pane terminal rows with smooth drag-to-resize splitters.
|
|
80
|
+
- Integrated code editor with syntax highlighting and file tree.
|
|
81
|
+
- Visual Git status, diff viewer, and multi-worktree switcher.
|
|
64
82
|
|
|
65
83
|
### 📱 5. Live Remote Emulator
|
|
66
84
|
- Interactive remote stream for Android Emulator and iOS Simulator.
|
|
67
85
|
- Tap, swipe, and test mobile UI directly from your phone browser without sitting at your desk.
|
|
68
86
|
|
|
69
|
-
### 🌐 6.
|
|
87
|
+
### 🌐 6. Zero-Config Localhost Preview
|
|
70
88
|
- Built-in Service Worker bridge streams `localhost:3000` or `localhost:8080` to your mobile browser.
|
|
71
|
-
- Preview local web apps in real time with zero port forwarding
|
|
89
|
+
- Preview local web apps in real time with zero port forwarding, no ngrok tunnels, and zero public internet exposure.
|
|
72
90
|
|
|
73
|
-
###
|
|
91
|
+
### 📁 7. Visual File Explorer (Path-Jailed)
|
|
92
|
+
- Visual directory tree with instant fuzzy file search (⌘⇧P).
|
|
93
|
+
- Touch drag-and-drop file transfers (upload and download).
|
|
94
|
+
- Secured by strict path-jail boundaries keeping your host system safe.
|
|
95
|
+
|
|
96
|
+
### 🔄 8. Persistent PTY Daemon
|
|
74
97
|
- Background daemon keeps your shells and builds alive on the host.
|
|
75
98
|
- Switching networks (Wi-Fi to 4G), locking your phone, or closing tabs never kills your running tasks.
|
|
76
99
|
|
|
77
|
-
|
|
78
|
-
|
|
100
|
+
---
|
|
101
|
+
|
|
102
|
+
## 🛡️ Zero-Trust Security Architecture
|
|
103
|
+
|
|
104
|
+
9Remote uses 3 layers of zero-trust defense:
|
|
105
|
+
1. **Split-Key Pairing:** The key is split into HEAD and TAIL. The relay server only brokers the handshake with HEAD and never knows your secret TAIL.
|
|
79
106
|
2. **Direct WebRTC P2P:** Data flows directly device-to-device with X25519 + AES-256-GCM encryption.
|
|
80
107
|
3. **Physical Host Approval:** New devices cannot connect until you physically click "Approve" on your computer screen.
|
|
81
108
|
|
|
109
|
+
```mermaid
|
|
110
|
+
sequenceDiagram
|
|
111
|
+
autonumber
|
|
112
|
+
participant Client as Mobile / Web Client
|
|
113
|
+
participant Server as 9Remote Signaling Relay
|
|
114
|
+
participant Host as Host Machine (Agent)
|
|
115
|
+
|
|
116
|
+
Host->>Server: 1. Register HEAD (TAIL stays private on Host)
|
|
117
|
+
Client->>Server: 2. Request Host lookup with HEAD
|
|
118
|
+
Server-->>Client: 3. Return Host Public Key (Relay steps aside)
|
|
119
|
+
Note over Client,Host: Direct P2P Connection (WebRTC DataChannel)
|
|
120
|
+
Client->>Host: 4. Send encrypted TAIL (X25519 + AES-GCM)
|
|
121
|
+
Note over Host: Host verifies TAIL secret
|
|
122
|
+
Host-->>Host: 5. Physical Security Prompt: "Approve Device?"
|
|
123
|
+
Note over Host: You click Approve on host screen
|
|
124
|
+
Host-->>Client: 6. Secure P2P Session Established (<20ms latency)
|
|
125
|
+
```
|
|
126
|
+
|
|
82
127
|
---
|
|
83
128
|
|
|
84
129
|
## 📊 How 9Remote Compares
|
|
@@ -87,25 +132,26 @@ npm install -g 9remote
|
|
|
87
132
|
|---------|:-----------:|:-------------:|:----------:|:-------------:|:-------:|
|
|
88
133
|
| **Zero Config** | ✅ | ✅ | ✅ | ✅ | ❌ |
|
|
89
134
|
| **Remote IDE** | ✅ | ❌ | ❌ | ❌ | ❌ |
|
|
135
|
+
| **30+ AI Agents & Vibe Coding** | ✅ | ✅ | ❌ | ❌ | ❌ |
|
|
90
136
|
| **Terminal Access** | ✅ | ✅ | ❌ | ❌ | ✅ |
|
|
91
137
|
| **Persistent Daemon** | ✅ | ✅ | ❌ | ❌ | ✅ |
|
|
92
138
|
| **Remote Localhost Preview** | ✅ | ❌ | ❌ | ❌ | ❌ |
|
|
93
139
|
| **Touch File Explorer & Editor** | ✅ | ❌ | ✅ | ❌ | ✅ |
|
|
94
|
-
| **Remote Desktop** | ✅ | ❌ | ✅ | ✅ | ❌ |
|
|
140
|
+
| **Remote Desktop (60fps)** | ✅ | ❌ | ✅ | ✅ | ❌ |
|
|
95
141
|
| **Remote Emulator** | ✅ | ❌ | ❌ | ❌ | ❌ |
|
|
96
142
|
| **AI Agent Artifacts** | ✅ | ✅ | ❌ | ❌ | ❌ |
|
|
97
143
|
| **Physical Host Approval** | ✅ | ❌ | ✅ | ❌ | ❌ |
|
|
98
144
|
| **Git Integration** | ✅ | ❌ | ❌ | ❌ | ❌ |
|
|
99
|
-
| **Mobile Optimized** | ✅ | ✅ | ❌ | ❌ | ✅ |
|
|
100
|
-
| **Browser-Based** | ✅ | ✅ | ❌ | ✅ | ❌ |
|
|
145
|
+
| **Mobile & iPad Optimized** | ✅ | ✅ | ❌ | ❌ | ✅ |
|
|
146
|
+
| **Browser-Based (Zero Install)** | ✅ | ✅ | ❌ | ✅ | ❌ |
|
|
101
147
|
| **QR Login** | ✅ | ✅ | ❌ | ❌ | ❌ |
|
|
102
148
|
| **Auto Tunnel** | ✅ | ✅ | ✅ | ✅ | ❌ |
|
|
103
149
|
| **No Port Forwarding** | ✅ | ✅ | ✅ | ✅ | ❌ |
|
|
104
150
|
| **No Account Required** | ✅ | ❌ | ❌ | ❌ | ❌ |
|
|
105
|
-
| **Free &
|
|
106
|
-
| **TOTAL** | **
|
|
151
|
+
| **Free & Self-Hostable** | ✅ | ❌ | ❌ | ✅ | ❌ |
|
|
152
|
+
| **TOTAL** | **19 / 19** | 10 / 19 | 6 / 19 | 5 / 19 | 5 / 19 |
|
|
107
153
|
|
|
108
|
-
> **🏆 9Remote: Complete
|
|
154
|
+
> **🏆 9Remote: Complete 19/19 capabilities · 100% self-hosted & private.**
|
|
109
155
|
|
|
110
156
|
---
|
|
111
157
|
|
|
@@ -133,7 +179,7 @@ npm install -g 9remote
|
|
|
133
179
|
<details>
|
|
134
180
|
<summary><b>💰 Is it free?</b></summary>
|
|
135
181
|
|
|
136
|
-
**Yes.** 9Remote is free
|
|
182
|
+
**Yes.** 9Remote is free for personal, internal, and commercial use inside your organization.
|
|
137
183
|
</details>
|
|
138
184
|
|
|
139
185
|
<details>
|
|
@@ -152,4 +198,4 @@ Works with any CLI AI tool: **Claude Code**, Cursor CLI, Aider, Codex, OpenClaw,
|
|
|
152
198
|
|
|
153
199
|
## 📄 License
|
|
154
200
|
|
|
155
|
-
|
|
201
|
+
Business Source License 1.1 — see [LICENSE](https://github.com/decolua/9remote/blob/main/LICENSE). Free for personal, internal, and commercial use.
|