Quickstart: connect a source, set a destination, run your first backup, and prove it
This is the shortest path from a freshly deployed console to a first backup you have proven recoverable. It follows the water-path order the console itself enforces: make your keys, choose where backups go, connect your account, pick what to protect, then prove it. Each step names the screen it happens on, the role it needs, and how the console verifies the step for you so you are not left guessing.
The page is written for the Owner doing the first run. You will not run a terminal command anywhere on the customer path. The console performs every privileged operation itself: it collects a scoped token in the browser and the engine does the privileged work. The single operator command in this whole journey is the deploy itself, npm run deploy, which you run once before any of this to put the engine and console in your account. After that, everything below happens in the portal.
Why there is nothing to connect to
The console reaches only the in-account engine on the same origin. There is no engine address and no engine credential to enter when you connect, because the console and the engine sit in the same Cloudflare account and talk same-origin. Any console URL in this documentation is a custom domain such as console.example.com; you will never reach a working console at a workers.dev address.
The five steps at a glance
The console derives this same order from the engine’s facts, so a deployment that already has some of it in place skips ahead automatically. The five steps are the setup-progress model: keys, destination, connect, sources, then the first downpipe. The first incomplete step is where you land.
| Step | Screen | Role | Verified by |
|---|---|---|---|
| 0. Make your keys | First-run carousel | Owner | The engine reports the signer and break-glass keys present. |
| 1. Choose where backups go | Destinations | Owner | A live reachability, auth and write probe before anything is saved. |
| 2. Connect your account | Sources | Owner | The token is verified live against your account, then audited. |
| 3. Pick what to protect, then create a downpipe | Sources, then Downpipes | Operator or higher to create | The screen detects when the attach deploy lands; the downpipe exists. |
| 4. Prove it | Restore flow | Operator or higher | An engine-side drill: completeness plus an anti-rollback attestation. |
Make your keys (first-run carousel, Owner)
Open the first-run carousel. It generates your keys in your browser, locally, and nothing is sent anywhere during generation. When you click generate, the ceremony runs
runKeyCeremonyin the tab and immediately offers the files for download.
Before you generate, the carousel makes you choose a key posture: strict break-glass-only, which leads the fork and needs no further action to keep, or add an operational key as a deliberate opt-in. You must pick one and tick the acceptance statement for your choice before the card lets you continue. Keeping the break-glass-only posture downloads four files plus a recovery sheet; choosing to add an operational key downloads a fifth file,
operational.pub. Two of them are yours to keep, for different reasons.identity.keyis your break-glass private key, the only thing that can decrypt your backups: keep it offline and remove it from the machine.signer.pubis a public key that decrypts nothing, but the offline reader will not verify or restore a run without it, so keep a copy of it too. The rest is public material your engine needs and you do not have to hold:File Role What it is identity.keyKeep offline Your break-glass private key. The only thing that can decrypt your backups. Never installed to the engine. recipient.pubTo engine The public half of the break-glass key. It cannot read anything; the engine uses it to lock new backups. operational.pub(only if you chose to add an operational key)To engine The public half of the operational key. Absent under the default, break-glass-only posture. signer.pubTo engine, and keep a copy The public half of your signing key. The engine needs it, and so do you: an offline recovery refuses to run without it, and no copy of it survives in the archive or on the sheet. It decrypts nothing, so keep it with the recovery sheet. signer.keyTo engine Your signing key. It proves each backup is genuine but cannot read your data. recovery-sheet.txtKeep offline A printable record of your public fingerprints, with no secret on it. Keep it with identity.keyandsigner.pub.Install the keys to the engine with one click. There is no terminal step. You paste a one-shot Cloudflare token, the engine uses it to write its own secrets, and then you revoke it. The break-glass private key is never installed: there is no field and no path that uploads it. The carousel will not let you continue until the engine reports the keys are present.
An operational key is opt-in, not the default
By default the engine holds nothing that can decrypt your backups: strict break-glass-only is the posture a new customer gets unless they deliberately choose otherwise at the tradeoff card. You can instead give the engine an operational key that lets it test-restore your backups on its own, which means it can decrypt them, and so could anyone who broke into your Cloudflare account; that is the trade you are accepting if you opt in. Switch posture later from the Keys screen at any time; adding an operational key afterwards needs no re-key, but removing one does not retroactively protect archives it could already read. The vendor holds nothing in either posture.
Choose where backups go (Destinations, Owner)
Go to the Destinations screen and point downpipes at a bucket you own. The destination is the one piece of the pipeline you bring; everything else flows from bindings, and nothing can run without it, so it comes before you even connect a token. Setting it is Owner-only, enforced by the engine.
The form is R2-first. The endpoint is derived from your account id and the region is fixed to auto, with an S3-compatible variant if you back up to an S3 endpoint instead. The single primary action is Verify and save, and the order matters: the console verifies the destination live before it stores anything. It verifies the destination is reachable and that the supplied credentials authenticate, then runs a real write probe; if any check is refused it returns the honest reason and stores nothing.
Once saved, the destination is held in the scheduler Durable Object at runtime. There is no redeploy to change it, and a console-set destination always wins over the deploy-time configuration, which remains a fallback. The secret access key for an S3 destination is sent once, never persisted in the browser, and never re-displayed.
Connect your account (Sources, Owner)
Go to the Sources screen. Until a token is set and nothing is bound, this screen is the connect form, because every later step reads through it: picking sources to protect, and browsing every account the token can see.
Paste one read-only Cloudflare API token. That single token makes everything you own browsable. The token is stored in the engine’s Durable Object, verified live against your account, audited by who and when, and never re-shown after you submit it. It is sent once over the authenticated same-origin channel and is never persisted in the browser.
One honest boundary the screen states plainly: bindings cannot cross accounts. The engine’s own account gets the full attach flow. Other accounts the token can see are listed read-only, by name, because a binding can only be added within the account the engine runs in.
Pick what to protect, then create your first downpipe (Sources, then Downpipes)
Back on the Sources screen, tick the namespaces, buckets or databases you want to protect. downpipes backs up eight source types. Four are reached through Workers bindings: Workers KV, R2, Secrets Store and D1. The other four are read over the read-only API token: Cloudflare configuration, Worker scripts, Stream and Images. This step attaches the four binding-backed sources, which are the ones that need the copy-paste deploy below. Attaching them is one copy-paste deploy: the console generates the binding stanzas, you apply them, and the screen detects when the deploy lands through a bounded wait-for-the-deploy poll. When the engine adds the bindings it proves none of its own are dropped, applies the change, then re-reads to verify, and any doubt makes it refuse rather than write.
Attaching sources stays Owner-only: the engine gates the attach call on the owner-exclusive
keys.ceremonycapability, absent from the Operator role, and the console disables the attach controls and shows “an Owner attaches sources” for anyone else. Creating the downpipe itself is the first action in this journey a non-Owner can drive: an Operator or higher can create a downpipe once the sources it needs are attached; the engine enforces the role on every call.Then create your first downpipe on the Downpipes screen. A downpipe is the route: a source, the destination you just set, and a schedule. Once it exists, the first backup runs.
The effective schedule floor
The console floors the schedule at Hourly, so the fastest cadence you can pick from the console is hourly. The engine dispatches due runs on a roughly fifteen-minute
*/15cron tick, which is the effective floor on how often a run can start and is dispatch granularity rather than a cadence you set. So plan your recovery point around the hourly cadence you can schedule, and expect a due run to land within about fifteen minutes of its scheduled time. The floor is covered in full on engine architecture.Prove it (Restore flow, Operator or higher)
A backup you have not tested is a hope, not a recovery plan. Prove the first one by running a drill, also called a restore test, from the restore flow. The drill is an engine-side completeness check plus an anti-rollback attestation: the engine confirms the run is whole and that it has not been silently wound back to an older state.
Be precise about what this proves and what it does not. The drill runs on the engine, in your account. It is not a client-side check, and it is not a Cloudflare-side check. The signed reports you can produce afterward are tamper-evident, signed with the post-quantum hybrid scheme, but they are not verified in your browser: the verifying public key is not shipped to the browser, so full verification is out of band. To verify a report or an archive end to end against your own signer, away from any live system, use the offline Go reader. See proving recoverability for the drill in full and the restore flow for an actual restore.
What this quickstart does not cover
Two things sit outside the first backup-and-restore flow on purpose. Point-in-time recovery, the restore screen’s calendar that marks the days holding a retained run, is not part of this first walkthrough: show your recovery point as the newest good run rather than picking a particular day. And Cloudflare configuration restore is a separate, out-of-band path: only 60 of 313 config surfaces auto-restore in-band, and it is not part of this flow.
What just happened
When that first downpipe ran, the engine did the same four things it does on every run. It read the source records through your read-only token. It encrypted them with post-quantum hybrid sealing, a hybrid KEM combining X25519 and ML-KEM-1024. It signed the run with the hybrid signing scheme so the archive proves genuine. Then it wrote the result to your own bucket as a downpipe/0.1.0 archive. The vendor saw none of it, because the engine never sends data or a Cloudflare token to the vendor.
The run master is always wrapped to your offline break-glass key, the one the engine can never unwrap. In the two-recipient posture the engine also holds a decryption-capable operational key, so a full compromise of your live account can read past archives until you switch to the strict break-glass-only posture. The drill in the last step is what lets you confirm recoverability rather than take it on trust.
Next steps
Schedule and retention
Set how long copies are kept and how older runs are pruned without losing your safety floor.
More destinations for 3-2-1
Add destinations so a copy survives the loss of any one of them, with honest per-destination state.
Invite your team
Grant teammates roles by email so your tenant lands governed, and offboard them cleanly when they leave.
Offline recovery
The offline Go reader that recovers and verifies from the break-glass key alone, with no engine and no vendor.
Last updated .