offsite 0.0.10 → 0.0.12

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 (97) hide show
  1. package/README.md +24 -24
  2. package/apps/server/dist/main.mjs +2035 -1875
  3. package/apps/server/dist/main.mjs.map +1 -1
  4. package/apps/server/drizzle/20261017103559_browser_push_keys/migration.sql +11 -0
  5. package/apps/server/drizzle/20261017103559_browser_push_keys/snapshot.json +265 -0
  6. package/apps/server/drizzle/20261017110336_browser_machine_ids/migration.sql +3 -0
  7. package/apps/server/drizzle/20261017110336_browser_machine_ids/snapshot.json +252 -0
  8. package/apps/server/drizzle/20261017120143_device_tokens/migration.sql +15 -0
  9. package/apps/server/drizzle/20261017120143_device_tokens/snapshot.json +305 -0
  10. package/apps/web/dist/apple-touch-icon.png +0 -0
  11. package/apps/web/dist/assets/{angular-html-BEUtPJ31.js → angular-html-DNGrmdhg.js} +1 -1
  12. package/apps/web/dist/assets/{angular-ts-Bnr4rzFr.js → angular-ts-D4hBqsOh.js} +1 -1
  13. package/apps/web/dist/assets/{apl-B-JNBTdP.js → apl-CYvdPOPE.js} +1 -1
  14. package/apps/web/dist/assets/{astro-DLjK95IW.js → astro-BqtVnRyx.js} +1 -1
  15. package/apps/web/dist/assets/{blade-PLMCMBeb.js → blade-BPJV2sdT.js} +1 -1
  16. package/apps/web/dist/assets/{c-D5z8xNe6.js → c-CBQDE6Uf.js} +1 -1
  17. package/apps/web/dist/assets/{chapel-B9y2HxI_.js → chapel-BHOESU2p.js} +1 -1
  18. package/apps/web/dist/assets/{cobol-BSwRu2X7.js → cobol-CMpvzrel.js} +1 -1
  19. package/apps/web/dist/assets/{coffee-BAWFR6iF.js → coffee-Bv27C06e.js} +1 -1
  20. package/apps/web/dist/assets/{cpp-CO-vZI4m.js → cpp-MTwxWDTP.js} +1 -1
  21. package/apps/web/dist/assets/{crystal-BSfyPt6R.js → crystal-CI5fSUCy.js} +1 -1
  22. package/apps/web/dist/assets/{css-BOzKs1dt.js → css-BW8DHcmj.js} +1 -1
  23. package/apps/web/dist/assets/{edge-OBqkt95y.js → edge-C2HOl06F.js} +1 -1
  24. package/apps/web/dist/assets/{elixir-B14D2jMM.js → elixir-OV4G1_r7.js} +1 -1
  25. package/apps/web/dist/assets/{elm-DgfIayFq.js → elm-BF0pK-yg.js} +1 -1
  26. package/apps/web/dist/assets/{erb-w-PUv7ic.js → erb-DFQCtOmK.js} +1 -1
  27. package/apps/web/dist/assets/{git-rebase-DnzmyV_3.js → git-rebase-C9nAAu5A.js} +1 -1
  28. package/apps/web/dist/assets/{glimmer-js-CLephpyX.js → glimmer-js-B9gnYdT1.js} +1 -1
  29. package/apps/web/dist/assets/{glimmer-ts-CvphZOog.js → glimmer-ts-BkG38Inm.js} +1 -1
  30. package/apps/web/dist/assets/{glsl-Ddj2GHKO.js → glsl-wwo6dKBr.js} +1 -1
  31. package/apps/web/dist/assets/{graphql-CeGXMmoK.js → graphql-tQJRbYuy.js} +1 -1
  32. package/apps/web/dist/assets/{hack-CtBKZ5VW.js → hack-C9e9oyUG.js} +1 -1
  33. package/apps/web/dist/assets/{haml-DVvVd-Mp.js → haml-CTolMb7J.js} +1 -1
  34. package/apps/web/dist/assets/{handlebars-Blx6Nluh.js → handlebars-CrJTM5vD.js} +1 -1
  35. package/apps/web/dist/assets/{html-O-gZ5M1-.js → html-Be6zOrn3.js} +1 -1
  36. package/apps/web/dist/assets/{html-derivative-BsDe9c3P.js → html-derivative-10Bvy_Et.js} +1 -1
  37. package/apps/web/dist/assets/{http-CAUZeWmG.js → http-GZlGWwa-.js} +1 -1
  38. package/apps/web/dist/assets/{hurl-CYnRsJrb.js → hurl-DEYfhn1R.js} +1 -1
  39. package/apps/web/dist/assets/index-6ofGnhX4.css +2 -0
  40. package/apps/web/dist/assets/index-CiQ326rG.js +1203 -0
  41. package/apps/web/dist/assets/{java-DjjpMT1c.js → java-BsFb26JS.js} +1 -1
  42. package/apps/web/dist/assets/{javascript-BtiswSWS.js → javascript-DDLm5bzW.js} +1 -1
  43. package/apps/web/dist/assets/{jinja-ZQGJY58d.js → jinja-NBeNjUXf.js} +1 -1
  44. package/apps/web/dist/assets/{jison-VPkdeMFr.js → jison-DKz4RK3A.js} +1 -1
  45. package/apps/web/dist/assets/{json-D5BAJIHo.js → json-Bg4r8xCd.js} +1 -1
  46. package/apps/web/dist/assets/{jsx-DMEKVcfT.js → jsx-BMnPLKsa.js} +1 -1
  47. package/apps/web/dist/assets/{julia-BmOLQFch.js → julia-Wll5K4al.js} +1 -1
  48. package/apps/web/dist/assets/{just-YZGutsxo.js → just-BLn1iI69.js} +1 -1
  49. package/apps/web/dist/assets/{latex-CvrF79xl.js → latex-D15HRF2E.js} +1 -1
  50. package/apps/web/dist/assets/{liquid-B--WbaSh.js → liquid-COHkGI02.js} +1 -1
  51. package/apps/web/dist/assets/{lua-BNEqLlv-.js → lua-CkbAAxOH.js} +1 -1
  52. package/apps/web/dist/assets/{marko-jEzbzXvj.js → marko-Dmgo6IU5.js} +1 -1
  53. package/apps/web/dist/assets/{mdc-yfiYVuXh.js → mdc-D_OV_cCt.js} +1 -1
  54. package/apps/web/dist/assets/{nginx-j7vnr3lB.js → nginx-ADn2lIMW.js} +1 -1
  55. package/apps/web/dist/assets/{nim-CV2OP2RC.js → nim-C6zTq4FI.js} +1 -1
  56. package/apps/web/dist/assets/{org-DTTS5Tv_.js → org-D9XGvcFV.js} +1 -1
  57. package/apps/web/dist/assets/{perl-DuF7yMdF.js → perl-B7-K-xLH.js} +1 -1
  58. package/apps/web/dist/assets/{php-8ufnwSAo.js → php-CO9ZzQRp.js} +1 -1
  59. package/apps/web/dist/assets/{pug-D-_t9dIn.js → pug-BaAyPwTO.js} +1 -1
  60. package/apps/web/dist/assets/{qml-DFxD5uAC.js → qml-Cp3pyCa-.js} +1 -1
  61. package/apps/web/dist/assets/{r-D8-Yi2KS.js → r-CT05_vfW.js} +1 -1
  62. package/apps/web/dist/assets/{razor-DhBq7-pb.js → razor-D5rHsTSp.js} +1 -1
  63. package/apps/web/dist/assets/{regexp-C20CUsFr.js → regexp-D6kzd_X5.js} +1 -1
  64. package/apps/web/dist/assets/{rst-DsIaukoD.js → rst-AkFwrhnR.js} +1 -1
  65. package/apps/web/dist/assets/{ruby-C__EgK1w.js → ruby-LNJDVfMG.js} +1 -1
  66. package/apps/web/dist/assets/{sas-BdDDRZUF.js → sas-C8o3xi__.js} +1 -1
  67. package/apps/web/dist/assets/{scss-nPFPh8nF.js → scss-Ch7Tact0.js} +1 -1
  68. package/apps/web/dist/assets/{shellscript-Cfn0DgiQ.js → shellscript-CN-vf6fZ.js} +1 -1
  69. package/apps/web/dist/assets/{shellsession-DFGAcvZ4.js → shellsession-CxId-awN.js} +1 -1
  70. package/apps/web/dist/assets/{soy-8DrmW46F.js → soy-PXtFJtGw.js} +1 -1
  71. package/apps/web/dist/assets/{sql-BeU26hky.js → sql-B7js2_Lu.js} +1 -1
  72. package/apps/web/dist/assets/{stata-OFfE-Kh9.js → stata-C0Zwsf36.js} +1 -1
  73. package/apps/web/dist/assets/{surrealql-Bwt4eVgP.js → surrealql-DawzxLLe.js} +1 -1
  74. package/apps/web/dist/assets/{svelte-DF7N9uBp.js → svelte-CbCoXemF.js} +1 -1
  75. package/apps/web/dist/assets/{templ-CEirsWl9.js → templ-CQyn0W4C.js} +1 -1
  76. package/apps/web/dist/assets/{tex-BvBhDkV4.js → tex-FeZKQwyK.js} +1 -1
  77. package/apps/web/dist/assets/{ts-tags-Dx8bn0ts.js → ts-tags-KsJvoinT.js} +1 -1
  78. package/apps/web/dist/assets/{tsx-vXk5Q55O.js → tsx-Cw6pGPeZ.js} +1 -1
  79. package/apps/web/dist/assets/{twig-CIgLDHIW.js → twig-Cj9MLPms.js} +1 -1
  80. package/apps/web/dist/assets/{typescript-CCW6p4Fc.js → typescript-DwZR66Da.js} +1 -1
  81. package/apps/web/dist/assets/{typst-CQL-qDz3.js → typst--K-bHYFW.js} +1 -1
  82. package/apps/web/dist/assets/{vue-gFAUYOUp.js → vue-BrB0TrD_.js} +1 -1
  83. package/apps/web/dist/assets/{vue-html-BHuiCeAo.js → vue-html-BgNSGBvl.js} +1 -1
  84. package/apps/web/dist/assets/{vue-vine-DxeD8nHa.js → vue-vine-C2qLo1pd.js} +1 -1
  85. package/apps/web/dist/assets/{xml-B43ZEHE5.js → xml-DzdlZG_g.js} +1 -1
  86. package/apps/web/dist/assets/{xsl-icvYLDXv.js → xsl-D3HxAJEY.js} +1 -1
  87. package/apps/web/dist/assets/{yaml-Bj0dlmrV.js → yaml-SX7TQG-a.js} +1 -1
  88. package/apps/web/dist/icon-192.png +0 -0
  89. package/apps/web/dist/icon-512.png +0 -0
  90. package/apps/web/dist/icon-maskable-512.png +0 -0
  91. package/apps/web/dist/icon.svg +4 -2
  92. package/apps/web/dist/index.html +4 -4
  93. package/apps/web/dist/manifest.webmanifest +1 -0
  94. package/apps/web/dist/sw.js +1 -1
  95. package/package.json +4 -3
  96. package/apps/web/dist/assets/index-5vPpgW8A.css +0 -2
  97. package/apps/web/dist/assets/index-CGSSO_em.js +0 -1152
