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.595
4 files changed
+17−11
SKILL.md+12−6@@ -281,12 +281,18 @@ Chrome ever crashes. Read these signals correctly instead of assuming the worst: means "that window is busy, NOT crashed, retry shortly for live values." It does NOT mean pup is broken. (Before v1.9.172 these verbs could hang and return null under load, which read as "pup is frozen", that can no longer happen.)-- **A window vanished / a `_cleanupReport` says a window crashed.** If the shared Chrome crashes, pup's- health loop (15s) detects it and RELAUNCHES every affected window on its own, signed in, in the- background, at its last URL, then reports it via `_cleanupReport` ("pup auto-recovered your …- window after a Chrome crash"). You do NOT need to kill Chrome, clean the profile, or reopen windows- by hand. Wait ~15-30s and re-list; the windows come back. Only if a page crashes Chrome REPEATEDLY- does pup stop retrying it (after 2 attempts) and tell the user the page itself looks unstable.+- **A window vanished and `_cleanupReport` says the user closed it.** pup windows are fleeting: the+ user opens one for the AI's task, looks, and closes it, and that close is FINAL (2.0.595). pup forgets+ the session the moment its window goes and never brings it back on its own. Your next verb on it+ answers `session_not_found`; if you still need the page, open it again with `pup_open_window`, and+ do not treat the close as an error to repair. The same holds when the user closes the last pup+ window and the browser ends with it: nothing is restored.+- **A `_cleanupReport` says a window crashed.** The one restore pup does on its own: a browser that+ CRASHED (a nonzero exit code, the only proof pup accepts) has its windows relaunched by the health+ loop (15 s), signed in, in the background, at their last URLs ("pup auto-recovered your … window+ after a Chrome crash"). You do NOT need to kill Chrome, clean the profile, or reopen windows by+ hand. Only if a page crashes Chrome REPEATEDLY does pup stop retrying it (after 2 attempts). A pup+ restart also restores what was live when it died. - **One window times out but others work = a per-window jam, not a dead bridge.** Verbs are concurrent; a slow/jammed window does not block operations on OTHER windows, and never blocks list/status. If `pup_eval` on window A times out, window B still works and the bridge is fine.
package.json+2−2@@ -1,6 +1,6 @@ { "slug": "pup-bridge",- "version": "2.0.594",+ "version": "2.0.595", "type": "app", "description": "The pup SKILL PACK \u2014 the AI skills that teach a cloud/container AI how to drive the Adom Desktop Puppeteer (pup) bridge (browser_* 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 Desktop 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 Desktop manages for you.", "keywords": [@@ -148,5 +148,5 @@ "prompt": "Download the puppeteer-bridge zip from the wiki and walk me through server.js" } ],- "changelog": "skillpack install script deploys pup-lanes (it was in the tarball but not in the install list, so every container kept the pre-parity lane text; pup-bridge#116)."+ "changelog": "The user's close is final: a pup window closed by hand is forgotten at once and never restored; restore only on a proven browser crash (nonzero exit code) or a pup restart. The orphan about:blank sweep no longer closes a lane's last window or a window being born (it killed a cold lane and triggered a 7-window restore on 2026-09-15). rust/ ships with every release (pup-bridge#117)." }
page.json+2−2@@ -4,7 +4,7 @@ "slug": "pup-bridge", "title": "Pup - Puppeteer Bridge", "brief": "pup is the AI's own browser: a real, full Chrome on the user's desktop that the AI fully controls (a sandbox, not the user's signed-in browser). Rides Bridge; pup_* verbs open windows and tabs, navigate, screenshot, and eval JS.",- "version": "2.0.594",+ "version": "2.0.595", "tags": [ "skills", "pup",@@ -168,5 +168,5 @@ "pup-bridge verbs are invoked through the adom-bridge CLI, not through a binary this package installs, so prefix rules cannot reach them." ] },- "changelog": "skillpack install script deploys pup-lanes (it was in the tarball but not in the install list, so every container kept the pre-parity lane text; pup-bridge#116)."+ "changelog": "The user's close is final: a pup window closed by hand is forgotten at once and never restored; restore only on a proven browser crash (nonzero exit code) or a pup restart. The orphan about:blank sweep no longer closes a lane's last window or a window being born (it killed a cold lane and triggered a 7-window restore on 2026-09-15). rust/ ships with every release (pup-bridge#117)." }
skills/pup-settings/SKILL.md+1−1@@ -125,7 +125,7 @@ flows live in `login-recipes/` on the wiki page. |---|---|---| | `pup_restart_browser` (verb, not a setting) | | The fix when a browser wedges: its windows stop responding to the mouse wheel and their tab strips ignore clicks, while dragging a scrollbar still works. That is Chrome's browser process spinning, not a slow page, and only a restart clears it. pup detects it within about 45 s, toasts you, and this verb saves every tab, ends the browser, and brings the windows and tabs back. | | `idleBrowserQuitMin` | **10** | Minutes a pup browser may sit with NO windows before pup closes it and gives the RAM back (0 = never close it). An empty Chrome still costs 650 MB to 1.2 GB on your machine, most of it a GPU process holding allocations from pages you already closed. The next open relaunches it, still signed in, so the only cost is one cold start. |-| `sleepRecovery` | **on** | After the laptop wakes or Chrome dies, bring every pup window back at its last page, signed in. Never restarts a live Chrome. |+| `sleepRecovery` | **on** | Restore windows after a pup restart, or after the browser CRASHES (a nonzero exit code, the only proof pup accepts). A window you close yourself is forgotten the moment it goes, and closing the last pup window ends the browser cleanly: nothing comes back. pup windows are fleeting (2.0.595). Never restarts a live Chrome. | | `reportIssues` | **on** | Let pup invite AIs to file a wiki issue when they hit something broken. | | `minimalTouch` | **on** | Safety mode from the Chrome-crash hunt: pup keeps its hands off your windows, opens + drives pages only, skips the extra Windows machinery. The per-feature toggles above win over this master switch. |