filepress build writes a static build/ folder. There is no runtime server. Set url in filepress.config.ts to the live origin (no trailing slash) so RSS, sitemap, and canonical links stay correct.

Engine dependency in CI

Local sibling sites use "getfilepress": "link:../filepress". Hosts cannot. Pin npm (current is 0.1.37) or a git SHA / existing tag:

{
  "devDependencies": {
    "getfilepress": "^0.1.37"
  }
}

Do not float on main. FilePress does not create the Cloudflare project or git-connect the repo. That is host settings.

Cloudflare Pages

Typical settings for a content repo:

SettingValue
Root directory/
Build commandpnpm install && pnpm build
Output directorybuild
Node.js version20+

Attach a custom domain in Cloudflare; keep config url in sync.

Wrangler CLI

pnpm build
npx wrangler pages deploy build --project-name <project>

This product site’s engine script is pnpm ship (Wrangler project getfilepress).

Other hosts

Same contract: install → build → publish build/ as the web root. Netlify, GitHub Pages, object storage + CDN, nginx. No SSR adapters or serverless functions. If the host supports a custom 404 document, point it at 404.html.

Headers and redirects

The build writes _headers for Cloudflare Pages (Netlify understands it too): HSTS, no framing, and it removes Pages’ default Access-Control-Allow-Origin: *. Drop static/_headers in the site for different values. The engine does not set includeSubDomains or preload.

When homePage is set, /writing lists posts. The build still remaps /writing/<slug> → /posts/<slug>. Import can add source-URL remaps. Extra rules: config redirects or static/_redirects.

After deploy

Check /, /rss.xml, and /sitemap.xml. Agent checklist: docs/DEPLOY.md.