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.
master
John Lauer
docs/contract: golden fixtures recorded from the Node build 2.0.399 for the Rust port
71c0e87
1mo ago
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
{
"_hint": "Ready — pup will drive chrome-for-testing (cache) at C:\\Users\\azureuser\\.cache\\puppeteer\\chrome\\win64-148.0.7778.97\\chrome-win64\\chrome.exe. Available: chrome-for-testing(cache), edge(system). Default: chrome-for-testing (auto). No download needed. Proceed with pup_open_window. Switch/install with pup_use {browser:\"chrome\"|\"edge\"|\"cft\"|\"auto\"}. RECOVERY NOTE: if you were polling this because pup's verbs were TIMING OUT (dim LED in AD / browser.bridgeRunning:false), that means the bridge PROCESS was down — a status probe like this does NOT respawn it; only a window/tab verb (pup_open_window) auto-spawns the bridge. And never SPAM pup_open_window while it says \"bridge_starting\" — concurrent opens on one profile used to collide (fixed v1.9.4, but still: fire ONE open, then poll pup_list_windows with backoff).",
"_next": [
"pup_prewarm",
"pup_open_window"
],
"_timeoutHint": "ab waits up to 60s for this verb before the request times out. If it's a long operation (cloud open / download / export), DON'T treat a timeout as failure — the work usually keeps running on the bridge. Poll `pup_readiness` until it reports done.",
"active": [],
"browserExecutablePath": "C:/Users/azureuser/.cache/puppeteer/chrome/win64-148.0.7778.97/chrome-win64/chrome.exe",
"browserKind": "chrome-for-testing",
"browserSource": "cache",
"bytesDownloaded": 0,
"bytesTotal": 0,
"cacheDir": "C:/Users/azureuser/.cache/puppeteer",
"candidates": [
{
"executablePath": "C:/Users/azureuser/.cache/puppeteer/chrome/win64-148.0.7778.97/chrome-win64/chrome.exe",
"kind": "chrome-for-testing",
"source": "cache"
},
{
"executablePath": "C:/Program Files (x86)/Microsoft/Edge/Application/msedge.exe",
"kind": "edge",
"source": "system"
}
],
"chromeBuildId": "148.0.7778.97",
"chromeExecutablePath": "C:/Users/azureuser/.cache/puppeteer/chrome/win64-148.0.7778.97/chrome-win64/chrome.exe",
"chromeForTestingInstalled": true,
"chromeStableAwaitingApproval": false,
"chromeStableError": null,
"chromeStableNotifyChannel": null,
"chromeStableNotifyPeers": null,
"chromeStablePhase": "idle",
"defaultBrowser": {
"forced": false,
"kind": "chrome-for-testing",
"pendingInstall": false,
"source": "cache"
},
"diskFreeMb": 79888,
"downloadElapsedSec": null,
"downloadEtaSec": null,
"durationMs": 40,
"error": "",
"installPhase": "unknown",
"installProgressPct": 0,
"installing": false,
"installingChrome": false,
"lastError": null,
"lastErrorCode": null,
"lowDisk": false,
"nodeInstalled": true,
"nodeVersion": "v22.11.0",
"output": "{\"ready\":true,\"browserKind\":\"chrome-for-testing\",\"browserSource\":\"cache\",\"browserExecutablePath\":\"C:\\\\Users\\\\azureuser\\\\.cache\\\\puppeteer\\\\chrome\\\\win64-148.0.7778.97\\\\chrome-win64\\\\chrome.exe\",\"candidates\":[{\"kind\":\"chrome-for-testing\",\"source\":\"cache\",\"executablePath\":\"C:\\\\Users\\\\azureuser\\\\.cache\\\\puppeteer\\\\chrome\\\\win64-148.0.7778.97\\\\chrome-win64\\\\chrome.exe\"},{\"kind\":\"edge\",\"source\":\"system\",\"executablePath\":\"C:\\\\Program Files (x86)\\\\Microsoft\\\\Edge\\\\Application\\\\msedge.exe\"}],\"defaultBrowser\":{\"kind\":\"chrome-for-testing\",\"source\":\"cache\",\"forced\":false,\"pendingInstall\":false},\"nodeInstalled\":true,\"nodeVersion\":\"v22.11.0\",\"chromeForTestingInstalled\":true,\"chromeExecutablePath\":\"C:\\\\Users\\\\azureuser\\\\.cache\\\\puppeteer\\\\chrome\\\\win64-148.0.7778.97\\\\chrome-win64\\\\chrome.exe\",\"chromeBuildId\":\"148.0.7778.97\",\"installing\":false,\"installPhase\":\"unknown\",\"installProgressPct\":0,\"unpackBytes\":0,\"unpackElapsedSec\":null,\"unpackMethod\":null,\"bytesDownloaded\":0,\"bytesTotal\":0,\"downloadElapsedSec\":null,\"downloadEtaSec\":null,\"lastError\":null,\"lastErrorCode\":null,\"cacheDir\":\"C:\\\\Users\\\\azureuser\\\\.cache\\\\puppeteer\",\"diskFreeMb\":79888,\"lowDisk\":false,\"installingChrome\":false,\"chromeStablePhase\":\"idle\",\"chromeStableAwaitingApproval\":false,\"chromeStableNotifyChannel\":null,\"chromeStableNotifyPeers\":null,\"chromeStableError\":null,\"puppeteerLoadError\":null,\"active\":[],\"_hint\":\"Ready — pup will drive chrome-for-testing (cache) at C:\\\\Users\\\\azureuser\\\\.cache\\\\puppeteer\\\\chrome\\\\win64-148.0.7778.97\\\\chrome-win64\\\\chrome.exe. Available: chrome-for-testing(cache), edge(system). Default: chrome-for-testing (auto). No download needed. Proceed with pup_open_window. Switch/install with pup_use {browser:\\\"chrome\\\"|\\\"edge\\\"|\\\"cft\\\"|\\\"auto\\\"}. RECOVERY NOTE: if you were polling this because pup's verbs were TIMING OUT (dim LED in AD / browser.bridgeRunning:false), that means the bridge PROCESS was down — a status probe like this does NOT respawn it; only a window/tab verb (pup_open_window) auto-spawns the bridge. And never SPAM pup_open_window while it says \\\"bridge_starting\\\" — concurrent opens on one profile used to collide (fixed v1.9.4, but still: fire ONE open, then poll pup_list_windows with backoff).\",\"_next\":[\"pup_prewarm\",\"pup_open_window\"],\"related\":[\"pup_prewarm\",\"pup_open_window\"],\"pitfalls\":[\"ready:false with installing:true just means Chrome for Testing is still downloading — wait + poll, do NOT treat it as an error\",\"installPhase:\\\"failed\\\" → surface lastError to the user (usually network/proxy blocking the download, or low disk)\"]}",
"pitfalls": [
"ready:false with installing:true just means Chrome for Testing is still downloading — wait + poll, do NOT treat it as an error",
"installPhase:\"failed\" → surface lastError to the user (usually network/proxy blocking the download, or low disk)"
],
"puppeteerLoadError": null,
"ready": true,
"related": [
"pup_prewarm",
"pup_open_window"
],
"status": "ok",
"statusVerb": "pup_readiness",
"success": true,
"timeoutSeconds": 60,
"unpackBytes": 0,
"unpackElapsedSec": null,
"unpackMethod": null
}