# System map — puppeteer/puppeteer

> Canonical page: https://codevetter.com/unpack/puppeteer/system-map

# System map — puppeteer/puppeteer

Scanned commit 2e45a3af43231cd658285e4da5e7f53e40f24edf (2026-10-02). Generated by codevetter codevetter 1.15.0 on 2026-10-02.

Source inspection; upstream code and tests were not executed.

The runtime consists of a consumer library, a browser-management package, and external browser processes. Shared API abstractions sit above CDP and BiDi implementations, while Node-specific launch and filesystem facilities have separate entrypoints. npm workspaces and Wireit coordinate compilation, generated declarations, documentation, and tests. Distribution includes npm packages, a container image, and a separately built documentation website.
- The root build graph coordinates browsers, ng-schematics, puppeteer-core, puppeteer, testserver, integration tests, installation tests, and tooling through npm workspaces and Wireit. — [package.json#L44-L63](https://github.com/puppeteer/puppeteer/blob/2e45a3af43231cd658285e4da5e7f53e40f24edf/package.json#L44-L63) [package.json#L206-L213](https://github.com/puppeteer/puppeteer/blob/2e45a3af43231cd658285e4da5e7f53e40f24edf/package.json#L206-L213)
- The puppeteer entrypoint re-exports puppeteer-core and constructs PuppeteerNode with isPuppeteerCore:false and asynchronous getConfiguration. — [packages/puppeteer/src/puppeteer.ts#L7-L20](https://github.com/puppeteer/puppeteer/blob/2e45a3af43231cd658285e4da5e7f53e40f24edf/packages/puppeteer/src/puppeteer.ts#L7-L20)
- The core Node entrypoint installs Node environment dependencies and exports launch/connect; the browser entrypoint constructs the shared Puppeteer class and exports connect. — [packages/puppeteer-core/src/puppeteer-core.ts#L7-L42](https://github.com/puppeteer/puppeteer/blob/2e45a3af43231cd658285e4da5e7f53e40f24edf/packages/puppeteer-core/src/puppeteer-core.ts#L7-L42) [packages/puppeteer-core/src/puppeteer-core-browser.ts#L7-L23](https://github.com/puppeteer/puppeteer/blob/2e45a3af43231cd658285e4da5e7f53e40f24edf/packages/puppeteer-core/src/puppeteer-core-browser.ts#L7-L23)
- BrowserLauncher selects native Firefox BiDi, Chrome CDP over pipe or WebSocket, or Chrome BiDi over CDP; Firefox BiDi rejects pipe connections. — [packages/puppeteer-core/src/node/BrowserLauncher.ts#L197-L207](https://github.com/puppeteer/puppeteer/blob/2e45a3af43231cd658285e4da5e7f53e40f24edf/packages/puppeteer-core/src/node/BrowserLauncher.ts#L197-L207) [packages/puppeteer-core/src/node/BrowserLauncher.ts#L253-L320](https://github.com/puppeteer/puppeteer/blob/2e45a3af43231cd658285e4da5e7f53e40f24edf/packages/puppeteer-core/src/node/BrowserLauncher.ts#L253-L320)
- Browser binaries persist under cacheRoot/browser/platform-buildId; per-browser .metadata stores aliases and optional custom executable paths. — [packages/browsers/src/Cache.ts#L94-L114](https://github.com/puppeteer/puppeteer/blob/2e45a3af43231cd658285e4da5e7f53e40f24edf/packages/browsers/src/Cache.ts#L94-L114) [packages/browsers/src/Cache.ts#L133-L183](https://github.com/puppeteer/puppeteer/blob/2e45a3af43231cd658285e4da5e7f53e40f24edf/packages/browsers/src/Cache.ts#L133-L183) [packages/browsers/src/Cache.ts#L195-L200](https://github.com/puppeteer/puppeteer/blob/2e45a3af43231cd658285e4da5e7f53e40f24edf/packages/browsers/src/Cache.ts#L195-L200)
- Published puppeteer and puppeteer-core packages require Node >=22.12.0 and expose compiled JavaScript plus generated declarations; core also declares a browser-specific bundle entry. — [packages/puppeteer/package.json#L11-L36](https://github.com/puppeteer/puppeteer/blob/2e45a3af43231cd658285e4da5e7f53e40f24edf/packages/puppeteer/package.json#L11-L36) [packages/puppeteer-core/package.json#L11-L36](https://github.com/puppeteer/puppeteer/blob/2e45a3af43231cd658285e4da5e7f53e40f24edf/packages/puppeteer-core/package.json#L11-L36)
- Tag-triggered publishing builds and publishes npm workspaces with provenance; Puppeteer tags also publish a GHCR Docker image whose runtime uses a non-root pptruser. — [.github/workflows/publish.yml#L6-L39](https://github.com/puppeteer/puppeteer/blob/2e45a3af43231cd658285e4da5e7f53e40f24edf/.github/workflows/publish.yml#L6-L39) [.github/workflows/publish.yml#L48-L98](https://github.com/puppeteer/puppeteer/blob/2e45a3af43231cd658285e4da5e7f53e40f24edf/.github/workflows/publish.yml#L48-L98) [docker/Dockerfile#L17-L40](https://github.com/puppeteer/puppeteer/blob/2e45a3af43231cd658285e4da5e7f53e40f24edf/docker/Dockerfile#L17-L40)
- The documentation website uses React and Docusaurus, materializes docs before building, and conditionally deploys to GitHub Pages followed by Algolia crawler checks and reindexing. — [website/package.json#L5-L34](https://github.com/puppeteer/puppeteer/blob/2e45a3af43231cd658285e4da5e7f53e40f24edf/website/package.json#L5-L34) [.github/workflows/docs.yml#L67-L105](https://github.com/puppeteer/puppeteer/blob/2e45a3af43231cd658285e4da5e7f53e40f24edf/.github/workflows/docs.yml#L67-L105)

Every claim links to its cited files at the pinned commit. Citations identify source evidence; they do not establish runtime correctness. Independent CodeVetter scan — not reviewed by upstream maintainers.

## Public product links

- [CodeVetter](https://codevetter.com/)
- [Download](https://codevetter.com/download)
- [Documentation](https://codevetter.com/docs/)
- [Source](https://github.com/Codevetter/codevetter)
