Support
For local use, follow Local development. The lite profile emulates Cloudflare bindings but omits remote-only features such as browser rendering, PDF export, image extraction, and email delivery.
Production requirements
A production deployment needs:- A Cloudflare account with Workers, Durable Objects, R2, Workflows, Containers, Images, Browser Rendering, Worker Loaders, Hyperdrive, and email sending available.
- A PostgreSQL database reachable through a cache-disabled Hyperdrive configuration.
- A custom domain, Better Auth secret, and Google OAuth credentials. Guest sign-in is development-only.
- R2 API credentials and a separate upload-token secret for direct file uploads.
- Provider keys for the features you enable: AI Gateway for AI chat, Firecrawl for web tools, and LlamaParse for document extraction. Analytics integrations are optional.
Account-specific setup
Before deploying, replace the ThinkEx-owned values inwrangler.jsonc:
- Worker name and custom domain route.
- R2 bucket name in both the binding and
R2_BUCKET_NAME. - Hyperdrive configuration ID.
- Both Cloudflare Container image digests. Build the checked-in Dockerfiles into your own account; the pinned production images belong to the ThinkEx account.
config/r2/cors.production.json, configure the bucket CORS and abandoned-upload lifecycle rules, and set the production secrets described in Environment.
The normal release order is:
- Apply the Postgres migrations with
DATABASE_URLset to a direct administrative connection. - Build with
pnpm build:production. - Deploy with
CLOUDFLARE_ENV=production pnpm deploy:worker.