@hydra-acp/cli 0.1.187 → 0.1.189

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 CHANGED
@@ -220,6 +220,35 @@ and setting `daemon.publicHost` to the name the URL should carry. See
220
220
  [Security](#security). Without that, `share` still prints a URL and warns you
221
221
  that it's loopback-only.
222
222
 
223
+ ### Linking machines
224
+
225
+ `session share` is a one-off: it hands out a URL for a single session.
226
+ `hydra-acp remote add` is the persistent version, git-remote style — it
227
+ federates your daemon with a peer's under a local name, so the peer's
228
+ sessions show up in `session list --host=<name>` (or `--host=all`) and can be
229
+ attached with `--session <name>:<localId>`, as well as showing up in hydra
230
+ session lists in TUI:
231
+
232
+ ```sh
233
+ hydra-acp remote add box peer.local
234
+ hydra-acp session list --host=box
235
+ hydra-acp --session box:hydra_session_abc123
236
+ ```
237
+
238
+ The host arg is `host[:port]`; the port defaults to the daemon's usual
239
+ `55514` when omitted. Two things have to be true on the peer (`peer.local`)
240
+ before this works:
241
+
242
+ - It has a master password set — `hydra-acp auth password` on that machine.
243
+ `remote add` prompts you for it once, exchanges it for a long-lived token,
244
+ and stores that token.
245
+ - If it's not loopback, it needs TLS configured as in [Security](#security).
246
+ `remote add` does a TOFU handshake first.
247
+
248
+ The exchanged token expires; `remote list` shows when. Re-run `remote add`
249
+ with the same name before then to refresh it. `remote remove` un-federates
250
+ and revokes the token on the peer.
251
+
223
252
  ## Compaction and recall
224
253
 
225
254
  Long sessions run into the model's context window. When a session's history
@@ -582,6 +611,8 @@ one is to sit on that row and walk through them. Eighteen ship built in, and
582
611
 
583
612
  `tui.defaultEnterAction` (default `"amend"`) controls what the unmodified Enter key does in the prompt composer. With `"amend"` (the default), Enter amends the in-flight turn and `Shift+Enter` enqueues a new prompt; with no turn in flight either key just enqueues, since there's nothing to amend. Set to `"enqueue"` to flip the two: Enter enqueues (sends immediately when idle, queues behind an in-flight turn) and `Shift+Enter` amends.
584
613
 
614
+ `tui.defaultHost` (default `"local"`) sets which host bucket the session picker opens on, before `h` cycles it. `"local"` is sessions created or bound on this machine, `"all"` drops the host filter, and `"remote:all"` is local plus every `hydra remote`'s live sessions without imported-machine mirrors. `"remote:<name>"` and `"host:<name>"` pick one remote or one imported machine; a bare name is a remote of that name, else an imported machine. A value that nothing backs at picker-open time falls back to `"local"`. TUI-only: `hydra session list --host` keeps its own `"local"` default.
615
+
585
616
  `tui.skipPermissions` (default `false`) makes `--dangerously-skip-permissions` the standing default for the TUI: every tool permission request is auto-approved (with `allow_once`, so nothing is written to the agent's persisted permission rules) and the modal never appears. The startup banner names the config key so it isn't silent. TUI-only on purpose: `shim`, `launch`, and `cat` are spawned by editors and scripts with their own argv, and an ambient config key there would disarm paths you aren't watching. Pass `--no-dangerously-skip-permissions` to get the prompts back for a single run.
586
617
 
587
618
  ## Extensions
@@ -963,49 +994,14 @@ For remote access (binding to a non-loopback address), enable TLS via:
963
994
  }
964
995
  ```
965
996
 
966
- The daemon refuses to bind to non-loopback hosts without TLS configured.
997
+ The daemon refuses to bind to non-loopback hosts without TLS configured. A
998
+ self-signed cert is enough, since `remote add`'s TOFU handshake only needs a
999
+ key pair to pin, not a CA-signed one:
967
1000
 
968
- ## Registry entry mockup
969
-
970
- If accepted, `hydra-acp` could land in the [ACP Registry](https://github.com/agentclientprotocol/registry):
971
-
972
- ```json
973
- {
974
- "id": "hydra-acp",
975
- "name": "Hydra ACP",
976
- "version": "0.1.0",
977
- "description": "Multi-client session daemon. Spawn agents, attach over WSS, multiplex sessions across editors.",
978
- "authors": ["Sam Magnuson"],
979
- "license": "MIT",
980
- "icon": "icon.svg",
981
- "repository": "https://github.com/smagnuso/hydra-acp",
982
- "website": "https://github.com/smagnuso/hydra-acp",
983
- "distribution": {
984
- "npx": {
985
- "package": "@hydra-acp/cli",
986
- "args": ["shim"]
987
- }
988
- },
989
- "capabilities": {
990
- "session": {
991
- "attach": {},
992
- "list": true,
993
- "proxy": true
994
- },
995
- "transport": {
996
- "stdio": true,
997
- "websocket": true
998
- }
999
- }
1000
- }
1001
+ ```sh
1002
+ openssl req -x509 -newkey rsa:4096 -sha256 -days 3650 -nodes -keyout key.pem -out cert.pem -subj "/CN=$(hostname)"
1001
1003
  ```
1002
1004
 
1003
- The accompanying icon lives at [`assets/icon.svg`](assets/icon.svg) — a single `currentColor`-filled `<path>` rendering the three-headed hydra silhouette. The `viewBox` is 32×32 (so the path supersamples cleanly at the registry's 16×16 display size); the SVG declares `width="16" height="16"` per the [registry rules](https://github.com/agentclientprotocol/registry/blob/main/CONTRIBUTING.md). Source PNG at [`assets/hydra-source.png`](assets/hydra-source.png) is what the silhouette and the README's top-of-page Braille art are both derived from.
1004
-
1005
- ## Status
1006
-
1007
- This is an early experiment.
1008
-
1009
1005
  ## License
1010
1006
 
1011
1007
  MIT.