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.
Releases 1188
Standalone per-platform binaries to download and run, no tools needed. The newest is pinned on top.
Login import keeps working where nb cannot run it (pup-bridge#145): pup asks nb first, and only when nb is missing, older than 0.16.45 or has no extension in the user's browser it uses Adom Bridge's older decrypt helper, as 2.0.737 did; nb's own answers (Hello waiting, no session, export failed) now reach the caller instead of nb_call_failed, and profile:"chrome:" picks which browser profile nb reads (pup-bridge#140). Promoted to public on 2026-11-05.
Stable link for websites and docs: /download/adom/pup-bridge/latest
All releases showing 1-20 of 1188
Login import keeps working where nb cannot run it (pup-bridge#145): pup asks nb first, and only when nb is missing, older than 0.16.45 or has no extension in the user's browser it uses Adom Bridge's older decrypt helper, as 2.0.737 did; nb's own answers (Hello waiting, no session, export failed) now reach the caller instead of nb_call_failed, and profile:"chrome:" picks which browser profile nb reads (pup-bridge#140). Promoted to public on 2026-11-05.
New verb pup_upload_file (pup-bridge#145): put a file from this PC on a page's file input with no OS dialog, at any size, on both lanes, including an input the page creates when Browse is clicked; it checks the path first, reads the input back, gives the page one change event per call, and refuses key and password files, AppData, system folders and network paths.
Never a bare Chrome taskbar button during recovery (pup-bridge#143): an OS-level health-tick safety net stamps a pup identity on any pup Chrome-for-Testing window that has no session yet (the gap after a restart or worker-reload cycle while the extension channel re-handshakes), so a pup window never falls back to the stock Chrome button; it reads+stamps only and never touches the lane/kill paths, and the real per-thread tile upgrades it once adopt_stray re-adopts the window.
Login import cut over from ab's retired decrypt helper to nb-bridge: passwords via nbrowser_export_saved_logins (Chrome's own consented export, one Windows Hello), a site session via nbrowser_export_site_session (background cookie read), both handed over as a machine-local file that pup imports then drops; new RFC4180 CSV parser with tests. Fixes the Chrome 156 ABE breakage (adom/adom-bridge#254, adom/pup-bridge#136).
WebRTC streaming apps work in pup again (pup-bridge#137): pup no longer launches its browser with --force-webrtc-ip-handling-policy=disable_non_proxied_udp and now writes Chrome's default WebRTC routing back into the profile, repairing existing profiles. The restriction never stopped the Windows Firewall prompt (#91; Adom Bridge's firewall rule handles that) and it left WebRTC media apps such as Google's Project Genie with no UDP candidates, so their calls never connected. Also: the site-session import reads Adom Bridge's source_browser / source_profile / http_only cookie fields, and its 'no session' answer explains what came back (from 2.0.736). Includes 2.0.735.
The site-session import (pup_import_browser_logins {sessionFor}) explains a 'no session' answer: how many cookies came back per browser profile, the decrypt stats, near matches and the field names (never a value), so a signed-in site that does not come over can be traced (John's laptop, 2026-10-28). Includes 2.0.735.
x.com and other sites that refuse a fresh sign-in from pup's browser (John, 2026-10-27, pup-bridge#136): pup_import_browser_logins {sessionFor:'x.com'} brings the user's existing signed-in session for one site over from their own Chrome or Edge (the same Adom Bridge consent and Windows prompt as the password import), sets its cookies in pup's browser, and never prints them. A popup a pup click opens (an OAuth or Sign in with Google window) is adopted in the background within about 2 s instead of 30 to 40 s, and the click's answer says where it will appear, so an AI drives it with pup verbs and never reaches for the real mouse. New login recipe login-recipes/x.com.md; the pup-import-logins skill covers the session import. Includes 2.0.734.
pup keeps its own browser on the current Chrome Stable, silently (John, 2026-10-25: 'New Chrome available' showed in a pup window; pup had pinned one Chrome for Testing build, which has no updater, and it had fallen four major versions behind). A few minutes after start and every 6 hours pup checks Google's Chrome for Testing Stable channel and downloads a newer build in the background; the next browser start uses it. If pup's browser is still on the old build, pup restarts it once when no AI has used pup for 10 minutes and the user is not looking at a pup window; every window comes back at its page. The cache pruner now keeps the newest build instead of the pinned one, and readiness counts a newer build as ready. Setting browserAutoUpdate (on by default). Includes 2.0.733.
pup tells an AI about importing the user's own logins before anyone is stuck at a sign-in page (John, 2026-10-20: 'i'd rather him auto discover it'). The first pup window each AI thread opens on Windows carries a one-time _importTip while pup has fewer than 5 saved logins (setting importTipBelow) and no import has ever run; it never repeats after the first import. Plus, from 2.0.732: the extension lane, every window's default, now handles sign-in pages after each open and navigate (fills a saved login in the background, never submitted; otherwise _loginTip tells the AI to offer pup_import_browser_logins, one Adom Bridge approval plus one Windows prompt, and on a Mac says what works instead), the new pup-import-logins skill, and login phrases in the wiki page's discovery triggers and pitch. Includes 2.0.730.
pup now handles sign-in pages on the extension lane, every window's default, and tells the AI it can import the user's own logins (John, 2026-10-20: AIs never offered it, even to users who hit logins all the time). After each open and navigate, a page with a password field is filled in the background from the vault when pup has the login (never submitted; _autoLogin says so), and when it has none the answer carries _loginTip: on Windows it tells the AI to OFFER pup_import_browser_logins (every password saved in the user's own Chrome or Edge, in one Adom Bridge approval plus one Windows prompt); on a Mac, where that import is not available yet, it says what works instead. New skill pup-import-logins with the words people use when a login is in the way; the main pup skill says the same near the top; the wiki page's discovery triggers and pitch now cover logging in. Includes 2.0.730.
pup now handles sign-in pages on the extension lane, every window's default, and tells the AI it can import the user's own logins (John, 2026-10-20: AIs never offered it, even to users who hit logins all the time). After each open and navigate, a page with a password field is filled in the background from the vault when pup has the login (never submitted; _autoLogin says so), and when it has none the answer carries _loginTip telling the AI to OFFER pup_import_browser_logins: every password saved in the user's own Chrome or Edge, in one Adom Bridge approval plus one Windows prompt. New skill pup-import-logins with the words people use when a login is in the way; the main pup skill says the same near the top; the wiki page's discovery triggers and pitch now cover logging in. Includes 2.0.730.
pup_eval and pup_login work on strict pages again (pup-bridge#130): American Express's login page refuses page scripts with 'eval is disabled', a wording pup's fallback did not recognize, so both failed on the extension lane; they now fall back to the DevTools path as on other strict pages. macOS (Kyle's pull request #5): --use-mock-keychain on every Chrome launch so a new browser build never pops a keychain prompt, a depth-counted capture guard, and tools/rust-build-macos.sh. No change on Windows from the macOS parts. Includes 2.0.729.
pup notices when its browser has lost 3D graphics and fixes it. After its GPU process crashes a few times, Chrome stops using the GPU for the rest of that browser session and current Chrome has no software fallback, so every WebGL page (the wiki's 3D viewer) failed in pup with 'Cannot read properties of null (reading alpha)' (John, 2026-10-20). pup now tests WebGL in one of its windows every 5 minutes; after two failed tests in a row it restarts its browser at a quiet moment (no AI using a pup window for a minute, at most every 30 minutes), checks 3 minutes later that every saved window came back and restarts once more if not (pup-bridge#134), and the user gets a toast saying why. Includes 2.0.727.
pup notices when its browser has lost 3D graphics and fixes it. After its GPU process crashes a few times, Chrome stops using the GPU for the rest of that browser session and current Chrome has no software fallback, so every WebGL page (the wiki's 3D viewer) failed in pup with 'Cannot read properties of null (reading alpha)' (John, 2026-10-20). pup now tests WebGL in one of its windows every 5 minutes; after two failed tests in a row it restarts its browser at a quiet moment (no AI using a pup window for a minute, at most every 30 minutes), every window comes back at its page, and the user gets a toast saying why. Includes 2.0.727.
A pup window waiting on a slow page now explains itself instead of showing a blank PUPBIRTH tab: which AI thread opened it, why, where it is going, how long it has waited, and what a pup window is; after 10 s the tab and taskbar title read 'Opening for (pup)' (John, 2026-10-19). AIs no longer give up with 'CDP is switched off on this box': a lane:"cdp" open on a box with that lane off now opens on the extension lane and says so, every hint that sent an AI to the CDP lane now names the extension-lane way, the skills say plainly that every pup window has CDP-level access, and the new pup_devtools {method, params} sends any DevTools command to a pup window through pup's extension. pup_maximize works on the extension lane (it fills the work area without raising the window; it used to fail). pup's background process queries now start PowerShell with no window, honour their timeout, and use one script file per call. Includes 2.0.725.
A pup window waiting on a slow page now explains itself instead of showing a blank PUPBIRTH tab: which AI thread opened it, why, where it is going, how long it has waited, and what a pup window is; after 10 s the tab and taskbar title read 'Opening for (pup)' (John, 2026-10-19). AIs no longer give up with 'CDP is switched off on this box': a lane:"cdp" open on a box with that lane off now opens on the extension lane and says so, every hint that sent an AI to the CDP lane now names the extension-lane way, the skills say plainly that every pup window has CDP-level access, and the new pup_devtools {method, params} sends any DevTools command to a pup window through pup's extension. pup's background process queries now start PowerShell with no window, honour their timeout, and use one script file per call. Includes 2.0.725.
A pup window stuck on its birth page now gets sent to its address. Testing 2.0.724 on ConfRoomROG showed the gap behind John's PUPBIRTH window: when the navigate after birth answered but the tab never left the birth page, pup recorded the birth page as the window's address, so nothing could ever send it on. The birth page is now never recorded over a real address (live tab sync, tab refresh, both open paths, and re-adoption after a restart), the open logs it, and the health check sends the window on. Includes 2.0.724.
A pup window can no longer sit on the taskbar titled PUPBIRTH-... A new window starts on pup's birth page and is then sent to its address; when that step failed, the failure was swallowed and the window stayed on the birth page for good (John's laptop, 2026-10-17). The open now retries the navigate once, and the health check sends any window still on its birth page 20 s after birth to the address its session recorded (up to 3 tries). Includes 2.0.723.
Closing an isolated pup window can no longer end the main browser. A health sweep dropped the isolated lane while its close was still waiting, the cleanup then fell back to the shared adom-you lane, wiped its record, and the next open ended the live browser as an orphan, taking every pup window with it (John's laptop, 2026-10-15). The lane is now fixed for the whole cleanup, a missing lane is never replaced by adom-you, and a browser that is polling is adopted instead of ended. Includes 2.0.722. Promoted to public on 2026-10-15.
Mac groundwork, part two (Kyle's pull request #4): a capture guard so a screenshot of a pup window parked on a Mac for a while still answers. A no-op on Windows. Includes 2.0.721 (the dashboard no longer blinks).