feat: recover stale sidecars via health handshake - #2
Merged
Merged
Conversation
GUI and CLI now share one attribution rule: a token-verified health pid is enough to retire; port scan and pidfile are fallbacks only if the process is alive and its cwd is an install dir. The sidecar writes the pidfile after bind, unlinks only its own pid, and exits on listen error. This stops an outdated daemon on 7878 from leaving Speak stuck, without killing a foreign process that happens to hold the port.
Ship callebtc's SKILL.md and expose `sayit skill path|install` so agents get the file without claiming it as this fork.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
An outdated sidecar on 7878 leaves Speak stuck and the CLI talking to a daemon that does not match this install. Killing whatever holds the port is unsafe if the process is not ours.
What
GET /v1/healthwith version, protocol, and pidservice status|startuses the same rule; 401 is foreign; 5xx/timeout are unhealthy