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
discovery: user-first triggers ('pup','open in pup','open my app in pup',screenshot/record/tabs) + clear pitch + user sample prompts; install.sh deploys to .claude AND .codex skills
3 files changed
+72−33
install.sh+20−12@@ -1,15 +1,23 @@ #!/bin/bash+# Container-side install: drop the pup Claude/Codex skills into the agent skills dir(s).+# The bridge RUNTIME is NOT here — it ships in Adom Desktop + as the Releases zip. set -e PKG_DIR="$(cd "$(dirname "$0")" && pwd)"-SKILLS_DIR="$HOME/.claude/skills"-mkdir -p "$SKILLS_DIR/adom-desktop-puppeteer-bridge"-if [ -f "$PKG_DIR/SKILL.md" ]; then- cp "$PKG_DIR/SKILL.md" "$SKILLS_DIR/adom-desktop-puppeteer-bridge/SKILL.md"-fi-for skill_dir in "$PKG_DIR/skills"/*/; do- [ -d "$skill_dir" ] || continue- skill_name=$(basename "$skill_dir")- mkdir -p "$SKILLS_DIR/$skill_name"- cp -r "$skill_dir"* "$SKILLS_DIR/$skill_name/"-done-echo "Installed adom-desktop-puppeteer-bridge"++deploy_into() {+ local BASE="$1"+ mkdir -p "$BASE/adom-desktop-puppeteer-bridge"+ [ -f "$PKG_DIR/SKILL.md" ] && cp "$PKG_DIR/SKILL.md" "$BASE/adom-desktop-puppeteer-bridge/SKILL.md"+ for skill_dir in "$PKG_DIR/skills"/*/; do+ [ -d "$skill_dir" ] || continue+ name="$(basename "$skill_dir")"+ mkdir -p "$BASE/$name"+ cp -r "$skill_dir"* "$BASE/$name/"+ done+ echo " -> $BASE"+}++echo "Installing adom-desktop-puppeteer-bridge skills (pup + dev/publish sub-skills):"+deploy_into "$HOME/.claude/skills" # Claude Code+[ -d "$HOME/.codex" ] && deploy_into "$HOME/.codex/skills" # Codex (if present)+echo "Done. The pup skill calls the adom-desktop CLI; if the bridge isn't installed on Adom Desktop it self-installs on first use."
page.json+48−19@@ -8,43 +8,72 @@ "tags": [], "license": "MIT", "discovery_triggers": [+ "pup",+ "open in pup",+ "open my app in pup",+ "open it in pup",+ "open this in pup",+ "show me in pup",+ "show it in pup",+ "open a pup window",+ "pup window",+ "open a browser window",+ "browser window on my desktop",+ "open in a browser",+ "screenshot my app",+ "screenshot the page",+ "browser screenshot",+ "pup screenshot",+ "record the window",+ "record a browser window",+ "record a pup",+ "record my app",+ "new pup tab",+ "pup tabs",+ "browser tabs",+ "close the pup window",+ "reload the page in pup",+ "eval js in the page",+ "drive a browser",+ "headful browser automation",+ "visual debug",+ "puppeteer", "puppeteer bridge", "pup bridge",- "puppeteer bridge source",- "chrome automation bridge",- "puppeteer-core", "chrome for testing",+ "chrome automation bridge", "browser_open_window", "browser_screenshot", "browser_record_start",- "desktop_record_start",- "pup session profile",- "headful chrome",- "browser bridge source",+ "browser_readiness", "fork the pup bridge",- "node bridge example"+ "puppeteer bridge source" ],- "discovery_pitch": "Reference implementation of the Puppeteer bridge — Node + puppeteer-core + Chrome for Testing for headful browser automation. Multi-window, multi-tab, per-session profile isolation, per-tab CDP screencast recording, full-desktop MediaRecorder capture.",+ "discovery_pitch": "Drive Chrome from the cloud with the pup (Puppeteer) bridge: open/close browser windows + tabs, navigate, screenshot, eval JS, and record windows — driving Chrome for Testing or the user's REAL Chrome/Edge/Brave, in the background so it doesn't disrupt the user. Cold-start self-heal auto-installs Chrome for Testing on a fresh PC. The skill calls the adom-desktop CLI (browser_* verbs); this pkg installs the container-side skills, the bridge runtime ships in Adom Desktop + as the release zip.", "sample_prompts": [ {- "label": "Read puppeteer bridge source",- "prompt": "Download the puppeteer-bridge zip from the wiki and walk me through server.js"+ "label": "Open in pup",+ "prompt": "Open my app in pup (browser_open_window) and screenshot it" }, {- "label": "Add a browser verb",- "prompt": "Help me add a new browser_extract_pdfs verb to the puppeteer bridge"+ "label": "Screenshot a page",+ "prompt": "Screenshot https://example.com in pup" }, {- "label": "Open a window in pup",- "prompt": "adom-desktop browser_open_window with a test URL"+ "label": "Record a window",+ "prompt": "Record a 30-second video of this pup tab (browser_record_start/stop)" }, {- "label": "Record a tab",- "prompt": "Record a 30-second video of a pup tab via browser_record_start/stop"+ "label": "Many tabs, one window",+ "prompt": "Open these 5 URLs as tabs in one pup window" }, {- "label": "Understand sessions",- "prompt": "Explain how pup session profiles isolate cookies + IndexedDB"+ "label": "Drive my real Chrome",+ "prompt": "Open the GCP console in my real signed-in Chrome via pup native mode"+ },+ {+ "label": "Read the bridge source (dev)",+ "prompt": "Download the puppeteer-bridge zip from the wiki and walk me through server.js" } ], "install": {
uninstall.sh+4−2@@ -1,4 +1,6 @@ #!/bin/bash set -e-rm -rf "$HOME/.claude/skills/adom-desktop-puppeteer-bridge"-echo "Uninstalled adom-desktop-puppeteer-bridge"+for BASE in "$HOME/.claude/skills" "$HOME/.codex/skills"; do+ rm -rf "$BASE/adom-desktop-puppeteer-bridge" "$BASE/pup-bridge-dev" "$BASE/pup-bridge-publish"+done+echo "Uninstalled adom-desktop-puppeteer-bridge skills"