# Package entries

URL: https://pagegraph.arya.sh/docs/reference/entries

Where each pagegraph package entry runs, what it exports and which peers it needs, plus the stub and zero-dependency guarantees.

Every entry belongs to one place. Runtime entries use portable graph and document code with the framework peers listed below, and the capture adapter runs on a Start server. Build entries load your app through Vite, parse routes natively, or drive Node I/O.

## What runs where [#what-runs-where]

| Entry                                       | Runs in                                         | Exports                                                                                                                                                                             | Peers                                                                   |
| ------------------------------------------- | ----------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------- |
| `pagegraph`                                 | runtime (Worker, SSR, browser)                  | `buildSeoGraph`, `contentCollection`, `renderSitemap`, `renderRobots`, `pageHeads`, `graphToJson`/`graphFromJson`, checks, `inspectHtml`, document types, facts, markdown and locks | none                                                                    |
| `pagegraph/react`                           | runtime                                         | `createSeo` → `seo.head`, `seoHead`, `Breadcrumbs`, JSON-LD generators, authored page primitives                                                                                    | `react`, `@tanstack/react-router`                                       |
| `pagegraph/tanstack-start/server`           | runtime (Start server routes)                   | `robotsTxt`, `sitemapXml`, `llmsTxt`, `llmsSection`, `seoGraph`, `seoSite`                                                                                                          | the `pagegraph()` plugin                                                |
| `pagegraph/tanstack-start/markdown`         | runtime (Start server)                          | `markdownRequest`, `markdownPagePaths`                                                                                                                                              | `react`, `react-dom`, `@tanstack/react-start`, `@tanstack/react-router` |
| `pagegraph/tanstack-start/react`            | runtime                                         | capture-aware `Link`                                                                                                                                                                | `react`, `@tanstack/react-router`                                       |
| `pagegraph/tanstack-start/prerender-worker` | non-deployed prerender Worker                   | compiled Start server                                                                                                                                                               | the `pagegraph()` plugin                                                |
| `pagegraph/tanstack-start`                  | build (`vite.config.ts`, `pagegraph.config.ts`) | `pagegraph()` Vite plugin, `tanstackStartGraph`, `evaluateAppGraph`                                                                                                                 | `vite`, `@tanstack/router-generator`, `effect`                          |
| `pagegraph/vite`                            | build (`vite.config.ts`)                        | `seoRouteConfig` coverage gate                                                                                                                                                      | `vite`, `@tanstack/router-generator`                                    |
| `pagegraph/config`                          | build (`pagegraph.config.ts`, CLI)              | `defineSeoConfig`, `viteGraphLoader`, `loadPageHeads`                                                                                                                               | `vite`                                                                  |
| `pagegraph/claims`                          | build / CLI (Node or Bun)                       | `claimsInput`, `claimsFamily`, document resolution, committed claims checks                                                                                                         | `effect`                                                                |
| `pagegraph/audit`                           | build / CLI (Node or Bun)                       | Audit services, scanner protocol, rules, and report schemas                                                                                                                         | `effect`                                                                |
| `pagegraph/oxlint`                          | build (oxlint)                                  | `pagegraph` plugin: `no-bare-text`, `t-children`                                                                                                                                    | none                                                                    |
| `pagegraph` bin                             | CLI (Bun)                                       | CLI over the same graph                                                                                                                                                             | bundled                                                                 |

## Guarantees [#guarantees]

Build entries resolve to a stub under the `workerd`, `worker` and `browser` export conditions. A Worker or browser bundle that reaches one fails at import with an error naming the entry, instead of crashing on a native binding when a request first runs the code. Never import `pagegraph/tanstack-start`, `pagegraph/config`, `pagegraph/vite` or `pagegraph/audit` from code a Worker or browser bundle reaches.

The runtime entries have zero runtime dependencies beyond their listed peers. A test pins each entry's import graph.

## CLI runtime [#cli-runtime]

The CLI bundles PageGraph's Effect, TypeSafe provider runtime and Pi agent runtime, so it does not depend on the app's Effect version. It runs on [Bun](https://bun.sh) (`bunx pagegraph`). Every workflow runs in-process on Pi 1.0.4. Improve workflows use guarded repository edit tools, and research and dry-run actions expose only read tools. Every workflow failure after run creation writes `failure.json` with its stage, agent messages and cause chain.

`vite` stays a peer, because graph commands load your app through Vite at runtime. `lighthouse` is only needed by `pagegraph audit`. Importing `pagegraph/audit` programmatically needs `effect@^4.1.2`. The Effect and TypeSafe peers remain optional for other library entry points and the bundled CLI.
