@hydra-acp/cli 0.1.202 → 0.1.203
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 +10 -34
- package/dist/cli.js +421 -421
- package/dist/daemon.js +107 -107
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -900,21 +900,21 @@ Agents are sourced from the [ACP Registry](https://github.com/agentclientprotoco
|
|
|
900
900
|
## Architecture
|
|
901
901
|
|
|
902
902
|
```
|
|
903
|
-
|
|
904
|
-
│ │
|
|
905
|
-
hydra-
|
|
906
|
-
│ │
|
|
907
|
-
|
|
903
|
+
VS Code Chrome Slack ← clients
|
|
904
|
+
│ │ │
|
|
905
|
+
hydra-ahp hydra-acp-browser hydra-acp-slack ← hydra extensions
|
|
906
|
+
│ │ │
|
|
907
|
+
└───────────────┼────────────────┘
|
|
908
908
|
│
|
|
909
909
|
WSS / HTTP
|
|
910
910
|
│
|
|
911
911
|
hydra-acp ← hydra daemon
|
|
912
912
|
│
|
|
913
|
-
T1 → T2 → … → Tn
|
|
913
|
+
T1 → T2 → … → Tn ← hydra transformers
|
|
914
914
|
│
|
|
915
|
-
|
|
916
|
-
|
|
917
|
-
|
|
915
|
+
┌───────────┬─────┴─────┬───────────┐
|
|
916
|
+
│ │ │ │
|
|
917
|
+
claude opencode pi codex ← agents
|
|
918
918
|
```
|
|
919
919
|
|
|
920
920
|
### How it works
|
|
@@ -1023,6 +1023,7 @@ All three are documented in [`PROTOCOL.md`](PROTOCOL.md), with endpoint shapes,
|
|
|
1023
1023
|
The daemon exposes a process-management surface. Treat the service token like an SSH key.
|
|
1024
1024
|
|
|
1025
1025
|
- **Default bind is `127.0.0.1`.** Cross-host access requires TLS + a strong token.
|
|
1026
|
+
- **Remote access is opt-in via `hydra-acp daemon listen`.** `tailnet` binds the tailnet IP with a CA-signed cert, `all` binds every interface with a self-signed cert, and `local` goes back to loopback. The daemon refuses a non-loopback bind without TLS; see [Accepting remote clients](#accepting-remote-clients).
|
|
1026
1027
|
- **No anonymous access.** Every request — REST and WSS — must present the bearer token.
|
|
1027
1028
|
- **Token rotation:** `hydra-acp init --rotate-token` invalidates the old token; running clients are kicked.
|
|
1028
1029
|
- **Sandboxing is the user's responsibility.** Spawned agents inherit the daemon's filesystem and shell. Run the daemon under a restricted user or inside a container if you don't trust agents fully.
|
|
@@ -1030,31 +1031,6 @@ The daemon exposes a process-management surface. Treat the service token like an
|
|
|
1030
1031
|
|
|
1031
1032
|
The service token (stored at `~/.hydra-acp/auth-token`, mode 0600) is generated on `hydra-acp init` and required as `Authorization: Bearer <token>` for every REST call and as a WebSocket subprotocol or query parameter for `wss://.../acp`. The token never leaves `~/.hydra-acp/`.
|
|
1032
1033
|
|
|
1033
|
-
> **Windows:** mode 0600 is not enforcement there. Windows derives file access from ACLs, and Node's `chmod` only toggles the read-only bit, so `auth-token` (along with `config.json`, `peers.json`, `remotes.json`, and the session records) inherits whatever the parent directory grants. On a machine with more than one interactive user, restrict `%USERPROFILE%\.hydra-acp` yourself, e.g. `icacls "%USERPROFILE%\.hydra-acp" /inheritance:r /grant:r "%USERNAME%:(OI)(CI)F"`.
|
|
1034
|
-
|
|
1035
|
-
For remote access (binding to a non-loopback address), enable TLS via:
|
|
1036
|
-
|
|
1037
|
-
```json
|
|
1038
|
-
{
|
|
1039
|
-
"daemon": {
|
|
1040
|
-
"tls": {
|
|
1041
|
-
"cert": "/path/to/cert.pem",
|
|
1042
|
-
"key": "/path/to/key.pem"
|
|
1043
|
-
}
|
|
1044
|
-
}
|
|
1045
|
-
}
|
|
1046
|
-
```
|
|
1047
|
-
|
|
1048
|
-
The daemon refuses to bind to non-loopback hosts without TLS configured.
|
|
1049
|
-
`hydra-acp daemon listen` writes all of this for you (see
|
|
1050
|
-
[Accepting remote clients](#accepting-remote-clients)). To do it by hand, a
|
|
1051
|
-
self-signed cert is enough, since `remote add`'s TOFU handshake only needs a
|
|
1052
|
-
key pair to pin, not a CA-signed one:
|
|
1053
|
-
|
|
1054
|
-
```sh
|
|
1055
|
-
openssl req -x509 -newkey rsa:4096 -sha256 -days 3650 -nodes -keyout key.pem -out cert.pem -subj "/CN=$(hostname)"
|
|
1056
|
-
```
|
|
1057
|
-
|
|
1058
1034
|
## License
|
|
1059
1035
|
|
|
1060
1036
|
MIT.
|