mirror of
https://github.com/herdrdev/herdr.git
synced 2026-09-30 16:01:19 +00:00
feat: add stable client endpoint compatibility
This commit is contained in:
@@ -10478,6 +10478,15 @@
|
||||
"default": false,
|
||||
"type": "boolean"
|
||||
},
|
||||
"endpoint_protocol_generation": {
|
||||
"description": "Stable client-owned endpoint generation supported by this server.",
|
||||
"format": "uint32",
|
||||
"minimum": 0,
|
||||
"type": [
|
||||
"integer",
|
||||
"null"
|
||||
]
|
||||
},
|
||||
"live_handoff": {
|
||||
"type": "boolean"
|
||||
}
|
||||
|
||||
@@ -63,7 +63,7 @@ Then attach with:
|
||||
herdr --remote workbox
|
||||
```
|
||||
|
||||
Remote attach supports Linux, macOS, and Windows local clients connecting to Linux or macOS hosts on x86_64 and aarch64. Herdr checks the remote platform, prefers a matching `herdr` already on the remote `PATH`, then checks common direct, Homebrew, mise, and Nix profile install paths. If no matching binary exists, interactive runs prompt to install one to `~/.local/bin/herdr`; non-interactive runs fail instead of modifying the host. If `~/.local/bin` is not on the remote `PATH`, Herdr warns after install. Windows is not supported as the remote host.
|
||||
Remote attach supports Linux, macOS, and Windows local clients connecting to Linux or macOS hosts on x86_64 and aarch64. Herdr checks the remote platform, prefers a compatible `herdr` already on the remote `PATH`, then checks common direct, Homebrew, mise, and Nix profile install paths. Local and remote versions do not need to match once both support the stable endpoint generation. If no compatible binary exists, interactive runs prompt to install one to `~/.local/bin/herdr`; non-interactive runs fail instead of modifying the host. If `~/.local/bin` is not on the remote `PATH`, Herdr warns after install. Windows is not supported as the remote host.
|
||||
|
||||
By default, `herdr --remote` runs remote setup and the bridge through a temporary SSH config that includes your SSH config first, then adds fallback keepalive settings. Existing user keepalive settings win. Linux and macOS clients also use a private per-attach control socket for connection reuse; Windows OpenSSH does not. Set `[remote].manage_ssh_config = false` to use plain `ssh` without Herdr's generated config or control socket.
|
||||
|
||||
@@ -76,7 +76,7 @@ herdr --remote workbox
|
||||
|
||||
For any remote authentication failure, verify plain SSH access first with `ssh workbox`, then run `herdr --remote workbox` again.
|
||||
|
||||
By default, remote attach uses the normal restart/stop flow if it needs to replace or restart a running remote server. To opt into experimental live handoff for a supported running remote server, pass `--handoff`:
|
||||
A version difference alone does not replace or restart a running remote server. Remote attach uses the restart/stop flow only for a server that predates the stable endpoint generation or the detached-daemon baseline. To opt into experimental live handoff when that one-time upgrade is needed, pass `--handoff`:
|
||||
|
||||
```bash
|
||||
herdr --remote workbox --handoff
|
||||
|
||||
@@ -934,7 +934,14 @@ Errors look like this:
|
||||
|
||||
## Protocol stability
|
||||
|
||||
Herdr has a protocol version for client/server compatibility. Protocol changes
|
||||
are reviewed for release compatibility.
|
||||
The client-rendered Herdr UI uses a stable endpoint generation for local and SSH
|
||||
servers. Client and server builds do not need to match. During connection setup,
|
||||
they agree on the core snapshot, screen, input, and blob codecs, and the server advertises
|
||||
the API methods it supports. A missing method disables only that action on that
|
||||
machine; it does not disconnect the UI. Servers from before endpoint generation
|
||||
1 need one final update.
|
||||
|
||||
Check the server protocol with `ping` or `herdr status` before depending on new behavior. Handle unknown fields gracefully.
|
||||
The numbered binary protocol remains for same-install and internal operations,
|
||||
including direct terminal attach and live handoff. Check `ping` or `herdr status`
|
||||
before using those operations across different builds. JSON API clients should
|
||||
ignore unknown fields and handle unsupported methods as normal errors.
|
||||
|
||||
Reference in New Issue
Block a user