control: seed events, add tests, update remote doc

This commit is contained in:
Peter Steinberger
2025-12-08 22:03:46 +01:00
parent 9c54e48194
commit e38bdd0d2d
3 changed files with 112 additions and 2 deletions

View File

@@ -13,7 +13,7 @@ This repo supports “remote over SSH” by keeping a single relay (the master)
1) Establish SSH tunnel.
2) Open TCP socket to the local forwarded port.
3) Send `ping` to verify connectivity.
4) Issue `health` and `last-heartbeat` requests to seed UI.
4) Issue `health`, `status`, and `last-heartbeat` requests to seed UI.
5) Listen for `event` frames (heartbeat updates, relay status).
## Heartbeats
@@ -25,9 +25,13 @@ This repo supports “remote over SSH” by keeping a single relay (the master)
- The menu app skips SSH and connects directly to `127.0.0.1:18789` with the same protocol.
## Failure handling
- If the tunnel drops, the client reconnects and re-issues `ping`, `health`, and `last-heartbeat` to refresh state.
- If the tunnel drops, the client reconnects and re-issues `ping`, `health`, and `last-heartbeat` to refresh state (the mac app shows “Control channel disconnected”).
- If the control port is unavailable (older relay), the app can optionally fall back to the legacy CLI path, but the goal is to rely solely on the control channel.
## Test Remote (in the mac app)
1) SSH reachability check (`ssh -o BatchMode=yes … echo ok`).
2) If SSH succeeds, the app opens the control tunnel and issues a `health` request; success marks the remote as ready.
## Security
- Control server listens only on localhost.
- SSH tunneling reuses existing keys/agent; no additional auth is added by the control server.