Adom Bridge
Public Made by Adomby adom
Adom Bridge unleashes your AI onto your full PC: full power, full safety. The AI breaks out of the container it runs in and onto your real machine, managing and running your entire laptop as you: launch apps, move files, drive any window, control KiCad, Fusion 360 or your real signed-in browser. Works with any AI, cloud or local (Claude Desktop, Claude Code, Codex), no Hydrogen required. Bridge and its bridges are an operating system for AI, with managed Node and Python runtimes, and a human-onl
Supervisor loses tracked bridge pids within ~60s; with the 1500ms marker probe this turns one wedged moment into pup-bridge#557's permanent reap loop
ab's bridge supervisor loses its tracked pids within ~60s of spawning, so every recovery path degrades to "reaped 0 pid(s)" against a live process; combined with the 1500ms health-marker probe, this turns one wedged moment into the pup-bridge#557 permanent outage.
Repro'd live on ADOMLAPPER (ab 2.0.9, adom-bridge-cli 2.0.1) during the pup-bridge#557 recovery, with pup's own lifecycle audit as evidence.
1. Tracked pids evaporate (the core bug)
From adLifecycle (pup's bridge_log_read):
[AD 06:37:26] spawned process pid 36008 (node.exe)
[AD 06:38:18] recover_not_listening: processWasLive=false trackedLivePids=[] port=Some(64230) portServesHealthyMarker=false — about to reap
52 seconds after ab spawned pid 36008, trackedLivePids is already [] while that process is alive, bound, and serving verbs. Every subsequent recovery is blind: bridge_kill confirm:true returns killedPids: [], reap_bridge_report frees nothing, and the orphan keeps the port so each replacement dies on EADDRINUSE. That is the #557 "retry loops forever" outage. (Your own #560 instrumentation names this the ghost case; this is a live confirmed instance of it, in the inverted direction: the belief is DEAD while the process is ALIVE.)
2. The 1500ms marker probe misjudges a busy node bridge
probe_bridge_marker gives the bridge 1500ms to answer /health. A node bridge that does synchronous native work (pup runs PowerShell via execFileSync for window management) can block its event loop past 1500ms while perfectly healthy, so portServesHealthyMarker=false fires against a live instance and the reap/spawn cycle begins. pup 2.0.17 reduced its own blocking (resolution backoff), but the probe deserves margin: 5s, or two strikes before "unhealthy", or probe twice.
3. Both mitigations pup shipped (for context, not as the fix)
- pup 2.0.16: on EADDRINUSE at startup, the replacement probes the holder's
/health; if it identifies as a sibling pup bridge it kills that ONE pid and retries the bind. This converges the orphan case in 1-2 verb retries instead of forever. Verified:bridge_kill(killedPids=[]) with 6 open windows now self-recovers, all sessions intact, no manual cleanup. - pup 2.0.17: hwnd-resolution backoff so the event loop stays responsive to the 1500ms probe.
But these are defense-in-depth. The reaper should not need the victim's cooperation: when tracked pids are gone, fall back to (a) the pid that OWNS the assigned port (Get-NetTCPConnection), and (b) the spawned process's child tree. "reaped 0 pid(s)" with a bound port should be impossible.
4. Naming sweep in the same code path (ask 4 of #557)
The user-facing error still says AD:
"The 'puppeteer' bridge process was running but never bound its port (64230). AD reaped it (0 pid(s)); RETRY your verb"
Per the definitions page, copy says ab or Bridge; AD is dead outside frozen identifiers. Same for the [AD ...] prefix in the adLifecycle lines and the other recover/reap log strings in dynamic_bridge.rs.
Asks
- Fix pid tracking so it survives longer than a minute (or re-adopt by port owner at probe time: the marker probe already proves which pid serves the port).
- Reap fallback: port owner + child process tree when tracked pids are empty.
- Widen/soften the 1500ms marker probe (5s, or 2-strike).
- Rename AD -> ab/Bridge in the user-facing strings of this path.
Full incident narrative: pup-bridge#557 (now recovered and closed out with acceptance evidence).