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
Cross-box permission prompts never reach the embedded Hydrogen: render_mirrored_request shows a toast + ab card only (John saw the toast, nothing in ah); stale remote cards never dismissed
John, 2026-09-08, on AdomLapper (ab 2.1.72 embedded under Hydrogen 1.0.281): "I just saw this ab toast ('Permission request on winvm ... Open Adom Bridge to decide it here') but didn't see anything in ah." Confirmed and measured:
- AdomLapper ab
desktop_ui_state: 4 cards, allremote: {machine: winvm, via: relay}(3 shell, 1 grant), i.e. the cross-box prompts arrived and ab rendered them in ITS window and as a Windows toast. - AdomLapper Hydrogen main window DOM: 0
.perm-card. Hydrogen's control log has no/permission/requestfor them. - On the ORIGIN box (winvm) the same prompts DID reach Hydrogen: "SHELL COMMAND / ON WINVM" with the decoded command and Once/1h/24h/Auto/Deny, "GRANT REQUEST / ON WINVM", and a notify-decision "DECISION / ON WINVM" with the verbatim buttons. So the local mirror works; the cross-box one never reaches ah.
Why (2.1.72 source): permission_mirror::request calls hd_bridge::mirror_permission_request when embedded, then fans out to mesh and relay. On the RECEIVING box, mesh::render_mirrored_request (used by both the mesh accept loop and the relay perm_mirror_request handler) shows a toast, emits shell-approval-request to ab's own window and logs "MIRROR: permission prompt from {peer}", but never calls hd_bridge::mirror_permission_request. The one exception is the firewall notice (commands.rs ~2390), which is forwarded explicitly. Everything hydrogen#66 describes ("Render the box name loudly ... A decision made in ah's dialog runs on that box") assumes the card gets to ah in the first place; today it does not.
This is exactly the Ray case: Windows toasts hidden, ab in the tray, so a prompt raised on any other of his boxes is invisible.
Fix: in render_mirrored_request, after building the composite body (id remote:<peer>:<realId>, remote{...}, machine), forward it to ah when embedded (hd_bridge::mirror_permission_request(body.clone())), and forward the matching mesh-permission-dismiss / perm_mirror_dismiss as hd_bridge::mirror_permission_dismiss(composite, decision). ah already renders the machine chip and posts /permission/resolve {id, decision} back to the local ab; ab's resolve must accept the composite id and route it through mesh_resolve_permission (realId + resolveNonce), the same path its own card click uses. desktop_ui_decide shows that path exists.
Second observation from the same data: the 4 remote cards on AdomLapper are STALE. The gated relay calls on winvm returned needs_approval at once and their prompts were gone from winvm's stack within seconds (Hydrogen's self-heal closed them: "no longer pending on AB"), but no dismiss reached the laptop, so ab's card stack there still lists them 20 minutes later. Either the origin should send perm_mirror_dismiss when it drops a request without a decision (expiry), or receivers should apply the same 330 s expiry cap Hydrogen uses.
Evidence: winvm Hydrogen DOM dumps and screenshots in hydrogen-desktop docs/preprod/preprod-1.0.280-2026-09-07.md (2026-09-08 mirror addendum).