package/README.md CHANGED
@@ -1,10 +1,10 @@
1
- # offsite
1
+ <img src="apps/web/public/icon-512.png" width="96" alt="OffSite logo">
2
2
 
3
- Claude Code in your browser. It uses the same sessions as the CLI, so you can start in one and resume in the other.
3
+ # OffSite
4
4
 
5
- ## Usage
5
+ Claude Code, Codex and OpenCode in your browser. It uses the same sessions as their CLIs, so you can start in one and resume in the other.
6
6
 
7
- Requires Node.js 24+ and [Claude Code](https://code.claude.com), installed and logged in.
7
+ ## Usage
8
8
 
9
9
  ```sh
10
10
  npx offsite
@@ -12,29 +12,29 @@ npx offsite
12
12
 
13
13
  Then open the pairing link it prints. It pairs this browser with the server, so only browsers that opened the link can use it.
14
14
 
15
- | Command | What it does |
16
- | ---------------- | ------------------------------------------------------------------------------------------------ |
17
- | `offsite` | Starts the server and the web app |
18
- | `offsite web` | Same as `offsite` |
19
- | `offsite serve` | Starts only the server, use it from [offsite.sayad.dev](https://offsite.sayad.dev) |
20
- | `offsite pair` | Makes a pairing token for another browser and prints its links and a QR code. `--name` labels it |
21
- | `offsite unpair` | Lists paired browsers so you can pick which to unpair |
22
-
23
- | Flag | Default | What it sets |
24
- | ------------ | ------------ | ---------------------------------------------------------------------------------------- |
25
- | `--host` | `127.0.0.1` | Address to listen on |
26
- | `--port` | `47841` | Port to listen on |
27
- | `--dir` | `~/.offsite` | Folder for settings and accounts |
28
- | `--no-auth` | auth on | Accept connections without the pairing token |
29
- | `--no-pair` | pair on | Don't create a pairing token or print pairing links on start |
30
- | `--fallback` | none | Address the pairing links add for when this one is unreachable, e.g. a Cloudflare tunnel |
31
-
32
- Pairing tokens stay in `tokens.json` inside `--dir`. A running offsite disconnects an unpaired browser within seconds.
15
+ | Command | What it does |
16
+ | ---------------- | --------------------------------------------------------------------------------- |
17
+ | `offsite` | Starts the server and the web app |
18
+ | `offsite web` | Same as `offsite` |
19
+ | `offsite serve` | Starts only the server |
20
+ | `offsite pair` | Makes a pairing token for another browser and prints its link. `--name` labels it |
21
+ | `offsite unpair` | Lists paired browsers so you can pick which to unpair |
22
+
23
+ | Flag | Default | What it sets |
24
+ | ----------- | ------------ | ------------------------------------------------------------ |
25
+ | `--host` | `127.0.0.1` | Address to listen on |
26
+ | `--port` | `47841` | Port to listen on |
27
+ | `--dir` | `~/.offsite` | Folder for settings and accounts |
28
+ | `--no-auth` | auth on | Accept connections without the pairing token |
29
+ | `--no-pair` | pair on | Don't create a pairing token or print pairing links on start |
30
+ | `--pwa` | off | Serve the web app as an installable app that works offline |
31
+
32
+ Pairing tokens stay in `tokens.json` inside `--dir`. A running OffSite disconnects an unpaired browser within seconds.
33
33
 
34
34
  > [!WARNING]
35
- > With `--no-auth`, anyone who can reach its port, including any website open in your browser, can run Claude Code and open a terminal on your machine.
35
+ > With `--no-auth`, anyone who can reach its port, including any website open in your browser, can run your coding agents and open a terminal on your machine.
36
36
 
37
- Don't use the same session in offsite and the CLI at the same time. Switching between them is fine.
37
+ Don't use the same session in OffSite and the CLI at the same time. Switching between them is fine.
38
38
 
39
39
  ## Separate instances
40
40