Leadtype
Generate & serve

Deploy generated artifacts

Run leadtype generate before your framework build, then serve the output from the framework's public/static asset directory. Site mode writes web artifacts; --bundle writes package docs for npm tarballs and intentionally skips llms.txt, llms-full.txt, search JSON, sitemap, robots, and Agent Readability files.

Output contract

ArtifactDefault pathRuntime responsibility
LLM index<public>/llms.txtServe as a static root file.
Full context<public>/llms-full.txtServe as a static root file.
Markdown mirrors<public>/docs/*.mdServe direct .md URLs, and optionally use content negotiation for HTML routes.
Search JSON<public>/docs/search-index.json and search-content.jsonLoad from the client, edge function, or server route that powers search.
Manifest<public>/docs/agent-readability.jsonImport in route handlers, middleware, and metadata helpers.
Sitemap/robots<public>/docs/sitemap.* and robots.txtStatic is fine for one production origin; regenerate responses at runtime for previews and multi-origin deployments.

Verification is the same everywhere:

Next.js on Vercel

Generate into public before next build:

Static files under public serve /llms.txt, /llms-full.txt, /docs/*.md, and search JSON. Use createDocsProxy() or a route handler for Accept: text/markdown on HTML docs routes, and runtime sitemap/robots responses when Vercel preview URLs should advertise the preview origin.

Use the Next metadata helper in the App Router page:

app/docs/[[...slug]]/page.tsx

TanStack Start

Generate into public before the TanStack Start build. The example app uses the same artifact shape as the Next and Nuxt examples: static files for /llms.txt, /llms-full.txt, markdown mirrors, search JSON, and a server middleware for markdown negotiation plus sitemap/robots rebasing.

Keep page loading in route code and artifact serving in server middleware:

server/middleware/agent-readability.ts

Use leadtype/search/react for client search and leadtype/search/tanstack only when you are streaming source-grounded answers through TanStack AI.

Nuxt on Vercel, Netlify, or Cloudflare

Generate into public before nuxt build. Nitro serves static assets from that directory across Vercel, Netlify, and Cloudflare presets.

Use Nitro middleware or server routes for markdown negotiation and runtime sitemap/robots responses. Keep search JSON static and load it from /docs/search-index.json and /docs/search-content.json in the Vue composable or server endpoint.

pages/docs/[[slug]].vue

Static hosting and server deployments differ only in sitemap/robots handling: static deploys publish the generated files as-is; server/edge deploys can rebase them per request.

Astro static or server

Generate into public before astro build. In static output, Astro publishes the generated files directly. In server output, keep the files static and add endpoints or middleware for content negotiation and runtime sitemap/robots rebasing.

src/pages/docs/[...slug].astro

Search JSON stays under /docs/ in both modes.

SvelteKit

With adapter-static, generate into static before vite build and prerender the docs routes. Direct files serve /llms.txt, /llms-full.txt, markdown mirrors, and search JSON.

With adapter-node or adapter-vercel, generate into static, then use a +server.ts endpoint or hook before the HTML route for markdown negotiation and runtime sitemap/robots responses.

src/routes/docs/[...slug]/+page.svelte

For adapter-static, verify direct .md URLs. For server adapters, also verify Accept: text/markdown on the HTML route.

Cloudflare Workers and Pages

For Cloudflare Pages with a static framework build, generate into the framework public directory and let Pages serve the files. For Workers or Pages Functions, read markdown mirrors from static assets, KV, or R2 and pass the text to createAgentMarkdownResponse().

Runtime sitemap and robots helpers are useful on Cloudflare because preview branches and custom domains can have different origins. Search JSON can remain a static asset unless your search endpoint runs fully server-side.