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
register_container adds a SECOND connection to a relay ab already reaches via Hydrogen: dedups on name not relay, no unregister_container, and it clobbers bridge.last_slug
Filed by Claude (AI) after doing exactly the wrong thing during the #109 triage on ConfRoomROG. The AI could not tell that ab was already Hydrogen-managed, so it "helpfully" registered the workspace as a second connection. Nothing refused it, nothing warned, and the user spotted the problem himself in the Connections panel:
"i should NOT see that container entry in there cuz it now conflicts with the 'hydrogen / managed by hydrogen' setting. so that worries me cuz you could end up in a messaging loop."
What happened
While diagnosing "no desktop client connected" (which was really #109 — ab 2.0.91 crash-looping), the AI ran the documented preferred setup path:
adom-bridge register_container '{"name":"container","url":"ws://localhost:7380/proxy/8765/"}'
→ {"ok":true, "was_duplicate":false, "id":"0f5665b0-…"}
Once ab 2.0.92 came up, the Connections panel showed 4/4 connected:
galliaApril [AdomLapper] Disconnect
GrokBot Disconnect
hydrogen Managed by Hydrogen
container Disconnect ← the AI's entry
hydrogen and container are the same relay in the same workspace, reached twice. was_duplicate:false is technically true (no name collision) and substantively false (that relay was already connected).
Why this is worse than untidy
- Two live WS connections to one relay. The user's own read is the concern to design against: a command path that can be delivered twice, or feed back on itself.
- It contradicts a UI state ab itself renders. The panel says
Managed by Hydrogenfor that relay — and then offers a second, unmanaged, user-Disconnect-able row for the same thing. Whoever is right, both cannot be. - It is the recommended path.
setup_desktopreturnsregister_commandas the "⭐ PREFERRED, ZERO-PASTE path", and the ab skill says to prefer it. An AI following the documentation correctly lands here. This is a guardrail gap, not user error. - It is nearly invisible from the container. Nothing in
register_container's response hints that the target already reaches this relay.
Asks
1. Refuse (or loudly warn) when the target already reaches that relay. Dedup on resolved relay identity, not entry name. If a connection to the same relay exists — especially a Hydrogen-managed one — return ok:false with errorCode:"already_connected_via" naming the existing entry, plus an explicit override (force:true) for the rare genuine case. was_duplicate should mean "you already have this connection", not "the name was taken".
2. Teach register_container about embedded mode. ab knows it is Hydrogen-managed (embedded.json, hd-managed, desktop_embedded_status). A cloud container registering the relay that Hydrogen already owns should be the specific thing this verb declines by default.
3. Ship unregister_container — the inverse does not exist. Reverting today means knowing that register_container writes three cloud keys, not one:
bridge.container.<id> the ServerEntry
bridge.last_slug overwritten with the new id
bridge.enabled set true
…and that a local server_remove alone is undone by the next cloud sync (boot / sign-in / hourly). The actual revert was a raw Carbon PATCH per key plus server_remove — reverse-engineered from a _hint. That is too much standing on the caller for a verb this easy to invoke.
4. bridge.last_slug is clobbered with no way back. It is overwritten unconditionally and the prior value is unrecoverable, so even a perfect revert cannot restore the previous state — it can only null the key. Either preserve the old value for rollback, or stop writing it as a side effect of registration.
5. Make the danger legible in setup_desktop. It happily emitted the register_command for a machine already connected via Hydrogen. If it detects a reachable Hydrogen-managed ab, it should say so and recommend doing nothing.
Related
- #109 — the 2.0.91 crash loop that started this triage
- #106 — cloud server sync (same KV surface)
- #71 — Connections panel refresh (same panel)
Also being documented from the other side: hydrogen-adom-bridge-triage in adom/hydrogen-bootstrap (0.5.13) now tells agents not to call register_container when Hydrogen manages ab, and how to fully revert one. That is a workaround in a skill; the guardrail belongs in the verb.