app
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.
← Commit history
Publish 2.0.741
3 files changed
+14−4
package.json+2−2@@ -1,6 +1,6 @@ { "slug": "pup-bridge",- "version": "2.0.740",+ "version": "2.0.741", "type": "app", "description": "The pup SKILL PACK: the AI skills that teach a cloud/container AI how to drive the Bridge Puppeteer (pup) bridge (pup_* verbs): the everyday `pup` skill plus focused sub-skills for windows/sessions/tabs, screenshots+recording, browsers+Chrome install, and driving the Adom wiki. Installs into ~/.claude/skills + ~/.codex/skills. DOCS ONLY \u2014 this is NOT the bridge runtime. The bridge itself (the Node program that drives the browser) runs on the DESKTOP: Adom Bridge bundles it and auto-installs/updates it, and it's published separately on the Releases tab as adom-bridge-puppeteer-v<ver>.zip. The pkg version is kept in lockstep with the Release version so the page's max version row always carries BOTH a pkg tarball (skills) and a runtime zip (bridge) \u2014 a skills-only or runtime-only bump on the top row breaks constraint installs. TL;DR: pkg install = the skills for your AI; the bridge = the Release zip, which Adom Bridge manages for you.", "keywords": [@@ -201,5 +201,5 @@ "prompt": "Download the puppeteer-bridge zip from the wiki and walk me through server.js" } ],- "changelog": "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."+ "changelog": "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:<email>\" picks which browser profile nb reads (pup-bridge#140)." }
page.json+2−2@@ -4,7 +4,7 @@ "slug": "pup-bridge", "title": "Pup - the AI's own browser", "brief": "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.",- "version": "2.0.740",+ "version": "2.0.741", "tags": [ "skills", "pup",@@ -221,5 +221,5 @@ "Kyle Bergstedt <[email protected]>", "Colby Knox" ],- "changelog": "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."+ "changelog": "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:<email>\" picks which browser profile nb reads (pup-bridge#140)." }
skills/pup-import-logins/SKILL.md+10@@ -49,6 +49,16 @@ adom-bridge --ai-thread "<your thread>" pup_import_browser_logins '{}' nb to delete the file. Passwords never pass through you or the container, and are never printed. This survives Chrome updates, because Chrome is the one decrypting. +- **Which browser profile.** nb reads the active profile of the user's browser, and the answer says which in+ `profile`. Got `no_data` but the user has saved logins? They are in another profile: `nbrowser_profiles` lists+ them, then call again with `profile:"chrome:[email protected]"` (works for `sessionFor` too).+- **Where nb cannot run (2.0.741, pup-bridge#145).** If nb is not installed, is older than 0.16.45, or has no+ extension connected in the user's browser, pup uses Adom Bridge's older decrypt helper instead: the user approves an+ Adom Bridge request (inside Hydrogen it can appear as a toast or a card, on any of their machines) and then a Windows+ admin prompt on the PC itself. The answer says `via:"ab-helper"` and why in `nbUnavailable`. That path reads Edge+ and Brave but not Chrome 156 or later, so for Chrome the real fix is nb with its extension (`nbrowser_readiness`).+ A user's own answer through nb (Hello declined, no session) is never retried this way.+ After it finishes, reload the sign-in page (`pup_reload {}`). pup fills it in the background and says so in `_autoLogin`. Confirm the live domain is the site you meant, then `pup_login {submit:true, submitReason:"<why this domain is right>"}` to sign in.