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.
pup_open_window must return early with progress on slow opens (SDK #59): heavy sites on a small VM exceed ab's verb budget while the window is created anyway
Measured on winvm (4 vCPU Azure VM, ab 2.0.97, pup 2.0.390/391) during the 2.0.390 release sweep, 2026-09-04. Opening mouser.com, ti.com/product/LM317 and an isolated-profile window took 45-65s wall clock each under load, and 60s for a Mouser product page on an idle VM. Two caps bit in sequence: pup's own server.timeout of 45s (fixed in 2.0.391, socket budget now 260s), then ab's per-verb budget - winvm's ab 2.0.97 applies 60s to pup_open_window regardless of the 150s pup declares in bridge.json, and an explicit timeoutSeconds arg does not extend it. In every case the window WAS created (it appears in pup_list_windows with its final title moments later), so the caller is told the open failed while pup succeeded; a retry with the same sessionId is then refused as owned by the same thread's earlier open, and a retry with a new sessionId duplicates the window. The Bridge SDK rule (#59) already says what to do: a long verb returns {started, jobId, statusVerb, progress} and stays pollable, never blocking past its budget. Proposed: pup_open_window budgets ~35s for window creation + navigation; if the page has not reached domcontentloaded or the post-nav stages (park re-assert, identity stamp, overlay, render probe) are still running, respond ok:true with loading:true, windowEtiquette, a progress frame {phase:'navigating', percent<100, elapsedSec, estimatedSec from history} and a _hint to poll pup_readiness active[] (which already carries in-flight opens) or pup_wait; the deferred stages continue in the background. Also record per-stage timings so the estimate is measured, not guessed. Both laptops opened the same 10 destinations in 1-7s each, so this is a small-box problem, but small boxes are exactly what new users have.