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
pup owns the desktop_record_* / desktop_recorder_* verbs; ab core must own whole-desktop recording (native WGC + loopback audio) and refuse desktop_ prefix claims from bridges
John, 2026-09-05, after the recorder failed on arav-rog: "if pup has somehow taken over those desktop* verbs that's a disaster cuz that is not how its supposed to work". Filing on his ask.
What the code does today
- pup-bridge 2.0.396 owns the whole-desktop recorder.
src/bridge.jsonclaims the verb prefixesdesktop_recorder_anddesktop_record_(next topup_andbrowser_) and listsdesktop_recorder_open,desktop_record_start,desktop_record_stop,desktop_record_status,desktop_record_list,desktop_recorder_closeas its verbs.src/server.jsimplements them ("DESKTOP recording: one global recorder"): the HUD is a Chrome window in a separate_recorderprofile, capture is ChromegetDisplayMediato .webm. - ab core owns only the native per-window recorder:
record_window_start/record_window_stop/record_window_status(wgc_record.rs, Windows Graphics Capture + Media Foundation to MP4, no picker, background-capturable). Nothing in ab implementsdesktop_record_start. - ab's own docs say the opposite.
skills/VERBS.mdlistsdesktop_record_*anddesktop_recorder_*under ab-core "Capture & recording";skills/RECORDING.mdcalls it "Adom Bridge's consent-gated desktop recorder" and explicitly says tab recording is pup's feature, "not this skill". A reader (John included) comes away believing ab records the desktop and pup records tabs. The wire says pup does both.
Why it matters (measured tonight)
On arav-rog the puppeteer bridge cannot spawn (npm install failed for cache bridge, 496 attempts, in backoff: #142). Every desktop_record_* and desktop_recorder_* verb on that box therefore dies with pup (Request timed out), while ab-core verbs on the same box (list_windows, screenshots, record_window_*) answer fine. A whole-desktop recording with system audio is impossible there until Node, npm and Chrome for Testing all work. A desktop capability should not depend on a browser automation bridge being healthy.
Asks
- Move whole-desktop recording into ab core, native: Windows Graphics Capture on a monitor (
GraphicsCaptureItemfrom an HMONITOR, the same stackwgc_record.rsalready uses per HWND) plus WASAPI loopback for system audio, muxed to MP4 by Media Foundation. Same verb names and args as today (reason,confirmDesktopNotTabRecording,monitor,fps,audio,maxDurationMs), so callers do not change. No Chrome, no HUD process to spawn; the consent surface becomes ab's own overlay (like the demo panel), still always visible while a take runs. - Stop pup from claiming
desktop_*prefixes. ab should refuse a bridge manifest that claims adesktop_prefix (that namespace is ab core's), and pup's bridge.json dropsdesktop_recorder_/desktop_record_. If a transition period is needed, ab-core takes precedence when both claim a verb. - Fix the docs now, independent of 1 and 2: VERBS.md and RECORDING.md must say who serves
desktop_record_*today (pup) until ab-core does.
Related: #142 (pup never spawns on arav-rog), pup-bridge is the other half of this change.