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
51f91d9
3mo ago
ComponentSearchEngine / SamacSys (componentsearchengine.com)
Free CAD aggregator: symbol + footprint + 3D STEP for millions of parts, in ~24 EDA formats
(Altium, KiCad, Eagle, OrCAD/Allegro, Cadence, PADS, …). Download is login-gated (free account).
Proven end to end 2026-08-13: pup logged in with a recovered credential and downloaded a real
multi-format library (LIB_NE555P.zip, 1.7 MB — Altium .SchLib+.PcbLib, OrCAD, Cadence, PDF).
- Login entry URL:
https://componentsearchengine.com/signin - Flow type: single-page email+password form.
- 2FA: none.
- Anti-automation: Cloudflare on some paths — cleared automatically now that pup presents as
Google Chrome (pup ≥ 2.0.141; see
ee-parts-sites.md).
Credential notes (learned the hard way)
- The saved login often lives under
ms.componentsearchengine.com(the SamacSys account host), but the sign-in page is the apexcomponentsearchengine.com. pup's vault matches across the registrable domain (≥ 2.0.144), so a cred saved on either host works on the other. - Verify the USERNAME. A stale/wrong username is a silent failure ("Fail to authenticate"). If
a login fails, recover the CURRENT username+password straight from the user's browser password
manager — see
recover-a-current-password.md.
Steps
pup_open_window {url:"https://componentsearchengine.com/signin"}on the durable adom-you profile.pup_login {submit:true, submitReason:"…"}— vault autofills + submits (background). Confirm sign-in: the header shows the user's name / "Your Profile" (not "Sign In / Register").- Go to the part:
https://componentsearchengine.com/part-view/<MPN>/<Manufacturer>(spaces →%20). Check the model is available: the page must NOT say "ECAD model is currently unavailable" and the "Download Model" button must be enabled. Not every part has a pre-built model — some only offer "Build this Model" / "Request this Model (48 h)". Pick a part with a ready model (most common jellybeans have one; e.g. NE555P does, this exact TI-LM358 did not).
The download (the non-obvious part)
The blue "Download Model" control is an <a class="ecad-model-button"> whose onclick is
analytics only (recordUserClickDefer(...)) — the real action is its href, a Supplyframe
tracker: //analytics.supplyframe.com/trackingservlet/track/?r=<token>. That tracker 302-redirects
to https://componentsearchengine.com/partApi/model/download?from=…, which streams the ZIP.
A bare pup_click / pup_download {selector} on the button can stall (the click's navigation +
redirect chain doesn't always surface a download event, and the click sometimes bounces to
/register). Reliable recipe: read the href and navigate to it directly — Chrome follows the
redirect and downloads the ZIP to the Downloads folder:
href = pup_eval {"expr":"(document.querySelector('a.ecad-model-button')||{}).href"}
pup_navigate {url: href} # follows tracker → /partApi/model/download → ZIP lands in Downloads
Then confirm the file: LIB_<MPN>.zip in the user's Downloads (magic PK). The archive contains
per-format subfolders (Altium/*.SchLib+*.PcbLib, OrCAD_Allegro16/, Capture/, DEHDL/,
How_To_Use_Models.pdf, license.txt). To pull it into the container, use desktop_pull_file.
Gotchas
- Profile completeness: a partially-registered CSE account can bounce the download to
/register(Company / Job Role required). If the download redirects to registration, the account needs its profile completed once (a human step); after that, downloads flow. - Token freshness: the tracker
?r=token is per-render — re-read the href on the current part page each time; don't cache it. - The default output format is set in the account's model preferences; the ZIP bundles multiple formats regardless, so KiCad/Altium/OrCAD are all present.
# ComponentSearchEngine / SamacSys (componentsearchengine.com)
Free CAD aggregator: symbol + footprint + 3D STEP for millions of parts, in ~24 EDA formats
(Altium, KiCad, Eagle, OrCAD/Allegro, Cadence, PADS, …). Download is **login-gated** (free account).
Proven end to end 2026-08-13: pup logged in with a recovered credential and downloaded a real
multi-format library (`LIB_NE555P.zip`, 1.7 MB — Altium `.SchLib`+`.PcbLib`, OrCAD, Cadence, PDF).
- **Login entry URL:** `https://componentsearchengine.com/signin`
- **Flow type:** single-page email+password form.
- **2FA:** none.
- **Anti-automation:** Cloudflare on some paths — cleared automatically now that pup presents as
Google Chrome (pup ≥ 2.0.141; see `ee-parts-sites.md`).
## Credential notes (learned the hard way)
- The saved login often lives under **`ms.componentsearchengine.com`** (the SamacSys account host),
but the sign-in page is the **apex** `componentsearchengine.com`. pup's vault matches across the
registrable domain (≥ 2.0.144), so a cred saved on either host works on the other.
- **Verify the USERNAME.** A stale/wrong username is a silent failure ("Fail to authenticate"). If
a login fails, recover the CURRENT username+password straight from the user's browser password
manager — see `recover-a-current-password.md`.
## Steps
1. `pup_open_window {url:"https://componentsearchengine.com/signin"}` on the durable adom-you profile.
2. `pup_login {submit:true, submitReason:"…"}` — vault autofills + submits (background). Confirm
sign-in: the header shows the user's name / "Your Profile" (not "Sign In / Register").
3. Go to the part: `https://componentsearchengine.com/part-view/<MPN>/<Manufacturer>` (spaces →
`%20`). Check the **model is available**: the page must NOT say *"ECAD model is currently
unavailable"* and the **"Download <MPN> Model"** button must be enabled. Not every part has a
pre-built model — some only offer "Build this Model" / "Request this Model (48 h)". Pick a part
with a ready model (most common jellybeans have one; e.g. NE555P does, this exact TI-LM358 did not).
## The download (the non-obvious part)
The blue **"Download <MPN> Model"** control is an `<a class="ecad-model-button">` whose `onclick` is
**analytics only** (`recordUserClickDefer(...)`) — the real action is its **`href`**, a Supplyframe
tracker: `//analytics.supplyframe.com/trackingservlet/track/?r=<token>`. That tracker **302-redirects
to `https://componentsearchengine.com/partApi/model/download?from=…`**, which streams the ZIP.
A bare `pup_click` / `pup_download {selector}` on the button can stall (the click's navigation +
redirect chain doesn't always surface a download event, and the click sometimes bounces to
`/register`). **Reliable recipe: read the href and navigate to it directly** — Chrome follows the
redirect and downloads the ZIP to the Downloads folder:
```
href = pup_eval {"expr":"(document.querySelector('a.ecad-model-button')||{}).href"}
pup_navigate {url: href} # follows tracker → /partApi/model/download → ZIP lands in Downloads
```
Then confirm the file: `LIB_<MPN>.zip` in the user's Downloads (magic `PK`). The archive contains
per-format subfolders (`Altium/*.SchLib`+`*.PcbLib`, `OrCAD_Allegro16/`, `Capture/`, `DEHDL/`,
`How_To_Use_Models.pdf`, `license.txt`). To pull it into the container, use `desktop_pull_file`.
## Gotchas
- **Profile completeness:** a partially-registered CSE account can bounce the download to `/register`
(Company / Job Role required). If the download redirects to registration, the account needs its
profile completed once (a human step); after that, downloads flow.
- **Token freshness:** the tracker `?r=` token is per-render — re-read the href on the current part
page each time; don't cache it.
- The default output format is set in the account's model preferences; the ZIP bundles multiple
formats regardless, so KiCad/Altium/OrCAD are all present.