Skip to content

Cloudflare OS

Customized for your Company

Deploy a pinned Cloudflare OS release with branding, sign-in, integrations, routes, and upgrades under your control.

Cloudflare Workers Node.js 24 pnpm 11 Cloudflare OS upstream

Important

Cloudflare OS is early-access software. Pin upstream releases, review changes, and verify the trust boundary before every production upgrade.

Four steps

  1. Install the dependencies and run pnpm exec wrangler login.
  2. Fill in deployment.jsonc: account ID, Worker names, hostname, Access audience, admin emails.
  3. Run pnpm check, then pnpm deploy.
  4. Open /admin and set the site name, logo, and accent color; branding needs no redeploy.

Deploy and Customization expand each step. Everything else on this page is optional reading.

Overview

This repository adds deployment controls around a pinned Cloudflare OS release without modifying the upstream source.

Control What you own
Branding Site name, logo, and accent color, changed in /admin without a deploy
Identity The sign-in method and administrator allowlist; this starter deploys Cloudflare Access mode
Routing A production Custom Domain or a workers.dev evaluation route
Data Existing KV/R2 resources or automatic provisioning
Integrations Wrapper-owned Gatekeepers and service bindings without patching upstream
AI No platform model by default; opt into Workers AI and AI Gateway when needed
Operations Structured logs, traces, explicit error reports, validation, deployment order, and upgrades

Architecture

Cloudflare OS deployment architecture: users sign in and reach the pinned Cloudflare OS release, holding the Workshop kernel, Gadgets, Blueprints, and the default Gatekeepers. Service bindings connect it to the Workers this repository owns: optional AI, custom Gatekeepers, the Error Reporter, and KV and R2 storage.

The deploy command derives temporary Wrangler files from upstream base configs, builds the frontend in Cloudflare Access mode, deploys the private Error Reporter and Gatekeepers before the Workshop, and removes generated files even on failure. Secrets never enter tracked configuration.

If you only want branding

A hosted flow deploys the same upstream release to your Cloudflare account without this repository. It builds nothing locally, configures sign-in and your admin emails for you, and leaves the whole /admin surface intact: site name, logo, accent color, announcements, agent instructions, featured blueprints, and which connectors your users can reach. Built-in Gatekeepers such as GitHub and Google are still yours to connect with your own OAuth credentials.

Deploy to Cloudflare

Anything past that needs your own code or settings, which is what this repository is for: custom Gatekeepers, customized error reporting, your own Worker names, reusing storage you already have, choosing how much logging to keep, and a pinned version you upgrade when you decide. Hosted deployments also run on a workers.dev address, so deploy from here if you want the app on your own domain, or the email Gatekeeper, which needs a zone. Come back when branding stops being enough.

Deploy

1. Prepare the workspace

Install Node.js 24, pnpm 11, and authenticate Wrangler:

git submodule update --init
pnpm install
pnpm --dir cloudflare-os install
pnpm exec wrangler login

Your account needs Workers, KV, R2, Browser Rendering, and Dynamic Worker Loaders. AI products are optional.

2. Configure sign-in

Cloudflare OS supports several sign-in methods. This starter deploys Cloudflare Access mode, which verifies identity before a request reaches the Worker. See Sign-in methods for the alternatives and what switching involves.

  1. Choose a Workshop hostname in an active Cloudflare zone, such as os.example.com.
  2. Create a self-hosted Access application for that hostname.
  3. Copy its application audience tag.
  4. Open deployment.jsonc and replace the active placeholders. Every control is annotated in place.

Wrangler creates DNS and TLS for the custom domain at deploy time. For an evaluation without a zone, switch the annotated route to { "workersDev": true }.

3. Validate and deploy

pnpm check
pnpm deploy

With resource values left as null, Wrangler creates the three KV namespaces and R2 bucket automatically and reconnects them on later deploys. Set explicit IDs or a bucket name when the deployment must reuse existing resources.

AI is disabled by default. The application can deploy without an AI Gateway or token; see AI models to enable deployment-funded models.

Backend error reporting is enabled without a vendor account. Explicit upstream issue events become structured logs in the private Error Reporter Worker; see Observability and error reporting.

4. Verify the deployment

  • Open the Workshop hostname and confirm Access signs in with the expected identity.
  • Open /admin, confirm the email is an administrator, and set Context and Custom Gatekeepers to disabled, optional, or enabled.
  • Enable the Custom Gatekeeper, ask for deployment information, and confirm its read appears as an observation.
  • Open the Error Reporter Worker's Workers Logs and verify its structured error_report query surface.
  • Review logs for the Workshop, Context, custom Gatekeeper, and Error Reporter Workers.

Customization

Customize Best place Deploy required
Site name, logo, color, announcements, instructions, connectors /admin No
Sign-in, routes, AI, storage, observability, Worker identities deployment.jsonc Yes
Logs, traces, error destinations, browser reporting Observability guide Sometimes
Organization APIs and capabilities packages/custom-gatekeeper Yes
Product behavior unavailable through Worker boundaries Pinned upstream fork/commit Yes

The complete control reference and recipes live in Customization. The upstream write-gatekeeper skill covers richer integrations.

Operations and upgrades

  • Stream production events with wrangler tail.
  • Triage explicit failures and choose export destinations with the observability guide.
  • Roll a Worker back from its dashboard deployment history or with wrangler rollback.
  • Follow the upgrade checklist before changing the pinned submodule.
  • Review the upstream Cloudflare OS documentation and release history before adopting behavior changes.

About

A guide for customizing your Cloudflare OS deployment

Resources

Code of conduct

Contributing

Security policy

Stars

152 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages