9remote 2.5.8 → 3.0.0

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.
Files changed (597) hide show
  1. package/README.md +91 -172
  2. package/dist/assets/trayIcon.ico +0 -0
  3. package/dist/cli.cjs +102 -101
  4. package/dist/ptyDaemon.cjs +10 -9
  5. package/dist/server.cjs +307 -139
  6. package/dist/ui/agents/codex.svg +1 -1
  7. package/dist/ui/assets/index-CAvf0VPf.css +1 -0
  8. package/dist/ui/assets/index-EXcI2V_p.js +8 -0
  9. package/dist/ui/favicon.ico +0 -0
  10. package/dist/ui/index.html +12 -4
  11. package/dist/vendor/scrcpy-server-v3.1 +0 -0
  12. package/dist/web/404.html +1 -0
  13. package/dist/web/__next.__PAGE__.txt +9 -0
  14. package/dist/web/__next._full.txt +25 -0
  15. package/dist/web/__next._head.txt +6 -0
  16. package/dist/web/__next._index.txt +10 -0
  17. package/dist/web/__next._tree.txt +5 -0
  18. package/dist/web/_next/static/AUHtJgkYALYyNwHop9pgT/_buildManifest.js +1 -0
  19. package/dist/web/_next/static/AUHtJgkYALYyNwHop9pgT/_ssgManifest.js +1 -0
  20. package/dist/web/_next/static/chunks/0a7753a9.4cb02a98e2e453b9.js +1 -0
  21. package/dist/web/_next/static/chunks/1222.aa4f7f7f397533e9.js +1 -0
  22. package/dist/web/_next/static/chunks/1228.d291278320bca9ca.js +1 -0
  23. package/dist/web/_next/static/chunks/1243.f35c2e6494079e05.js +1 -0
  24. package/dist/web/_next/static/chunks/1311.8c6b8930e22ceea0.js +1 -0
  25. package/dist/web/_next/static/chunks/132.6032826021079bce.js +1 -0
  26. package/dist/web/_next/static/chunks/133.1106654a28b5afda.js +1 -0
  27. package/dist/web/_next/static/chunks/1385.086b560acb0d7a68.js +115 -0
  28. package/dist/web/_next/static/chunks/1642.cac26d30ac331cb4.js +1 -0
  29. package/dist/web/_next/static/chunks/1733.f06c240b3ef8a428.js +77 -0
  30. package/dist/web/_next/static/chunks/1750.f7ba3332b56a8e68.js +1 -0
  31. package/dist/web/_next/static/chunks/1763.28beedca593b5e19.js +138 -0
  32. package/dist/web/_next/static/chunks/179.b9e8f385bd414d1c.js +62 -0
  33. package/dist/web/_next/static/chunks/1838.7c8990f903e3524a.js +215 -0
  34. package/dist/web/_next/static/chunks/20154aaa.868648f838e03bf1.js +1 -0
  35. package/dist/web/_next/static/chunks/2038.640b672702093b24.js +1 -0
  36. package/dist/web/_next/static/chunks/2112.d72eefbdf81659b3.js +23 -0
  37. package/dist/web/_next/static/chunks/2125.61c6e4a3541e30ad.js +1 -0
  38. package/dist/web/_next/static/chunks/2129.61afb2f4ff59e46a.js +24 -0
  39. package/dist/web/_next/static/chunks/213.68ce1361aee3281a.js +1 -0
  40. package/dist/web/_next/static/chunks/2179.3f55be0b79e3cca7.js +1 -0
  41. package/dist/web/_next/static/chunks/2180.e6bad8186f52ff89.js +1 -0
  42. package/dist/web/_next/static/chunks/2264.0fc1474d26067a01.js +1 -0
  43. package/dist/web/_next/static/chunks/2376.ed6302a91a9de1ae.js +36 -0
  44. package/dist/web/_next/static/chunks/2545.3ff192a933baf11e.js +1 -0
  45. package/dist/web/_next/static/chunks/2620.d17f4fac0eec88a5.js +1 -0
  46. package/dist/web/_next/static/chunks/2847.d3124853ca727b78.js +1 -0
  47. package/dist/web/_next/static/chunks/2849.f2bcad51c68e44b5.js +1 -0
  48. package/dist/web/_next/static/chunks/3189.64c6546d621eec0b.js +1 -0
  49. package/dist/web/_next/static/chunks/3348-9ef29f9cedf6c0df.js +1 -0
  50. package/dist/web/_next/static/chunks/3429.436b229808b33e81.js +1 -0
  51. package/dist/web/_next/static/chunks/3514.9643e815d690f2fb.js +1 -0
  52. package/dist/web/_next/static/chunks/3552.8dd9a3d2c3bcef65.js +86 -0
  53. package/dist/web/_next/static/chunks/3606.b59e695fd05b4eb3.js +74 -0
  54. package/dist/web/_next/static/chunks/3692.8c6b8930e22ceea0.js +1 -0
  55. package/dist/web/_next/static/chunks/3736.4a5662ceeecc6acb.js +94 -0
  56. package/dist/web/_next/static/chunks/392.842b338137824bb8.js +1 -0
  57. package/dist/web/_next/static/chunks/3973-9b18bcd9afc0bcb4.js +1 -0
  58. package/dist/web/_next/static/chunks/3977.8cfd8dec4cb8e893.js +1 -0
  59. package/dist/web/_next/static/chunks/4090.441fa61655da9b38.js +1 -0
  60. package/dist/web/_next/static/chunks/4303.54c4aa0b89834fc6.js +1 -0
  61. package/dist/web/_next/static/chunks/4314.6bbd89507909cad1.js +1 -0
  62. package/dist/web/_next/static/chunks/4551.d0d6723cacfb90b9.js +226 -0
  63. package/dist/web/_next/static/chunks/4566.d8e009823b8647d1.js +90 -0
  64. package/dist/web/_next/static/chunks/4643.dbb152682d076617.js +1 -0
  65. package/dist/web/_next/static/chunks/4732-76a574510722b2c3.js +11 -0
  66. package/dist/web/_next/static/chunks/4924.3f5c77a103ac69a9.js +8 -0
  67. package/dist/web/_next/static/chunks/4930.42e564644c94a93b.js +1 -0
  68. package/dist/web/_next/static/chunks/5155.d7e8db52ab4c95e0.js +27 -0
  69. package/dist/web/_next/static/chunks/5158-267908d069475cdc.js +32 -0
  70. package/dist/web/_next/static/chunks/543.5636e97aa68eb9c8.js +41 -0
  71. package/dist/web/_next/static/chunks/5506.98304a1821200439.js +1 -0
  72. package/dist/web/_next/static/chunks/5622.5ead5e748ecedbd1.js +1 -0
  73. package/dist/web/_next/static/chunks/565f33a6-fd3410bd29f39fdf.js +1 -0
  74. package/dist/web/_next/static/chunks/5708.22b4531ceebf3eca.js +1 -0
  75. package/dist/web/_next/static/chunks/5804.ff72a927135eb74c.js +93 -0
  76. package/dist/web/_next/static/chunks/588.78e2528ff24df85c.js +287 -0
  77. package/dist/web/_next/static/chunks/6001.e5bcb28bb9ce6571.js +1 -0
  78. package/dist/web/_next/static/chunks/6075.a6b8434732056526.js +1 -0
  79. package/dist/web/_next/static/chunks/6180.82fa683aa16f21df.js +1 -0
  80. package/dist/web/_next/static/chunks/6274.a3795ca6dacb3d62.js +32 -0
  81. package/dist/web/_next/static/chunks/635-d6ae421935055337.js +1 -0
  82. package/dist/web/_next/static/chunks/6419.842467d9a877e770.js +1 -0
  83. package/dist/web/_next/static/chunks/6420.bfa7bc86d03dcefc.js +1 -0
  84. package/dist/web/_next/static/chunks/6552-145e634541b5b66c.js +1 -0
  85. package/dist/web/_next/static/chunks/6647.740ec32a32201eab.js +64 -0
  86. package/dist/web/_next/static/chunks/6730.88fc6f2ccc49496c.js +1 -0
  87. package/dist/web/_next/static/chunks/6739.82570eba0a02cb26.js +1 -0
  88. package/dist/web/_next/static/chunks/674.2b5ffad0676aedbe.js +1 -0
  89. package/dist/web/_next/static/chunks/6742.8e137138a5d1c9e1.js +1 -0
  90. package/dist/web/_next/static/chunks/6987.743a63813c6288ce.js +79 -0
  91. package/dist/web/_next/static/chunks/7202.dad90ce4a1d78f67.js +1 -0
  92. package/dist/web/_next/static/chunks/7233.0f252f6c1cce8058.js +1 -0
  93. package/dist/web/_next/static/chunks/7248.d89bf328a0dc1b4c.js +1 -0
  94. package/dist/web/_next/static/chunks/7263.6f224c3924155294.js +1 -0
  95. package/dist/web/_next/static/chunks/7341.6958eac888a96823.js +34 -0
  96. package/dist/web/_next/static/chunks/7424.c8c9f85c8ea65885.js +1 -0
  97. package/dist/web/_next/static/chunks/7507.1204ae29f46e3f01.js +1 -0
  98. package/dist/web/_next/static/chunks/7629-16de8d4154923623.js +1 -0
  99. package/dist/web/_next/static/chunks/7811.19082afa63eb73ba.js +1 -0
  100. package/dist/web/_next/static/chunks/7853.d01982fa0afc1ee2.js +24 -0
  101. package/dist/web/_next/static/chunks/7908.432ab9feeb9ae756.js +1 -0
  102. package/dist/web/_next/static/chunks/7960.3b1c77b882ba4bb1.js +1 -0
  103. package/dist/web/_next/static/chunks/7967.6c62be01fad1603c.js +1 -0
  104. package/dist/web/_next/static/chunks/7c89255b.f727562586fa21cc.js +153 -0
  105. package/dist/web/_next/static/chunks/8044.5f87392585c9f3e4.js +38 -0
  106. package/dist/web/_next/static/chunks/8054.feeb01b8acdb31d4.js +1 -0
  107. package/dist/web/_next/static/chunks/8115.68d46fb961c724e0.js +172 -0
  108. package/dist/web/_next/static/chunks/817.cd0f4d221eca4c8b.js +104 -0
  109. package/dist/web/_next/static/chunks/8334-0e9493cfa1547244.js +1 -0
  110. package/dist/web/_next/static/chunks/8467.f34d938a32d40325.js +1 -0
  111. package/dist/web/_next/static/chunks/8495.d6cea1be03635fa8.js +148 -0
  112. package/dist/web/_next/static/chunks/8516-b3694c9156666b12.js +152 -0
  113. package/dist/web/_next/static/chunks/8638.03c6480d4aaeb5b3.js +1 -0
  114. package/dist/web/_next/static/chunks/8716.1ad6febb58e8560e.js +1 -0
  115. package/dist/web/_next/static/chunks/8839.1ad64faf06fb4a33.js +1 -0
  116. package/dist/web/_next/static/chunks/8922-a9cee4a104876005.js +1 -0
  117. package/dist/web/_next/static/chunks/910.43be9c3be85c7fa0.js +21 -0
  118. package/dist/web/_next/static/chunks/925.7ef504ee39f11840.js +1 -0
  119. package/dist/web/_next/static/chunks/9259.f4337cbb56e2e0b6.js +1 -0
  120. package/dist/web/_next/static/chunks/9299.af2a95f6ece07482.js +1 -0
  121. package/dist/web/_next/static/chunks/9387.96263a2d1602a078.js +1 -0
  122. package/dist/web/_next/static/chunks/9568-0bfadca4fcb105aa.js +1 -0
  123. package/dist/web/_next/static/chunks/9641.f6f2982fc4b4735f.js +1 -0
  124. package/dist/web/_next/static/chunks/9675.be4a175f92aa2f26.js +1 -0
  125. package/dist/web/_next/static/chunks/9860.05fa134ae44699e0.js +1 -0
  126. package/dist/web/_next/static/chunks/9b87412a.d2cfae4121762dec.js +122 -0
  127. package/dist/web/_next/static/chunks/a012e9f0.7dbb2fe05ec0b816.js +82 -0
  128. package/dist/web/_next/static/chunks/a096f98a-5a93977f5f5de413.js +1 -0
  129. package/dist/web/_next/static/chunks/ab1da478.d051e56375dab6d8.js +1 -0
  130. package/dist/web/_next/static/chunks/adcd17ec-9a2791632136b67b.js +18 -0
  131. package/dist/web/_next/static/chunks/app/_global-error/page-5bd6526483106080.js +1 -0
  132. package/dist/web/_next/static/chunks/app/_not-found/page-877523282abd5a7c.js +1 -0
  133. package/dist/web/_next/static/chunks/app/admin/admins/page-0f20b93a1fbe900c.js +1 -0
  134. package/dist/web/_next/static/chunks/app/admin/login/page-dbcfb21ebbd0bb00.js +1 -0
  135. package/dist/web/_next/static/chunks/app/admin/modes/page-8f292692166b56fc.js +1 -0
  136. package/dist/web/_next/static/chunks/app/admin/ota/page-c9fe76f24ac08288.js +1 -0
  137. package/dist/web/_next/static/chunks/app/admin/page-622381f5dac39ddb.js +1 -0
  138. package/dist/web/_next/static/chunks/app/admin/turn/page-8f6b835a319f3fe3.js +1 -0
  139. package/dist/web/_next/static/chunks/app/dev/question/page-5fd80ae293617365.js +1 -0
  140. package/dist/web/_next/static/chunks/app/layout-341400810c81f67e.js +1 -0
  141. package/dist/web/_next/static/chunks/app/login/page-31786ee656da76b1.js +1 -0
  142. package/dist/web/_next/static/chunks/app/page-1cf39061b48db156.js +22 -0
  143. package/dist/web/_next/static/chunks/app/workspace/browse/page-5bd6526483106080.js +1 -0
  144. package/dist/web/_next/static/chunks/app/workspace/editor/page-5bd6526483106080.js +1 -0
  145. package/dist/web/_next/static/chunks/app/workspace/files/page-5bd6526483106080.js +1 -0
  146. package/dist/web/_next/static/chunks/app/workspace/git/page-5bd6526483106080.js +1 -0
  147. package/dist/web/_next/static/chunks/app/workspace/layout-5e8f95fbc4ebaa6b.js +14 -0
  148. package/dist/web/_next/static/chunks/app/workspace/mobile/page-5bd6526483106080.js +1 -0
  149. package/dist/web/_next/static/chunks/app/workspace/page-5bd6526483106080.js +1 -0
  150. package/dist/web/_next/static/chunks/app/workspace/remote/page-5bd6526483106080.js +1 -0
  151. package/dist/web/_next/static/chunks/app/workspace/terminal/[sessionId]/page-5bd6526483106080.js +1 -0
  152. package/dist/web/_next/static/chunks/app/workspace/workspaces/page-5bd6526483106080.js +1 -0
  153. package/dist/web/_next/static/chunks/bbfbfb6c.069db3c4cc981ed3.js +1 -0
  154. package/dist/web/_next/static/chunks/c7879cf7-0d16fce1674078f9.js +1 -0
  155. package/dist/web/_next/static/chunks/c7ea4e13.6153499d4c2fb1f2.js +1 -0
  156. package/dist/web/_next/static/chunks/cdcce140.7a440644c3dd52b8.js +1 -0
  157. package/dist/web/_next/static/chunks/da9a53d6.df25e193f1f5bcae.js +62 -0
  158. package/dist/web/_next/static/chunks/framework-42053c69543a55f9.js +1 -0
  159. package/dist/web/_next/static/chunks/main-255c95c36766ce86.js +5 -0
  160. package/dist/web/_next/static/chunks/main-app-1831d4f902c3fcb9.js +1 -0
  161. package/dist/web/_next/static/chunks/next/dist/client/components/builtin/app-error-5bd6526483106080.js +1 -0
  162. package/dist/web/_next/static/chunks/next/dist/client/components/builtin/forbidden-5bd6526483106080.js +1 -0
  163. package/dist/web/_next/static/chunks/next/dist/client/components/builtin/global-error-76800531999827bd.js +1 -0
  164. package/dist/web/_next/static/chunks/next/dist/client/components/builtin/not-found-5bd6526483106080.js +1 -0
  165. package/dist/web/_next/static/chunks/next/dist/client/components/builtin/unauthorized-5bd6526483106080.js +1 -0
  166. package/dist/web/_next/static/chunks/polyfills-42372ed130431b0a.js +1 -0
  167. package/dist/web/_next/static/chunks/webpack-c971919003362f96.js +1 -0
  168. package/dist/web/_next/static/css/56adcd4d72bf2d84.css +1 -0
  169. package/dist/web/_next/static/css/5c40e58137a11306.css +1 -0
  170. package/dist/web/_next/static/css/b496025c9cd768cc.css +1 -0
  171. package/dist/web/_next/static/media/013b72fa676f92e0-s.woff2 +0 -0
  172. package/dist/web/_next/static/media/22a5144ee8d83bca-s.p.woff2 +0 -0
  173. package/dist/web/_next/static/media/2b5b02fc7e511755-s.woff2 +0 -0
  174. package/dist/web/_next/static/media/65f03d54ccadf4a8-s.woff2 +0 -0
  175. package/dist/web/_next/static/media/7d4881bb7e1bf84d-s.p.woff2 +0 -0
  176. package/dist/web/_next/static/media/9766a7e9e2e0ad5a-s.woff2 +0 -0
  177. package/dist/web/_next/static/media/aa016aab0e6d1295-s.woff2 +0 -0
  178. package/dist/web/_next/static/media/b66cf8e69499582a-s.woff2 +0 -0
  179. package/dist/web/_next/static/media/b9408752a0c24fb9-s.woff2 +0 -0
  180. package/dist/web/_next/static/media/e038a29029a234f2-s.woff2 +0 -0
  181. package/dist/web/_next/static/media/f639721981034f88-s.woff2 +0 -0
  182. package/dist/web/_not-found/__next._full.txt +23 -0
  183. package/dist/web/_not-found/__next._head.txt +6 -0
  184. package/dist/web/_not-found/__next._index.txt +10 -0
  185. package/dist/web/_not-found/__next._not-found.__PAGE__.txt +5 -0
  186. package/dist/web/_not-found/__next._not-found.txt +5 -0
  187. package/dist/web/_not-found/__next._tree.txt +5 -0
  188. package/dist/web/_not-found.html +1 -0
  189. package/dist/web/_not-found.txt +23 -0
  190. package/dist/web/admin/__next._full.txt +27 -0
  191. package/dist/web/admin/__next._head.txt +6 -0
  192. package/dist/web/admin/__next._index.txt +10 -0
  193. package/dist/web/admin/__next._tree.txt +5 -0
  194. package/dist/web/admin/__next.admin.__PAGE__.txt +9 -0
  195. package/dist/web/admin/__next.admin.txt +5 -0
  196. package/dist/web/admin/admins/__next._full.txt +27 -0
  197. package/dist/web/admin/admins/__next._head.txt +6 -0
  198. package/dist/web/admin/admins/__next._index.txt +10 -0
  199. package/dist/web/admin/admins/__next._tree.txt +5 -0
  200. package/dist/web/admin/admins/__next.admin.admins.__PAGE__.txt +9 -0
  201. package/dist/web/admin/admins/__next.admin.admins.txt +5 -0
  202. package/dist/web/admin/admins/__next.admin.txt +5 -0
  203. package/dist/web/admin/admins.html +1 -0
  204. package/dist/web/admin/admins.txt +27 -0
  205. package/dist/web/admin/login/__next._full.txt +27 -0
  206. package/dist/web/admin/login/__next._head.txt +6 -0
  207. package/dist/web/admin/login/__next._index.txt +10 -0
  208. package/dist/web/admin/login/__next._tree.txt +5 -0
  209. package/dist/web/admin/login/__next.admin.login.__PAGE__.txt +9 -0
  210. package/dist/web/admin/login/__next.admin.login.txt +5 -0
  211. package/dist/web/admin/login/__next.admin.txt +5 -0
  212. package/dist/web/admin/login.html +1 -0
  213. package/dist/web/admin/login.txt +27 -0
  214. package/dist/web/admin/modes/__next._full.txt +27 -0
  215. package/dist/web/admin/modes/__next._head.txt +6 -0
  216. package/dist/web/admin/modes/__next._index.txt +10 -0
  217. package/dist/web/admin/modes/__next._tree.txt +5 -0
  218. package/dist/web/admin/modes/__next.admin.modes.__PAGE__.txt +9 -0
  219. package/dist/web/admin/modes/__next.admin.modes.txt +5 -0
  220. package/dist/web/admin/modes/__next.admin.txt +5 -0
  221. package/dist/web/admin/modes.html +1 -0
  222. package/dist/web/admin/modes.txt +27 -0
  223. package/dist/web/admin/ota/__next._full.txt +27 -0
  224. package/dist/web/admin/ota/__next._head.txt +6 -0
  225. package/dist/web/admin/ota/__next._index.txt +10 -0
  226. package/dist/web/admin/ota/__next._tree.txt +5 -0
  227. package/dist/web/admin/ota/__next.admin.ota.__PAGE__.txt +9 -0
  228. package/dist/web/admin/ota/__next.admin.ota.txt +5 -0
  229. package/dist/web/admin/ota/__next.admin.txt +5 -0
  230. package/dist/web/admin/ota.html +1 -0
  231. package/dist/web/admin/ota.txt +27 -0
  232. package/dist/web/admin/turn/__next._full.txt +27 -0
  233. package/dist/web/admin/turn/__next._head.txt +6 -0
  234. package/dist/web/admin/turn/__next._index.txt +10 -0
  235. package/dist/web/admin/turn/__next._tree.txt +5 -0
  236. package/dist/web/admin/turn/__next.admin.turn.__PAGE__.txt +9 -0
  237. package/dist/web/admin/turn/__next.admin.turn.txt +5 -0
  238. package/dist/web/admin/turn/__next.admin.txt +5 -0
  239. package/dist/web/admin/turn.html +1 -0
  240. package/dist/web/admin/turn.txt +27 -0
  241. package/dist/web/admin.html +1 -0
  242. package/dist/web/admin.txt +27 -0
  243. package/dist/web/agent-icons/aider.svg +1 -0
  244. package/dist/web/agent-icons/amp.png +0 -0
  245. package/dist/web/agent-icons/ante.png +0 -0
  246. package/dist/web/agent-icons/antigravity.png +0 -0
  247. package/dist/web/agent-icons/auggie.png +0 -0
  248. package/dist/web/agent-icons/autohand.png +0 -0
  249. package/dist/web/agent-icons/claude-ui.png +0 -0
  250. package/dist/web/agent-icons/claude.svg +1 -0
  251. package/dist/web/agent-icons/cline.png +0 -0
  252. package/dist/web/agent-icons/codebuff.png +0 -0
  253. package/dist/web/agent-icons/codex-ui.png +0 -0
  254. package/dist/web/agent-icons/codex.svg +1 -0
  255. package/dist/web/agent-icons/command-code.png +0 -0
  256. package/dist/web/agent-icons/continue.png +0 -0
  257. package/dist/web/agent-icons/copilot.png +0 -0
  258. package/dist/web/agent-icons/crush.png +0 -0
  259. package/dist/web/agent-icons/cursor.png +0 -0
  260. package/dist/web/agent-icons/devin.png +0 -0
  261. package/dist/web/agent-icons/droid.png +0 -0
  262. package/dist/web/agent-icons/gemini.png +0 -0
  263. package/dist/web/agent-icons/goose.png +0 -0
  264. package/dist/web/agent-icons/grok.png +0 -0
  265. package/dist/web/agent-icons/hermes.png +0 -0
  266. package/dist/web/agent-icons/kilo.png +0 -0
  267. package/dist/web/agent-icons/kimi.png +0 -0
  268. package/dist/web/agent-icons/kiro.png +0 -0
  269. package/dist/web/agent-icons/mimo-code.png +0 -0
  270. package/dist/web/agent-icons/mistral-vibe.png +0 -0
  271. package/dist/web/agent-icons/omp.svg +1 -0
  272. package/dist/web/agent-icons/openclaude.png +0 -0
  273. package/dist/web/agent-icons/openclaw.png +0 -0
  274. package/dist/web/agent-icons/opencode.png +0 -0
  275. package/dist/web/agent-icons/pi.svg +1 -0
  276. package/dist/web/agent-icons/prime-agent.png +0 -0
  277. package/dist/web/agent-icons/qwen-code.png +0 -0
  278. package/dist/web/agent-icons/rovo.png +0 -0
  279. package/dist/web/agent-icons/trae.png +0 -0
  280. package/dist/web/agents/claude.svg +1 -0
  281. package/dist/web/agents/codex.svg +1 -0
  282. package/dist/web/agents/gemini.svg +1 -0
  283. package/dist/web/agents/opencode.svg +1 -0
  284. package/dist/web/backgrounds/bg10.jpg +0 -0
  285. package/dist/web/backgrounds/bg11.jpg +0 -0
  286. package/dist/web/backgrounds/bg12.jpg +0 -0
  287. package/dist/web/backgrounds/bg13.jpg +0 -0
  288. package/dist/web/backgrounds/bg2.jpg +0 -0
  289. package/dist/web/backgrounds/bg3.jpg +0 -0
  290. package/dist/web/backgrounds/bg4.jpg +0 -0
  291. package/dist/web/backgrounds/bg5.jpg +0 -0
  292. package/dist/web/backgrounds/bg6.jpg +0 -0
  293. package/dist/web/backgrounds/bg7.jpg +0 -0
  294. package/dist/web/backgrounds/bg8.jpg +0 -0
  295. package/dist/web/backgrounds/bg9.jpg +0 -0
  296. package/dist/web/dev/question/__next._full.txt +27 -0
  297. package/dist/web/dev/question/__next._head.txt +6 -0
  298. package/dist/web/dev/question/__next._index.txt +10 -0
  299. package/dist/web/dev/question/__next._tree.txt +5 -0
  300. package/dist/web/dev/question/__next.dev.question.__PAGE__.txt +9 -0
  301. package/dist/web/dev/question/__next.dev.question.txt +5 -0
  302. package/dist/web/dev/question/__next.dev.txt +5 -0
  303. package/dist/web/dev/question.html +1 -0
  304. package/dist/web/dev/question.txt +27 -0
  305. package/dist/web/favicon.ico +0 -0
  306. package/dist/web/file.svg +1 -0
  307. package/dist/web/globe.svg +1 -0
  308. package/dist/web/icon-192.png +0 -0
  309. package/dist/web/icon-192.svg +3 -0
  310. package/dist/web/icon-512.png +0 -0
  311. package/dist/web/icon-512.svg +3 -0
  312. package/dist/web/icons/file-types/astro.svg +1 -0
  313. package/dist/web/icons/file-types/audio.svg +1 -0
  314. package/dist/web/icons/file-types/avif.svg +1 -0
  315. package/dist/web/icons/file-types/bat.svg +1 -0
  316. package/dist/web/icons/file-types/c.svg +1 -0
  317. package/dist/web/icons/file-types/cheader.svg +1 -0
  318. package/dist/web/icons/file-types/clojure.svg +1 -0
  319. package/dist/web/icons/file-types/clojurescript.svg +1 -0
  320. package/dist/web/icons/file-types/cloudfoundry.svg +1 -0
  321. package/dist/web/icons/file-types/cpp.svg +1 -0
  322. package/dist/web/icons/file-types/cppheader.svg +1 -0
  323. package/dist/web/icons/file-types/csharp.svg +1 -0
  324. package/dist/web/icons/file-types/css.svg +1 -0
  325. package/dist/web/icons/file-types/dartlang.svg +1 -0
  326. package/dist/web/icons/file-types/datadog.svg +1 -0
  327. package/dist/web/icons/file-types/default.svg +1 -0
  328. package/dist/web/icons/file-types/diff.svg +1 -0
  329. package/dist/web/icons/file-types/django.svg +1 -0
  330. package/dist/web/icons/file-types/docker.svg +1 -0
  331. package/dist/web/icons/file-types/dotenv.svg +1 -0
  332. package/dist/web/icons/file-types/editorconfig.svg +1 -0
  333. package/dist/web/icons/file-types/elixir.svg +1 -0
  334. package/dist/web/icons/file-types/erlang.svg +1 -0
  335. package/dist/web/icons/file-types/esphome.svg +1 -0
  336. package/dist/web/icons/file-types/font.svg +1 -0
  337. package/dist/web/icons/file-types/git.svg +1 -0
  338. package/dist/web/icons/file-types/gnu.svg +1 -0
  339. package/dist/web/icons/file-types/go.svg +1 -0
  340. package/dist/web/icons/file-types/graphql.svg +1 -0
  341. package/dist/web/icons/file-types/haskell.svg +1 -0
  342. package/dist/web/icons/file-types/html.svg +1 -0
  343. package/dist/web/icons/file-types/image.svg +1 -0
  344. package/dist/web/icons/file-types/ini.svg +1 -0
  345. package/dist/web/icons/file-types/janet.svg +1 -0
  346. package/dist/web/icons/file-types/jar.svg +1 -0
  347. package/dist/web/icons/file-types/java.svg +1 -0
  348. package/dist/web/icons/file-types/js.svg +1 -0
  349. package/dist/web/icons/file-types/json.svg +1 -0
  350. package/dist/web/icons/file-types/json5.svg +1 -0
  351. package/dist/web/icons/file-types/kotlin.svg +1 -0
  352. package/dist/web/icons/file-types/less.svg +1 -0
  353. package/dist/web/icons/file-types/license.svg +1 -0
  354. package/dist/web/icons/file-types/locale.svg +1 -0
  355. package/dist/web/icons/file-types/log.svg +1 -0
  356. package/dist/web/icons/file-types/lua.svg +1 -0
  357. package/dist/web/icons/file-types/markdown.svg +1 -0
  358. package/dist/web/icons/file-types/mdx.svg +1 -0
  359. package/dist/web/icons/file-types/npm.svg +1 -0
  360. package/dist/web/icons/file-types/objectivec.svg +1 -0
  361. package/dist/web/icons/file-types/ocaml.svg +1 -0
  362. package/dist/web/icons/file-types/parcel.svg +1 -0
  363. package/dist/web/icons/file-types/pddl_happenings.svg +1 -0
  364. package/dist/web/icons/file-types/pdf.svg +1 -0
  365. package/dist/web/icons/file-types/php.svg +1 -0
  366. package/dist/web/icons/file-types/powershell.svg +1 -0
  367. package/dist/web/icons/file-types/protobuf.svg +1 -0
  368. package/dist/web/icons/file-types/python.svg +1 -0
  369. package/dist/web/icons/file-types/r.svg +1 -0
  370. package/dist/web/icons/file-types/reactjs.svg +1 -0
  371. package/dist/web/icons/file-types/reactts.svg +1 -0
  372. package/dist/web/icons/file-types/ruby.svg +1 -0
  373. package/dist/web/icons/file-types/rust.svg +1 -0
  374. package/dist/web/icons/file-types/sass.svg +1 -0
  375. package/dist/web/icons/file-types/scala.svg +1 -0
  376. package/dist/web/icons/file-types/scss.svg +1 -0
  377. package/dist/web/icons/file-types/shell.svg +1 -0
  378. package/dist/web/icons/file-types/sql.svg +1 -0
  379. package/dist/web/icons/file-types/sqlite.svg +1 -0
  380. package/dist/web/icons/file-types/stylus.svg +1 -0
  381. package/dist/web/icons/file-types/svelte.svg +1 -0
  382. package/dist/web/icons/file-types/svg.svg +1 -0
  383. package/dist/web/icons/file-types/swift.svg +1 -0
  384. package/dist/web/icons/file-types/text.svg +1 -0
  385. package/dist/web/icons/file-types/toml.svg +1 -0
  386. package/dist/web/icons/file-types/typescript.svg +1 -0
  387. package/dist/web/icons/file-types/video.svg +1 -0
  388. package/dist/web/icons/file-types/vue.svg +1 -0
  389. package/dist/web/icons/file-types/xml.svg +1 -0
  390. package/dist/web/icons/file-types/yaml.svg +1 -0
  391. package/dist/web/icons/file-types/zip.svg +1 -0
  392. package/dist/web/icons/folder-types/android-open.svg +1 -0
  393. package/dist/web/icons/folder-types/android.svg +1 -0
  394. package/dist/web/icons/folder-types/api-open.svg +1 -0
  395. package/dist/web/icons/folder-types/api.svg +1 -0
  396. package/dist/web/icons/folder-types/app-open.svg +1 -0
  397. package/dist/web/icons/folder-types/app.svg +1 -0
  398. package/dist/web/icons/folder-types/asset-open.svg +1 -0
  399. package/dist/web/icons/folder-types/asset.svg +1 -0
  400. package/dist/web/icons/folder-types/azurepipelines-open.svg +1 -0
  401. package/dist/web/icons/folder-types/azurepipelines.svg +1 -0
  402. package/dist/web/icons/folder-types/blueprint-open.svg +1 -0
  403. package/dist/web/icons/folder-types/blueprint.svg +1 -0
  404. package/dist/web/icons/folder-types/bower-open.svg +1 -0
  405. package/dist/web/icons/folder-types/bower.svg +1 -0
  406. package/dist/web/icons/folder-types/component-open.svg +1 -0
  407. package/dist/web/icons/folder-types/component.svg +1 -0
  408. package/dist/web/icons/folder-types/config-open.svg +1 -0
  409. package/dist/web/icons/folder-types/config.svg +1 -0
  410. package/dist/web/icons/folder-types/controller-open.svg +1 -0
  411. package/dist/web/icons/folder-types/controller.svg +1 -0
  412. package/dist/web/icons/folder-types/css-open.svg +1 -0
  413. package/dist/web/icons/folder-types/css.svg +1 -0
  414. package/dist/web/icons/folder-types/db-open.svg +1 -0
  415. package/dist/web/icons/folder-types/db.svg +1 -0
  416. package/dist/web/icons/folder-types/default-open.svg +1 -0
  417. package/dist/web/icons/folder-types/default.svg +1 -0
  418. package/dist/web/icons/folder-types/dist-open.svg +1 -0
  419. package/dist/web/icons/folder-types/dist.svg +1 -0
  420. package/dist/web/icons/folder-types/docs-open.svg +1 -0
  421. package/dist/web/icons/folder-types/docs.svg +1 -0
  422. package/dist/web/icons/folder-types/fonts-open.svg +1 -0
  423. package/dist/web/icons/folder-types/fonts.svg +1 -0
  424. package/dist/web/icons/folder-types/git-open.svg +1 -0
  425. package/dist/web/icons/folder-types/git.svg +1 -0
  426. package/dist/web/icons/folder-types/github-open.svg +1 -0
  427. package/dist/web/icons/folder-types/github.svg +1 -0
  428. package/dist/web/icons/folder-types/helper-open.svg +1 -0
  429. package/dist/web/icons/folder-types/helper.svg +1 -0
  430. package/dist/web/icons/folder-types/hook-open.svg +1 -0
  431. package/dist/web/icons/folder-types/hook.svg +1 -0
  432. package/dist/web/icons/folder-types/husky-open.svg +1 -0
  433. package/dist/web/icons/folder-types/husky.svg +1 -0
  434. package/dist/web/icons/folder-types/idea-open.svg +1 -0
  435. package/dist/web/icons/folder-types/idea.svg +1 -0
  436. package/dist/web/icons/folder-types/images-open.svg +1 -0
  437. package/dist/web/icons/folder-types/images.svg +1 -0
  438. package/dist/web/icons/folder-types/interfaces-open.svg +1 -0
  439. package/dist/web/icons/folder-types/interfaces.svg +1 -0
  440. package/dist/web/icons/folder-types/ios-open.svg +1 -0
  441. package/dist/web/icons/folder-types/ios.svg +1 -0
  442. package/dist/web/icons/folder-types/library-open.svg +1 -0
  443. package/dist/web/icons/folder-types/library.svg +1 -0
  444. package/dist/web/icons/folder-types/locale-open.svg +1 -0
  445. package/dist/web/icons/folder-types/locale.svg +1 -0
  446. package/dist/web/icons/folder-types/middleware-open.svg +1 -0
  447. package/dist/web/icons/folder-types/middleware.svg +1 -0
  448. package/dist/web/icons/folder-types/model-open.svg +1 -0
  449. package/dist/web/icons/folder-types/model.svg +1 -0
  450. package/dist/web/icons/folder-types/node-open.svg +1 -0
  451. package/dist/web/icons/folder-types/node.svg +1 -0
  452. package/dist/web/icons/folder-types/public-open.svg +1 -0
  453. package/dist/web/icons/folder-types/public.svg +1 -0
  454. package/dist/web/icons/folder-types/redux-open.svg +1 -0
  455. package/dist/web/icons/folder-types/redux.svg +1 -0
  456. package/dist/web/icons/folder-types/route-open.svg +1 -0
  457. package/dist/web/icons/folder-types/route.svg +1 -0
  458. package/dist/web/icons/folder-types/script-open.svg +1 -0
  459. package/dist/web/icons/folder-types/script.svg +1 -0
  460. package/dist/web/icons/folder-types/seedkit-open.svg +1 -0
  461. package/dist/web/icons/folder-types/seedkit.svg +1 -0
  462. package/dist/web/icons/folder-types/server-open.svg +1 -0
  463. package/dist/web/icons/folder-types/server.svg +1 -0
  464. package/dist/web/icons/folder-types/services-open.svg +1 -0
  465. package/dist/web/icons/folder-types/services.svg +1 -0
  466. package/dist/web/icons/folder-types/src-open.svg +1 -0
  467. package/dist/web/icons/folder-types/src.svg +1 -0
  468. package/dist/web/icons/folder-types/story-open.svg +1 -0
  469. package/dist/web/icons/folder-types/story.svg +1 -0
  470. package/dist/web/icons/folder-types/style-open.svg +1 -0
  471. package/dist/web/icons/folder-types/style.svg +1 -0
  472. package/dist/web/icons/folder-types/template-open.svg +1 -0
  473. package/dist/web/icons/folder-types/template.svg +1 -0
  474. package/dist/web/icons/folder-types/test-open.svg +1 -0
  475. package/dist/web/icons/folder-types/test.svg +1 -0
  476. package/dist/web/icons/folder-types/theme-open.svg +1 -0
  477. package/dist/web/icons/folder-types/theme.svg +1 -0
  478. package/dist/web/icons/folder-types/tools-open.svg +1 -0
  479. package/dist/web/icons/folder-types/tools.svg +1 -0
  480. package/dist/web/icons/folder-types/typescript-open.svg +1 -0
  481. package/dist/web/icons/folder-types/typescript.svg +1 -0
  482. package/dist/web/icons/folder-types/typings-open.svg +1 -0
  483. package/dist/web/icons/folder-types/typings.svg +1 -0
  484. package/dist/web/icons/folder-types/view-open.svg +1 -0
  485. package/dist/web/icons/folder-types/view.svg +1 -0
  486. package/dist/web/icons/folder-types/vscode-open.svg +1 -0
  487. package/dist/web/icons/folder-types/vscode.svg +1 -0
  488. package/dist/web/index.html +1 -0
  489. package/dist/web/index.txt +25 -0
  490. package/dist/web/login/__next._full.txt +27 -0
  491. package/dist/web/login/__next._head.txt +6 -0
  492. package/dist/web/login/__next._index.txt +10 -0
  493. package/dist/web/login/__next._tree.txt +5 -0
  494. package/dist/web/login/__next.login.__PAGE__.txt +9 -0
  495. package/dist/web/login/__next.login.txt +5 -0
  496. package/dist/web/login.html +1 -0
  497. package/dist/web/login.txt +27 -0
  498. package/dist/web/manifest.json +53 -0
  499. package/dist/web/maskable-192.png +0 -0
  500. package/dist/web/maskable-512.png +0 -0
  501. package/dist/web/next.svg +1 -0
  502. package/dist/web/proxy.html +179 -0
  503. package/dist/web/screenshot-desktop.png +0 -0
  504. package/dist/web/screenshot-mobile.png +0 -0
  505. package/dist/web/screenshots/desktop-ide.webp +0 -0
  506. package/dist/web/screenshots/mobile-1.webp +0 -0
  507. package/dist/web/screenshots/mobile-2.webp +0 -0
  508. package/dist/web/screenshots/mobile-3.webp +0 -0
  509. package/dist/web/sw-site.js +283 -0
  510. package/dist/web/sw.js +88 -0
  511. package/dist/web/swBridgeClaim.js +57 -0
  512. package/dist/web/vercel.svg +1 -0
  513. package/dist/web/window.svg +1 -0
  514. package/dist/web/workspace/__next._full.txt +25 -0
  515. package/dist/web/workspace/__next._head.txt +6 -0
  516. package/dist/web/workspace/__next._index.txt +10 -0
  517. package/dist/web/workspace/__next._tree.txt +6 -0
  518. package/dist/web/workspace/__next.workspace.__PAGE__.txt +5 -0
  519. package/dist/web/workspace/__next.workspace.txt +8 -0
  520. package/dist/web/workspace/browse/__next._full.txt +27 -0
  521. package/dist/web/workspace/browse/__next._head.txt +6 -0
  522. package/dist/web/workspace/browse/__next._index.txt +10 -0
  523. package/dist/web/workspace/browse/__next._tree.txt +6 -0
  524. package/dist/web/workspace/browse/__next.workspace.browse.__PAGE__.txt +5 -0
  525. package/dist/web/workspace/browse/__next.workspace.browse.txt +5 -0
  526. package/dist/web/workspace/browse/__next.workspace.txt +8 -0
  527. package/dist/web/workspace/browse.html +1 -0
  528. package/dist/web/workspace/browse.txt +27 -0
  529. package/dist/web/workspace/editor/__next._full.txt +27 -0
  530. package/dist/web/workspace/editor/__next._head.txt +6 -0
  531. package/dist/web/workspace/editor/__next._index.txt +10 -0
  532. package/dist/web/workspace/editor/__next._tree.txt +6 -0
  533. package/dist/web/workspace/editor/__next.workspace.editor.__PAGE__.txt +5 -0
  534. package/dist/web/workspace/editor/__next.workspace.editor.txt +5 -0
  535. package/dist/web/workspace/editor/__next.workspace.txt +8 -0
  536. package/dist/web/workspace/editor.html +1 -0
  537. package/dist/web/workspace/editor.txt +27 -0
  538. package/dist/web/workspace/files/__next._full.txt +27 -0
  539. package/dist/web/workspace/files/__next._head.txt +6 -0
  540. package/dist/web/workspace/files/__next._index.txt +10 -0
  541. package/dist/web/workspace/files/__next._tree.txt +6 -0
  542. package/dist/web/workspace/files/__next.workspace.files.__PAGE__.txt +5 -0
  543. package/dist/web/workspace/files/__next.workspace.files.txt +5 -0
  544. package/dist/web/workspace/files/__next.workspace.txt +8 -0
  545. package/dist/web/workspace/files.html +1 -0
  546. package/dist/web/workspace/files.txt +27 -0
  547. package/dist/web/workspace/git/__next._full.txt +27 -0
  548. package/dist/web/workspace/git/__next._head.txt +6 -0
  549. package/dist/web/workspace/git/__next._index.txt +10 -0
  550. package/dist/web/workspace/git/__next._tree.txt +6 -0
  551. package/dist/web/workspace/git/__next.workspace.git.__PAGE__.txt +5 -0
  552. package/dist/web/workspace/git/__next.workspace.git.txt +5 -0
  553. package/dist/web/workspace/git/__next.workspace.txt +8 -0
  554. package/dist/web/workspace/git.html +1 -0
  555. package/dist/web/workspace/git.txt +27 -0
  556. package/dist/web/workspace/mobile/__next._full.txt +27 -0
  557. package/dist/web/workspace/mobile/__next._head.txt +6 -0
  558. package/dist/web/workspace/mobile/__next._index.txt +10 -0
  559. package/dist/web/workspace/mobile/__next._tree.txt +6 -0
  560. package/dist/web/workspace/mobile/__next.workspace.mobile.__PAGE__.txt +5 -0
  561. package/dist/web/workspace/mobile/__next.workspace.mobile.txt +5 -0
  562. package/dist/web/workspace/mobile/__next.workspace.txt +8 -0
  563. package/dist/web/workspace/mobile.html +1 -0
  564. package/dist/web/workspace/mobile.txt +27 -0
  565. package/dist/web/workspace/remote/__next._full.txt +27 -0
  566. package/dist/web/workspace/remote/__next._head.txt +6 -0
  567. package/dist/web/workspace/remote/__next._index.txt +10 -0
  568. package/dist/web/workspace/remote/__next._tree.txt +6 -0
  569. package/dist/web/workspace/remote/__next.workspace.remote.__PAGE__.txt +5 -0
  570. package/dist/web/workspace/remote/__next.workspace.remote.txt +5 -0
  571. package/dist/web/workspace/remote/__next.workspace.txt +8 -0
  572. package/dist/web/workspace/remote.html +1 -0
  573. package/dist/web/workspace/remote.txt +27 -0
  574. package/dist/web/workspace/terminal/default/__next._full.txt +27 -0
  575. package/dist/web/workspace/terminal/default/__next._head.txt +6 -0
  576. package/dist/web/workspace/terminal/default/__next._index.txt +10 -0
  577. package/dist/web/workspace/terminal/default/__next._tree.txt +6 -0
  578. package/dist/web/workspace/terminal/default/__next.workspace.terminal.$d$sessionId.__PAGE__.txt +5 -0
  579. package/dist/web/workspace/terminal/default/__next.workspace.terminal.$d$sessionId.txt +5 -0
  580. package/dist/web/workspace/terminal/default/__next.workspace.terminal.txt +5 -0
  581. package/dist/web/workspace/terminal/default/__next.workspace.txt +8 -0
  582. package/dist/web/workspace/terminal/default.html +1 -0
  583. package/dist/web/workspace/terminal/default.txt +27 -0
  584. package/dist/web/workspace/workspaces/__next._full.txt +27 -0
  585. package/dist/web/workspace/workspaces/__next._head.txt +6 -0
  586. package/dist/web/workspace/workspaces/__next._index.txt +10 -0
  587. package/dist/web/workspace/workspaces/__next._tree.txt +6 -0
  588. package/dist/web/workspace/workspaces/__next.workspace.txt +8 -0
  589. package/dist/web/workspace/workspaces/__next.workspace.workspaces.__PAGE__.txt +5 -0
  590. package/dist/web/workspace/workspaces/__next.workspace.workspaces.txt +5 -0
  591. package/dist/web/workspace/workspaces.html +1 -0
  592. package/dist/web/workspace/workspaces.txt +27 -0
  593. package/dist/web/workspace.html +1 -0
  594. package/dist/web/workspace.txt +25 -0
  595. package/package.json +4 -4
  596. package/dist/ui/assets/index-CcS6AXZF.css +0 -1
  597. package/dist/ui/assets/index-H_1CAVCP.js +0 -58
package/README.md CHANGED
@@ -1,236 +1,155 @@
1
1
  <div align="center">
2
- <img src="https://raw.githubusercontent.com/decolua/9remote/main/images/9remote.png" alt="9Remote" width="800"/>
2
+ <img src="https://raw.githubusercontent.com/decolua/9remote_public/main/images/screen.png" alt="9Remote Workspace" width="900"/>
3
3
 
4
- # 9Remote — Terminal in Your Pocket
4
+ # 9Remote — Code From Anywhere on Earth
5
5
 
6
- **Your Mac/Linux/Windows terminal, remote desktop, and file explorer — accessible from any phone or browser, anywhere, instantly.**
6
+ **Your entire dev machine, in your pocket.**<br/>
7
+ **Remote IDE, Remote Desktop, File Explorer, Mobile Emulator, and Localhost Preview — buttery-smooth on mobile with WebRTC ultra-low latency.**
7
8
 
8
9
  [![npm version](https://img.shields.io/npm/v/9remote.svg)](https://www.npmjs.com/package/9remote)
9
10
  [![Downloads](https://img.shields.io/npm/dm/9remote.svg)](https://www.npmjs.com/package/9remote)
10
11
  [![License](https://img.shields.io/badge/license-MIT-blue.svg)](#-license)
11
12
 
12
- [🚀 Quick Start](#-quick-start) • [💡 Features](#-features) • [🌐 Website](https://9remote.cc) • [📖 Docs](https://docs.9remote.cc)
13
+ [🚀 Quick Start](#-quick-start) • [✨ Superpowers](#-5-remote-superpowers--mobile-first) • [📊 Comparison](#-how-9remote-compares) • [🌐 Website](https://9remote.cc) • [📖 Docs](https://docs.9remote.cc)
13
14
  </div>
14
15
 
15
16
  ---
16
17
 
17
- ## 🤔 Why 9Remote?
18
-
19
- **Remote access today is painful:**
20
-
21
- - ❌ **SSH** — firewall rules, port forwarding, SSH keys
22
- - ❌ **VPN** — overkill just to check a terminal
23
- - ❌ **ngrok / tunnels** — expire, lose connection
24
- - ❌ **TeamViewer** — slow, desktop-only, paid
25
- - ❌ **Termius** — SSH-only, no desktop, no browser
26
-
27
- **9Remote solves all of it:**
28
-
29
- - ✅ **One command** — install, scan QR, done in 30 seconds
30
- - ✅ **Auto tunnel** — Cloudflare tunnel, no port forwarding
31
- - ✅ **All-in-one** — terminal + desktop + file explorer + editor
32
- - ✅ **Works on phone** — full workspace from browser, <50ms latency
33
- - ✅ **Persistent** — PTY sessions survive restarts
34
- - ✅ **Pair Device** — only approved devices connect, zero signup
35
-
36
- ---
37
-
38
18
  ## ⚡ Quick Start
39
19
 
20
+ Start your remote workspace in **30 seconds**:
21
+
40
22
  ```bash
41
23
  npm install -g 9remote
42
24
  9remote
43
25
  ```
44
26
 
45
- 🎉 **Scan the QR → pair your device → you're in.**
27
+ 🎉 **Scan the QR code with your phone camera (or open the link in any browser) → click "Approve" on your host → you're in!**
46
28
 
47
- > Works on **macOS, Linux, Windows**. Requires Node.js 20+.
29
+ > **Works on macOS, Linux, and Windows.** Requires Node.js 18+.
30
+ > Zero configuration. No port forwarding. No account or signup required.
48
31
 
49
- ### CLI Commands
32
+ ### CLI Modes
50
33
 
51
- | Command | Description |
52
- |---------|-------------|
53
- | `9remote` | TUI mode — interactive menu with QR code |
54
- | `9remote ui` | Web UI mode — opens dashboard at `localhost:2208` |
34
+ | Command | Mode | Description |
35
+ |---------|------|-------------|
36
+ | `9remote` | **TUI Mode** | Interactive terminal menu with QR code |
37
+ | `9remote ui` | **Web UI Mode** | Opens the host dashboard at `localhost:2208` |
55
38
 
56
39
  ---
57
40
 
58
- ## ✨ Features
59
-
60
- | Feature | What It Does |
61
- |---------|--------------|
62
- | 🖥️ **Remote Terminal** | Full PTY shell via WebSocket |
63
- | 🖱️ **Remote Desktop** | Live screen streaming via WebRTC |
64
- | 📁 **File Explorer** | Browse, upload, download files |
65
- | 💻 **Code Editor** | Built-in editor with syntax highlighting |
66
- | 🔗 **Git Integration** | Run git commands with visual status |
67
- | 📱 **Mobile Optimized** | Touch-friendly UI, gesture controls |
68
- | 🔑 **QR Login** | One-time 30-min key, scan to connect |
69
- | 🔒 **Auto Tunnel** | Cloudflare tunnel, no port forwarding |
70
- | 🔄 **Persistent Sessions** | PTY daemon survives restarts |
71
- | 🌍 **Multi-Device Sync** | Same session across phone/tablet/laptop |
72
- | 🔔 **Push Notifications** | Build finished? Get notified |
73
- | 🤖 **AI Integration** | Claude Code, Codex, Cursor, OpenClaw |
74
- | 🌐 **Local Sites Proxy** | Expose `localhost:3000` to phone |
75
- | 🔐 **Pair Device** | Approve each device before it connects |
76
- | 🆓 **No Account** | Machine ID + QR key, zero signup |
41
+ ## ✨ 5 Remote Superpowers + Mobile-First
77
42
 
78
- ---
43
+ ### 💻 1. Remote IDE & AI Agent Workspace
44
+ - Multi-pane terminal rows with smooth drag-to-resize splitters.
45
+ - Integrated code editor with syntax highlighting and file tree.
46
+ - Visual Git status, diff viewer, and multi-worktree switcher.
47
+ - Auto-opening artifact inspector for **Claude Code**, Codex, and CLI AI agents (HTML, Markdown, Mermaid).
79
48
 
80
- ## 🎯 Use Cases
81
-
82
- **Code from bed** — 11 PM, bug in prod, laptop in another room? Open the app on your phone, scan QR, fix, push, sleep.
83
-
84
- **Fix bugs at a cafe** — Production down, only phone + café Wi-Fi? Connect to your home Mac, tail logs, edit config, deploy.
85
-
86
- **Deploy on vacation** — Client needs a hotfix, you're on the beach? Phone → 9remote → git pull → deploy → back to the beach.
49
+ ### 📱 2. Code on Mobile, Web & Any Screen (Mobile Full Feature)
50
+ - Dedicated developer keyboard row (`Esc`, `Tab`, `Ctrl`, `Alt`, navigation arrows).
51
+ - Customizable AI shortcuts and fluid swipe navigation between sessions.
52
+ - Tactile haptic feedback on touch for responsive coding.
53
+ - Fully adaptive UI: Multi-column IDE on desktop/tablet, touch-first card view on mobile.
87
54
 
88
- **On-call engineer** — 3 AM alert, don't want to boot laptop? Push notification → terminal + remote desktop from bed.
55
+ ### 🖥️ 3. Instant Remote Desktop (WebRTC 60fps)
56
+ - Hardware-accelerated screen streaming with ultra-low latency (<20ms).
57
+ - Mouse, touch, keyboard controls, and multi-monitor switching.
58
+ - Vastly lighter on battery and bandwidth than VNC, AnyDesk, or TeamViewer.
89
59
 
90
- ---
91
-
92
- ## 📖 Setup
93
-
94
- <details>
95
- <summary><b>🔑 First Run & QR Login</b></summary>
60
+ ### 📁 4. Remote File Explorer
61
+ - Visual directory tree with instant fuzzy file search.
62
+ - Touch drag-and-drop file transfers (upload and download).
63
+ - Secured by path-jail boundaries keeping your host system safe.
96
64
 
97
- On first run, 9Remote generates two keys:
65
+ ### 📱 5. Live Remote Emulator
66
+ - Interactive remote stream for Android Emulator and iOS Simulator.
67
+ - Tap, swipe, and test mobile UI directly from your phone browser without sitting at your desk.
98
68
 
99
- - **Permanent Key** — stored locally, tied to your machine ID
100
- - **One-Time Key** — 30-minute temporary key for the QR code
69
+ ### 🌐 6. Instant Localhost Preview
70
+ - 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 and no ngrok tunnels.
101
72
 
102
- **Connect from phone:**
103
- 1. Run `9remote` on your machine
104
- 2. A QR code appears in the terminal
105
- 3. Open [9remote.cc](https://9remote.cc) on your phone (or the mobile app)
106
- 4. Scan the QR → connected instantly
73
+ ### 🔄 7. Persistent PTY Daemon
74
+ - Background daemon keeps your shells and builds alive on the host.
75
+ - Switching networks (Wi-Fi to 4G), locking your phone, or closing tabs never kills your running tasks.
107
76
 
108
- > Keys are **never** stored on our servers after the session ends.
77
+ ### 🛡️ 8. 3-Layer Zero-Trust Security
78
+ 1. **Split-Key Pairing:** The key is split into HEAD and TAIL; routing relay only sees HEAD and never knows your secret TAIL.
79
+ 2. **Direct WebRTC P2P:** Data flows directly device-to-device with X25519 + AES-256-GCM encryption.
80
+ 3. **Physical Host Approval:** New devices cannot connect until you physically click "Approve" on your computer screen.
109
81
 
110
- </details>
111
-
112
- <details>
113
- <summary><b>🖱️ Remote Desktop (macOS)</b></summary>
114
-
115
- Requires two system permissions:
116
-
117
- 1. **Screen Recording** — `System Settings → Privacy & Security → Screen Recording`
118
- 2. **Accessibility** — `System Settings → Privacy & Security → Accessibility`
119
-
120
- Enable Terminal (or the app you ran `9remote` from), then toggle Remote Desktop in the TUI menu.
121
-
122
- **Performance:**
123
- - Adaptive framerate: 60ms active / 400ms idle
124
- - Tile-based diff rendering (only changed regions sent)
125
- - WebRTC DataChannel for minimal latency
126
-
127
- </details>
82
+ ---
128
83
 
129
- <details>
130
- <summary><b>🌐 Local Sites Proxy</b></summary>
84
+ ## 📊 How 9Remote Compares
85
+
86
+ | Feature | **9Remote** | Claude Remote | TeamViewer | Chrome Remote | Termius |
87
+ |---------|:-----------:|:-------------:|:----------:|:-------------:|:-------:|
88
+ | **Zero Config** | ✅ | ✅ | ✅ | ✅ | ❌ |
89
+ | **Remote IDE** | ✅ | ❌ | ❌ | ❌ | ❌ |
90
+ | **Terminal Access** | ✅ | ✅ | ❌ | ❌ | ✅ |
91
+ | **Persistent Daemon** | ✅ | ✅ | ❌ | ❌ | ✅ |
92
+ | **Remote Localhost Preview** | ✅ | ❌ | ❌ | ❌ | ❌ |
93
+ | **Touch File Explorer & Editor** | ✅ | ❌ | ✅ | ❌ | ✅ |
94
+ | **Remote Desktop** | ✅ | ❌ | ✅ | ✅ | ❌ |
95
+ | **Remote Emulator** | ✅ | ❌ | ❌ | ❌ | ❌ |
96
+ | **AI Agent Artifacts** | ✅ | ✅ | ❌ | ❌ | ❌ |
97
+ | **Physical Host Approval** | ✅ | ❌ | ✅ | ❌ | ❌ |
98
+ | **Git Integration** | ✅ | ❌ | ❌ | ❌ | ❌ |
99
+ | **Mobile Optimized** | ✅ | ✅ | ❌ | ❌ | ✅ |
100
+ | **Browser-Based** | ✅ | ✅ | ❌ | ✅ | ❌ |
101
+ | **QR Login** | ✅ | ✅ | ❌ | ❌ | ❌ |
102
+ | **Auto Tunnel** | ✅ | ✅ | ✅ | ✅ | ❌ |
103
+ | **No Port Forwarding** | ✅ | ✅ | ✅ | ✅ | ❌ |
104
+ | **No Account Required** | ✅ | ❌ | ❌ | ❌ | ❌ |
105
+ | **Free & Open Source** | ✅ | ❌ | ❌ | ✅ | ❌ |
106
+ | **TOTAL** | **18 / 18** | 10 / 18 | 6 / 18 | 5 / 18 | 5 / 18 |
107
+
108
+ > **🏆 9Remote: Complete 18/18 capabilities · 100% self-hosted & private.**
131
109
 
132
- Expose your local dev servers automatically:
110
+ ---
133
111
 
134
- ```
135
- http://localhost:3000 → https://<tunnel>/proxy/3000/
136
- http://localhost:5173 → https://<tunnel>/proxy/5173/
137
- ```
112
+ ## 🎯 Use Cases
138
113
 
139
- Perfect for testing responsive design on real devices, sharing WIP builds, or mobile debugging without USB.
140
-
141
- </details>
114
+ - **Code from bed** — Fix a bug at 11 PM without getting out of bed. Open your phone, connect to your Mac, fix, commit, push, sleep.
115
+ - **Fix bugs at a cafe** — Server alert while having coffee? Connect from your phone or tablet, tail logs, edit configs, and restart services.
116
+ - **Deploy on vacation** — Urgent client hotfix while you're away? Phone → 9Remote → `git pull` → build → deploy.
117
+ - **Monitor AI Coding Agents** — Run long Claude Code / Cursor tasks on your desktop, and review artifacts, diffs, and progress from your phone.
142
118
 
143
119
  ---
144
120
 
145
121
  ## ❓ FAQ
146
122
 
147
123
  <details>
148
- <summary><b>🔒 Is it secure?</b></summary>
149
-
150
- **Yes.** Every new device must be explicitly approved via **Pair Device** before it can access the host. Plus:
151
- - No open ports — Cloudflare tunnel is outbound-only
152
- - Keys never stored on our servers after session ends
153
- - No terminal output, files, or screen data collected
154
- - One-time QR keys expire in 30 minutes
124
+ <summary><b>🔒 Is 9Remote secure?</b></summary>
155
125
 
126
+ **Yes.** 9Remote uses 3 layers of zero-trust defense:
127
+ - Outbound-only Cloudflare tunnel (no open ports or firewall changes needed).
128
+ - Direct WebRTC peer-to-peer data channels with end-to-end encryption.
129
+ - Physical host approval required before any device can access your machine.
130
+ - Your code and credentials never touch third-party cloud servers.
156
131
  </details>
157
132
 
158
133
  <details>
159
134
  <summary><b>💰 Is it free?</b></summary>
160
135
 
161
- **Yes.** Free to use, no signup, no credit card. MIT licensed.
162
-
163
- </details>
164
-
165
- <details>
166
- <summary><b>🌐 Do I need to open ports?</b></summary>
167
-
168
- **No.** Uses Cloudflare Quick Tunnel — outbound only. Works behind home NAT, corporate firewalls, mobile hotspots, VPNs.
169
-
136
+ **Yes.** 9Remote is free, open source (MIT license), with no subscriptions and no signup required.
170
137
  </details>
171
138
 
172
139
  <details>
173
- <summary><b>📴 Does it work on LAN only?</b></summary>
174
-
175
- **Yes.** A **LocalFirstAdapter** races LAN vs tunnel and uses whichever is faster. If phone and host share the same Wi-Fi, traffic stays local.
176
-
177
- </details>
178
-
179
- <details>
180
- <summary><b>🤖 Can I use AI coding tools through 9Remote?</b></summary>
181
-
182
- **Yes.** Works seamlessly with Claude Code, OpenAI Codex CLI, Cursor, OpenClaw, and any CLI tool. Run them on your host, access from your phone.
140
+ <summary><b>🌐 Do I need to open router ports or setup DDNS?</b></summary>
183
141
 
142
+ **No.** 9Remote automatically sets up an outbound secure tunnel and negotiates WebRTC P2P connections through NATs and firewalls.
184
143
  </details>
185
144
 
186
145
  <details>
187
- <summary><b>🖥️ What platforms are supported?</b></summary>
188
-
189
- **Host:** macOS (Intel + Apple Silicon), Linux (x64, arm64), Windows (x64)
190
- **Client:** Any modern browser, iOS 14+, Android 8+
146
+ <summary><b>🤖 Which AI agents are supported?</b></summary>
191
147
 
148
+ Works with any CLI AI tool: **Claude Code**, Cursor CLI, Aider, Codex, OpenClaw, and more. 9Remote provides dedicated multi-pane terminals and live artifact rendering for HTML and diagrams.
192
149
  </details>
193
150
 
194
151
  ---
195
152
 
196
- ## 🐛 Troubleshooting
197
-
198
- **"Port 2208 already in use"**
199
- - Another instance running → `pkill -f 9remote` and retry
200
- - Or use a different port: `PORT=3308 9remote`
201
-
202
- **"Cloudflare tunnel failed to start"**
203
- - Check internet connection
204
- - `cloudflared` auto-installed on first run; otherwise install manually from [cloudflared docs](https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/downloads/)
205
-
206
- **"Screen Recording / Accessibility denied" (macOS)**
207
- - Grant permissions in `System Settings → Privacy & Security`, then restart 9Remote
208
-
209
- **"QR code expired"**
210
- - Keys expire in 30 minutes → regenerate from TUI menu: `Key → Regenerate`
211
-
212
- **"Can't connect from phone"**
213
- - Check both devices have internet
214
- - Try forcing tunnel mode: Settings → Connection → Tunnel only
215
-
216
- ---
217
-
218
- ## 📧 Links
219
-
220
- - **Website:** [9remote.cc](https://9remote.cc)
221
- - **Docs:** [docs.9remote.cc](https://docs.9remote.cc)
222
- - **GitHub:** [github.com/decolua/9remote](https://github.com/decolua/9remote)
223
- - **Issues:** [github.com/decolua/9remote/issues](https://github.com/decolua/9remote/issues)
224
- - **Community:** [facebook.com/groups/9teamvn](https://www.facebook.com/groups/9teamvn)
225
-
226
- ---
227
-
228
153
  ## 📄 License
229
154
 
230
- MIT © 9Team
231
-
232
- ---
233
-
234
- <div align="center">
235
- <sub>Built with ❤️ for developers who code from anywhere — bed, beach, or bus.</sub>
236
- </div>
155
+ MIT License. Free for personal and commercial use.
Binary file