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
page.json+1−1@@ -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.382",+ "version": "2.0.383", "tags": [ "skills", "pup",
skills/pup-progress/SKILL.md+18@@ -64,3 +64,21 @@ pup_progress {mode:"off"} # the crawl is done — never leave a stale b several windows, give each its own progress only if each genuinely has its own long task. 4. Progress is Windows-only and skipped in minimal-touch mode; calling it elsewhere is a safe no-op, so you never need to platform-check first.++## Measured progress on pup's own slow verbs (v2.0.383, Bridge SDK #59/#64)++pup reports its own slow work in the SDK's measured-progress shape, so a bar can be drawn from it:++- **Terminal frame**: `pup_open_window` returns `progress` with `phase` (`cold_start` when a browser+ process was spawned, `open_window` when a window joined a running browser), `percent: 100`,+ `elapsedSec` (actual), `estimatedSec` (the median of THIS machine's rolling history for that+ start kind), `confidence` (`measured` once 3+ samples exist, else `estimated`) and `startKind`.+- **Live rows**: `pup_readiness` (the fast status verb, `statusVerb` everywhere) returns `active[]`,+ one row per in-flight phase: opens in flight, the Chrome-for-Testing download (percent + ETA from+ the real byte rate), a consent toast waiting on the user (`blockedBy`), or a browser dialog+ (`blockedBy`). Empty `active[]` means idle. Poll it once a second while a slow verb runs.+- **Window etiquette** (SDK #63): every open/raise/lower response carries+ `windowEtiquette: "background" | "foreground"` (the key to branch on; `placement` stays as the+ legacy alias), and a bare `foreground:true` is refused with `errorCode: foreground_reason_required`.+- `pup_describe` exposes `progressContract` (status verb, slow verbs, blockedBy phases) and the+ timing history (`timings`) the estimates come from.