Package 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
| 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
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
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 (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.
Read next
- ConfigurationOptions for the pagegraph() Vite plugin, createSeo, and the defineSeoConfig fields in pagegraph.config.ts, with defaults and what each controls.
- Use PageGraph without TanStack StartBuild the same graph from any TanStack Router tree, render the sitemap and robots.txt yourself, and point the CLI at it with viteGraphLoader.