Use cases and implementation
Deploy Safest Resolve in your Cloudflare account
Generate the project, review its infrastructure plan, deploy it, and verify the installation.
- For
- Cloudflare administrators, platform engineers, security engineers and Safest owners
- Last updated
- 29 August 2026
01
Starting point
You want the report service, workflow runtime, records, files, credentials and operating logs under your Cloudflare account. Safest Resolve provides a project generator and reviewed deployment scripts for that boundary.
02
What must hold
- Deploying before confirming account entitlements and resource limits.
- Using the wrong Cloudflare Access audience or owner allowlist during bootstrap.
- Treating public liveness as proof that migrations, queues and workflow capabilities are ready.
03
Step by step
- Install Node.js 20 or newer, authenticate Wrangler, prepare an HTTPS hostname, list every browser origin and create the Cloudflare Access application for the infrastructure path.
- Run npx create-safest-tools safest-resolve with your installation name, public URL, application origin, owner email and Access audience. The generator writes a project and prints a read-only plan.
- Review reports.config.json, wrangler.jsonc and npm run setup:plan. Confirm the exact Worker, D1 database, four R2 buckets, three Queues and every declared binding.
- Run npm run secrets:init, then supply the required API, signing, encryption, portal and rate-limit secrets in the protected local secrets file.
- Run npm run setup:plan again, then npm run setup. Confirm the exact installation ID when the deploy script asks for it.
- Open the Access-protected bootstrap route, create the first Safest owner, invite an administrator and analyst, and confirm an unlisted identity cannot bootstrap ownership.
- Check /health, verify database, workflow_runtime, workers_ai, object_storage and queues from setup, then require authenticated /ready to return 200.
04
Operating boundary
The infrastructure plan is read-only. Deployment remains a reviewed action, secrets stay out of configuration and source control, resource names are unique to the installation, and Cloudflare plan availability is checked before production rollout.
05
Data exchange
The generated Worker declares Static Assets, D1, four private R2 buckets, Queues with a dead-letter queue, Dynamic Workflows, Worker Loaders, a SQLite-backed Durable Object, Workers AI, Cron Triggers, Workers Logs and Worker secrets. Turnstile protects public intake when configured; Access protects owner bootstrap; Email Service can be added for outbound updates.
06
Verification
The installation has a local receipt, applied migrations, uploaded secrets, deployed bindings, named owners and successful capability checks. /health proves liveness; authenticated /ready proves the installation can operate.
07
Implementation questions
Is Cloudflare Email Service required?+
No. It is optional. The reporter portal and a customer notification webhook continue to work without it.
How should upgrades be run?+
Run npm run upgrade:plan first. The upgrade command creates a verified backup, applies forward-only migrations and redeploys the Worker.
Safest Resolve
Start with one report your team handles today.
Bring its source, required evidence, decision owner, application action, messages, and appeal path.