starbridge 0.1.4 → 0.1.5-rc.2

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 (3) hide show
  1. package/README.md +67 -50
  2. package/dist/starbridge.js +3141 -2915
  3. package/package.json +1 -1
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # starbridge CLI
2
2
 
3
- `starbridge` connects a machine that runs agents to your phone and browsers. Agents use it to ask
3
+ `starbridge` connects a machine that runs your harnesses to your phone and browsers. Agents use it to ask
4
4
  you questions and report runs, and it uploads what each AI plan has left, read from CodexBar. It
5
5
  signs everything with this machine's key and encrypts it for your devices, so the server sees
6
6
  ciphertext only. CodexBar is optional: setup asks before installing it, `--no-quota` skips it,
@@ -44,30 +44,31 @@ starbridge setup
44
44
 
45
45
  ### What setup does
46
46
 
47
- Setup asks only before installing CodexBar, which providers to send, whether the agent runs
48
- after you log out, whether to add the CLI to your PATH, and whether to send a test
47
+ Setup asks only before installing CodexBar, which providers to send, whether the background
48
+ service runs after you log out, whether to add the CLI to your PATH, and whether to send a test
49
49
  question; steps 1 and 3 say when it asks more. A rerun repairs only what is missing:
50
50
 
51
51
  1. It pairs the machine with your account (see [Pair](#pair)), with the first server named by
52
52
  `--server`, `STARBRIDGE_SERVER`, the install script (each server's own names that server),
53
53
  or the machine's pairing, else https://starbridge.run. It asks only when the machine is
54
54
  already paired with another server, and Enter keeps that one.
55
- 2. It installs Starbridge in each agent it finds and prints one line per agent: the Claude Code
55
+ 2. It installs Starbridge in each harness it finds and prints one line per harness: the Claude Code
56
56
  plugin at user scope, the skill and sandbox rule in Codex's folders, the Starbridge Pi
57
- package, the skill and plugin in opencode's config folder, and the skill in
58
- `~/.cursor/skills/starbridge`. A failed install prints its
57
+ package, the skill and plugin in opencode's config folder, the skill and hooks in Cursor's
58
+ folder, and the Starbridge plugin in Antigravity's
59
+ ([What setup installs](../docs/tell-your-agents.md#what-setup-installs)). A failed install prints its
59
60
  reason and the command that retries it, and setup goes on. A later setup updates the Codex,
60
- opencode and Cursor files when the CLI carries newer ones. The Claude Code plugin needs Claude Code
61
- 2.1.287 or later; setup says when it is older. Claude Code, Codex, Pi and `cursor-agent` may then run
62
- `starbridge ask`, `waiting`, `working`, `wait` and `settle` without a permission prompt;
61
+ opencode, Cursor and Antigravity files when the CLI carries newer ones. The Claude Code plugin needs Claude Code
62
+ 2.1.287 or later; setup says when it is older. In Claude Code, Codex, Pi, `cursor-agent` and
63
+ `agy`, `starbridge ask`, `waiting`, `working`, `wait` and `settle` then run without a permission prompt;
63
64
  `starbridge run` still asks, since the command it wraps can be anything. For Pi, setup adds
64
65
  these rules only when pi-permission-system is installed.
65
66
  3. When another machine of your account sent quotas in the last day, it says which and asks
66
67
  whether to send them from this one too; Enter says no. Otherwise it finds CodexBar, or asks
67
68
  to install it (Linux and macOS; CodexBar has no Windows build, so a Windows machine uploads
68
- no quotas): with Homebrew if you have it, else CodexBar's latest release tarball from
69
- GitHub, checked against the `.sha256` that release publishes, into `~/.local/opt/codexbar`.
70
- It installs nothing when the checksum is missing or does not match. Then it asks which
69
+ no quotas): with Homebrew if you have it, else the CodexBar release this Starbridge release
70
+ pins, from GitHub, checked against the SHA-256 the pin names, into `~/.local/opt/codexbar`.
71
+ It installs nothing when the checksum does not match. Then it asks which
71
72
  providers' quotas to upload.
72
73
  4. It installs and starts the background service, `starbridge agent`, as a systemd user unit, a
73
74
  launchd agent, or on Windows a Scheduled Task that starts at logon without administrator
@@ -81,31 +82,45 @@ remove the setup.
81
82
 
82
83
  `--yes`, or running with no terminal, takes every default and sends no test question.
83
84
  `--no-quota` skips step 3, CodexBar included; `--no-service` skips step 4; `--no-agents` skips
84
- step 2. `starbridge status` prints the same checks, and names an agent installed since setup,
85
+ step 2. `starbridge status` prints the same checks, and names a harness installed since setup,
85
86
  which `starbridge setup --refresh` then sets up.
86
87
 
87
- `starbridge uninstall --agent <name>` (`claude`, `codex`, `pi`, `opencode` or `cursor`) removes Starbridge
88
- from one agent. Setup and `--refresh` then leave that agent alone, until `starbridge setup
88
+ `starbridge uninstall --agent <name>` (`claude`, `codex`, `pi`, `opencode`, `cursor` or
89
+ `antigravity`) removes Starbridge from one harness. Setup and `--refresh` then leave that harness alone, until `starbridge setup
89
90
  --agent <name>` installs it there again.
90
91
 
91
92
  ### Update and uninstall
92
93
 
94
+ Nothing updates the CLI by itself. Once a day the agent reads the latest release from GitHub,
95
+ and when it is newer, `setup`, `pair`, `config` and `--version` end with one line on stderr:
96
+ `Starbridge 0.2.0 is out (you have 0.1.4): run starbridge update`, or the Homebrew or npm
97
+ command for those installs. `starbridge status` shows both versions, and your devices show
98
+ "Update available" under the machine. `starbridge config update-check off` stops the check
99
+ and the line; `STARBRIDGE_NO_UPDATE_CHECK=1` silences the line.
100
+
101
+ The agents' integrations follow the CLI: `update` runs `setup --refresh`, which brings each
102
+ agent's files to the new version, and the Claude Code plugins update themselves from the
103
+ Starbridge marketplace.
104
+
93
105
  `starbridge update` installs the latest release over a script install, then runs `starbridge
94
106
  setup --refresh` with it and updates the Claude Code plugins. `--refresh` rewrites the files
95
- setup put into other tools (the agent's service, the Codex skill and rule, opencode's skill and
96
- plugin, the Cursor files) for the new version and restarts the agent. Homebrew and npm installs update through
107
+ setup put into other tools (the background service's unit, the Codex skill and rule, opencode's
108
+ skill and plugin, the Cursor files, the Antigravity plugin) for the new version and restarts the
109
+ background service. Homebrew and npm installs update through
97
110
  their own manager; then run `starbridge setup --refresh`. Each of those files starts with a
98
111
  `Written by starbridge <version>` line: setup replaces and uninstall removes only files that have
99
112
  it, so remove the line from one to keep it as yours.
100
113
 
101
- `starbridge update` then moves a CodexBar that setup installed in `~/.local/opt/codexbar` to
102
- CodexBar's latest release, with the same checksum check; a CodexBar from Homebrew or the macOS
103
- app is left to them (`brew upgrade codexbar`). When a CodexBar release breaks, its providers show
104
- a quota error on your devices; `starbridge update --codexbar 0.71.1` installs that release
105
- instead, until a later `starbridge update` moves it to the latest again.
114
+ `starbridge update` then moves a CodexBar that setup installed in `~/.local/opt/codexbar` to the
115
+ release the new Starbridge release pins, with the same checksum check, and keeps one that is
116
+ newer; a CodexBar from Homebrew or the macOS app is left to them (`brew upgrade codexbar`). When a
117
+ CodexBar release breaks, its providers show a quota error on your devices; `starbridge update
118
+ --codexbar 0.71.1` installs that release instead, checked only against the `.sha256` published
119
+ beside it, until a later `starbridge update` moves an older one back to the pinned release.
106
120
 
107
- `starbridge uninstall` removes the agent service, Starbridge from every agent and the binary,
108
- and asks your devices to revoke the machine. It deletes the keys only when you say so, or with `--purge`.
121
+ `starbridge uninstall` removes the background service, Starbridge from every harness and the binary,
122
+ and asks your devices to revoke the machine. It deletes the keys only when you say so, or with
123
+ `--purge`; `--yes` takes every default without asking.
109
124
 
110
125
  ### Check a download
111
126
 
@@ -129,7 +144,7 @@ sha256sum -c --ignore-missing SHA256SUMS
129
144
 
130
145
  ## Use
131
146
 
132
- Setup covers pairing and the agent. Agents run the other commands themselves; the Starbridge
147
+ Setup covers pairing and the background service. Agents run the other commands themselves; the Starbridge
133
148
  skill tells them when. `starbridge --help` lists every flag.
134
149
 
135
150
  ### Pair
@@ -138,13 +153,13 @@ skill tells them when. `starbridge --help` lists every flag.
138
153
  starbridge pair
139
154
  ```
140
155
 
141
- It prints a code, a link and a QR code. Scan the QR code with the Starbridge Android app or your
142
- phone's camera, open the link in a browser where you are signed in, or type the code in
156
+ It prints a code, a link and a QR code. Scan the QR code with the Starbridge Android app, open
157
+ the link on your phone or in a browser where you are signed in, or type the code in
143
158
  Settings → Devices → Add a device, on your phone or in the web app, which works from a machine
144
159
  with no browser. The code expires in 10 minutes.
145
160
 
146
- The QR code is a `starbridge://` link that only the Android app opens, and it carries a check
147
- key with which the app confirms the machine's check code by itself. Approved any other way, the machine prints its check
161
+ The QR code is text that only the Android app's scanner reads, and it carries a check key with
162
+ which the app confirms the machine's check code by itself. Approved any other way, the machine prints its check
148
163
  code and asks whether the Android app shows the same beside it under Devices: press Enter if so, `n` if not.
149
164
  Where setup runs with no terminal, run `starbridge pair --confirm`, or `starbridge pair --reject`
150
165
  if the codes differ. A code that differs means a server read your pairing code and paired the
@@ -166,11 +181,13 @@ starbridge ask --question "Merge #12 now?" \
166
181
 
167
182
  `ask` prints the question's id and how the answer will come back:
168
183
 
169
- - In Claude Code, the answer arrives as the session's next prompt.
170
- - In an interactive Codex session (Codex CLI 0.160 or later), the background service queues it
171
- into the session.
172
- - Anywhere else, the agent waits for it with `starbridge wait <id> --timeout 5m`, which exits
173
- with code 2 when the time runs out.
184
+ - In an interactive session of a harness setup installed in, your answer comes back as the
185
+ session's next prompt.
186
+ - In a headless run, the Cursor IDE or any other harness, the agent waits with
187
+ `starbridge wait <id> --timeout 5m`, which exits with code 2 when the time runs out.
188
+
189
+ [What each harness supports](../docs/tell-your-agents.md#what-each-harness-supports) says which
190
+ runs are headless.
174
191
 
175
192
  To check the path to your devices yourself, ask and wait in one command:
176
193
 
@@ -251,28 +268,29 @@ or X11 with `xprintidle`; a machine with no screen sends nothing.
251
268
 
252
269
  ### Permission prompts
253
270
 
254
- Permission prompts from Claude Code, opencode and Pi stay at the keyboard until you turn them on
255
- with:
271
+ Permission prompts stay at the keyboard until you run:
256
272
 
257
273
  ```bash
258
274
  starbridge config permissions on
259
275
  ```
260
276
 
261
- Then each prompt also goes to your devices, where you allow or deny it. The prompt stays open at
262
- the keyboard, and the first answer wins. Only prompts Claude Code still shows reach your devices:
277
+ Your devices can then allow a call once or deny it. In Claude Code, opencode and Antigravity, each
278
+ prompt shows at the keyboard and on your devices at once, and the first answer wins. Codex and Pi
279
+ send it to one place at a time, and Cursor's stay at the keyboard;
280
+ [What each harness supports](../docs/tell-your-agents.md#what-each-harness-supports) has each.
281
+
282
+ Only prompts Claude Code still shows reach your devices:
263
283
  in auto mode, its default, it settles most calls itself. When the keyboard answers first, the
264
284
  device's card closes once the tool has run, since Claude Code reports the call only then.
265
285
 
266
- opencode's prompts work the same way, from its TUI and `opencode serve`. `opencode run` rejects
267
- every prompt at once, so none reaches your devices.
286
+ `opencode run` rejects every prompt itself, so none reaches your devices.
268
287
 
269
288
  Pi's prompts come from pi-permission-system (`pi install npm:@gotgenes/pi-permission-system`).
270
289
  With the Starbridge Pi package installed, the same command offers to add `starbridge` to its
271
290
  `authorizerChain`, which it needs as well. It also offers allow rules, so that Pi reads the
272
291
  Starbridge skill without a prompt; the link runs the commands above without one when they stand
273
- alone, never chained to another command. Your devices then allow a call once
274
- or deny it, and "Answer here" in Pi brings back pi-permission-system's own prompt. Asks from its
275
- `path` and `external_directory` rules stay at the keyboard, since it lets no link allow those.
292
+ alone, never chained to another command. "Answer here" in Pi brings the prompt back to the
293
+ keyboard. Prompts from its `path` and `external_directory` rules stay at the keyboard.
276
294
 
277
295
  If you use the Claude app, turn off its "Code updates" notifications, which fire at the end of
278
296
  every turn. Keep "Code permission requests" on, unless you turned on Starbridge's permission
@@ -283,8 +301,8 @@ prompts, so that one prompt doesn't notify you twice.
283
301
  `starbridge agent` runs once per machine, as a user service. It holds the keys and the server
284
302
  connection, uploads quota snapshots and hands each session its answers. The other commands go
285
303
  through it when it runs, and to the server directly when it doesn't or when
286
- `STARBRIDGE_NO_AGENT=1` is set. Its flags (`--provider`, `--interval`) override `agent.json` in
287
- the config directory.
304
+ `STARBRIDGE_NO_AGENT=1` is set. Its flags (`--provider`, `--interval`, `--codexbar`, `--no-quota`, `--log`)
305
+ override `agent.json` in the config directory.
288
306
 
289
307
  ### Config
290
308
 
@@ -293,12 +311,11 @@ Keys and state live in `~/.config/starbridge` (or `$XDG_CONFIG_HOME/starbridge`,
293
311
  settings.
294
312
 
295
313
  The Claude Code plugin's hooks call `starbridge hook …`. When Claude Code opens its
296
- `AskUserQuestion` picker, `starbridge hook permission` posts the question to your devices too:
297
- the first answer, in the picker or on a device, wins, and the other closes as answered
298
- elsewhere. If the machine is not paired or the server can't be reached, only the picker asks. The
314
+ `AskUserQuestion` question picker, `starbridge hook permission` posts the question to your
315
+ devices. Each question shows at the keyboard and on your devices at once, and the first answer
316
+ wins. If the machine is not paired or the server can't be reached, only the picker asks. The
299
317
  opencode plugin runs `starbridge hook question --agent opencode` on each call of opencode's
300
- `question` tool: it posts each question to your devices and prints the answers for opencode,
301
- or nothing if the terminal answers first or the server can't be reached.
318
+ question picker, `question`, the same way.
302
319
 
303
320
  ## What agents parse
304
321