Pup - the AI's own browser
Public Made by Adomby adom
pup gives your AI a real browser on your desktop that it drives completely, in the background, signed in as you: windows that never jump in front of your work, one shared profile that learns your logins, and every window labeled on the taskbar with its AI thread's name.
Rename the Chrome whole-screen recorder to pup_screen_record_* / pup_recorder_* (aliases first); desktop_record_* becomes ab-core native (adom-bridge#143)
Context: adom/adom-bridge#143 (the whole-desktop recorder lives in pup under desktop_record_* / desktop_recorder_*, so on a box where pup cannot spawn the desktop recorder dies with it). John's direction today, 2026-09-05: BOTH recorders stay, because each does things the other cannot, but the namespaces split by owner: everything pup implements is a pup_* verb, everything ab-core implements owns desktop_*.
Why both stay (what Chrome's getDisplayMedia recorder gives that a native Rust recorder does not): the OS share picker as the consent surface (the user physically chooses screen / window / tab), system audio + mic mixing with zero platform code, hardware-accelerated VP9/AV1 MediaRecorder to WebM (streaming-friendly), tab-audio capture, cursor/surface-switching options, and it is cross-platform (macOS/Linux) where ab's WGC path is Windows-only. What ab-native gives that pup cannot: no browser or Node dependency, background capture of an occluded window without foregrounding, no modal picker (ab's own consent gate), H.264 MP4 via Media Foundation, and it survives a broken pup.
The ask for pup-bridge:
- Add
pup_screen_record_start/stop/status/listandpup_recorder_open/closeas the canonical names for the Chrome recorder (same args + behavior as today's desktop_record_* / desktop_recorder_*). Additive now: keep the old names working as aliases so no caller breaks. - Keep the
desktop_recorder_/desktop_record_prefix claims in bridge.json ONLY until ab-core ships nativedesktop_record_*(WGC monitor capture + WASAPI loopback to MP4, same args). ab 2.1.31 already gives ab-core precedence on any verb it serves natively and warns on a bridge's desktop_ claim; when ab-native lands, drop the two prefixes from bridge.json and the old names route to ab. - Hints: the
pup_screen_record_*responses should say this is Chrome screen-share recording (WebM, picker consent) and point atdesktop_record_*for the native no-browser MP4 path, so a calling AI can pick the right one for its needs.
ab-side (this thread): docs already say who serves what today (VERBS.md / RECORDING.md in the 2.1.31 pkg); the CLI's routing of desktop_record_* to the browser bridge flips to ab-core when native lands; new skill text will describe the two recorders side by side.