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.
Releases 1153
Standalone per-platform binaries to download and run, no tools needed. The newest is pinned on top.
Annotate's quick colors are red, blue and green: the muddy yellow/orange third color is gone from the trio and from Multi's automatic cycle (red, blue, green, purple), so every mark has a color anyone can name to the AI. Yellow stays in the More flyout, and every swatch shows its color name on hover (John, 2026-10-07).
Stable link for websites and docs: /download/adom/pup-bridge/latest
All releases showing 1081-1100 of 1153
Hard rule: a window is never moved on-screen until z-bottom is confirmed; under parallel-open load a lagged hwnd lookup used to place an un-bottomed window on top of the user's work; now it retries up to 8x then stays off-screen as an honest park-failed, and park-failed windows self-heal on any status query.
Badge calls now check AD's real result and log failures instead of silently swallowing them, and the tab-path badge debounce only arms on success so a failed badge retries on the next call.
Self-heal windows stranded off-screen by older builds at reattach and on the open_tab/switch_tab hot path, re-badge debounced so long-lived shared windows like adom-shotlog stay clickable and badged; teach anonymous creators the owner param; enrich open_tab and switch_tab describe entries.
Fix the flash 'pending vs cleared' focus latch: install the window-focus hook into the CURRENT document too, not only future navigations, so windows the user already clicked report flash cleared and the still-unseen window is identifiable programmatically.
Park places the window via the OS maximize (CDP windowState) instead of a screen-size probe that could fail mid-navigation and produce 1600x900 windows; move to primary monitor then maximize, no activation.
Fix the user-click detection: use GetForegroundWindow (the OS truth) instead of document.hasFocus which lies for CDP-created windows and false-fired user-foreground on every open; the z-bottom PS call now checks foreground first at zero extra cost.
Direct-API park: CDP setWindowBounds addresses the exact window (parking the wrong window impossible), AD find_window replaces EnumWindows PS, park runs at newPage so no wait loop, verification checks position not focus, badge fires the instant the park lands.
Close the launch gap: a taskbar click during the first seconds now brings the window up on-screen at top full-size instead of activating it invisibly off-screen; unambiguous because no-startup-window means only the user can make the window foreground.
Eliminate the focus steal at the source: background launches use --no-startup-window so the window is created by a background process the OS denies foreground to; the stability watch, timers, and re-parks are deleted, so a user taskbar click at any moment sticks.
Replace the blind-timer background park with one event-driven watchdog: wait for the window to exist, park once deactivate-first, re-park Chrome self-raises within 50ms, exit after 500ms of calm; afterwards nothing ever re-parks so a user taskbar click sticks; open response awaits the self-verified verdict.
Remove the GetLastInputInfo user-click heuristic, which false-fired whenever the user was typing anywhere and left fresh windows small and foreground; launch passes always park full-size, late re-parks use a simple pup-is-foreground check, centered-80 placement removed.
Revert minimize (it broke screenshots, visibilityState hidden hangs captureScreenshot); background is on-screen z-bottom with EnumWindows real-window handle, deactivate-then-park to avoid pop, and a short 1.2s re-park window so user clicks are not fought.
Background state is now MINIMIZE instead of on-screen z-bottom: minimizing hands focus back automatically and removes the re-park retry loop that fought user clicks, so a taskbar click restores the window and it stays; restore rect set on-screen; screenshots still work via disabled occlusion.
Resolve the real browser window via EnumWindows (largest visible Chrome_WidgetWin_1) instead of the flaky MainWindowHandle, which returned a hidden helper window on some boxes and left pup windows stuck off-screen so clicking their taskbar button showed nothing.
User-AI window balance: a deliberate user click now brings the pup window on-screen and shows it instead of activating it off-screen invisibly; browser_alert_window stop truly clears the Win11 flash tint via off-screen activation; programmatic per-window flash state added.
Respect a deliberate user raise: clicking a background pup window to watch a page load no longer forces it back to the background (open-time re-park now detects a real user click via GetLastInputInfo and latches off).
- v1.8.42: pup taskbar badge = the actual Adom favicon (was a hand-composited tile) (John Lauer)
- v1.8.41: pup taskbar badge is now the favicon-style tile — white Adom leaves on a teal rounded-rect (was bare white leaves) (John Lauer)
- v1.8.40: auto-badge pup windows with the white Adom leaves via AD-core desktop_taskbar (custom PNG overlay, AD >=1.9.106) — resolves the window by its (session: id) title, cross-process, on every open (John Lauer)
- v1.8.39: remove in-bridge ITaskbarList3 overlay (in-process-only, doesn't badge the browser's window) — taskbar badge is an AD-core desktop_taskbar capability; filing a pup-distinct-badge request to AD instead (John Lauer)