Product launch: Xiaohu breakdown

Cloudflare open-sources Cloudflare OS, the AI office platform it built for every employee

It ran company-wide for three months before release. The security design is the standout — approvals can come later, and agents never have to stop and wait.
60-second read
  • Cloudflare just open-sourced the AI office platform its entire company has used for three months. The code is on GitHub, and you can run it on your own servers.
  • The genuinely new stuff is in the security layer: it tracks which data an agent has read, and when you share the agent's output, it checks whether the recipient is allowed to see that data — not whether they can call the same tools.
  • There's also a fix for "approval fatigue": when an agent wants to create an issue, the system fakes the result and lets the agent keep going. You batch-approve everything when you're back. The cost of that trade-off is spelled out in the source code comments.
⚑ This is a product announcement from Cloudflare itself. Usage numbers and time saved are their own claims, and the hours-saved figure is labeled as an estimate in the original post. For the mechanisms, I pulled the open-source repo and checked the source code — where the blog was vague, the code wins, and I've flagged discrepancies in the text.
What it is

What is Cloudflare OS?

Today Cloudflare open-sourced Cloudflare OS, the AI office platform its own employees have been using for the past three months. It's released under the Apache 2.0 license, the code is all on GitHub, and you can deploy it to your own Cloudflare account or run the entire stack on your own servers. This isn't another "chat box with connectors." It's a complete system that thousands of employees have used for three months — built to solve one specific deadlock: "I want AI to touch my company's real systems, but I'm not about to hand over the API keys."

In short, it bundles three things together:

Agent workspace
Comes pre-loaded with your company's terminology, processes, and ways of working. It includes an isolated runtime where agents can write and run code directly.
Security governance framework
Manages who can touch which data. This is the part worth paying the most attention to — and the part no one else can easily copy.
App platform
Everyone can modify things. When an agent builds an app, someone else can pick it up and have their own AI modify it further.

There's a very concrete story behind it, which we'll get to when we cover Gatekeeper.

Open it up, and it looks like a chat box in the browser — no different from any other AI tool. The difference is what happens after the conversation ends. A conversation can become a document, an app, or a workflow that keeps running on its own.

A single prompt "Get this done for me" A doc / slides Live data, exportable A working app UI, backend, multi-user A workflow Scheduled, or event-triggered All three live in the same workspace and can call each other
Diagram by Xiaohu: a single conversation in Cloudflare OS can become three different things, not just a reply.

Four use cases from the announcement

First: Research. Ask the workspace to dig into a topic, and it can draw on company context and whatever resources you point it to. One detail is worth noting here: the agent writes code to search, filter, join tables, and compute, rather than cramming the entire dataset into the model's context window. With any reasonably sized dataset, the latter approach either doesn't fit or costs far too much.

Second: Docs, slides, and spreadsheets. The output doesn't have to be a static file. It can stay connected to its data source and update when the source changes, while still exporting to standard formats or pushing to places like Google Drive.

Third: Team apps. When a document or spreadsheet isn't enough to get the job done, the agent builds you an app — with its own UI, its own logic, its own state — that can connect to company resources and support multiple users.

Fourth: Turning repetitive work into deterministic workflows. This one is the most practical. A lot of work is really a fixed sequence of steps with only one or two places that need judgment. There's no point spinning up a fresh agent session and burning tokens from scratch every time. Codify the deterministic steps, and only call the model at the points that genuinely need judgment. Once it's built, you can run it manually, on a schedule, or trigger it from events in external systems.

Cloudflare OS home screen: a left sidebar lists Workspaces, Blueprints, Artifacts, Scheduled Jobs, Context & Skills, with an input box in the center
Official homepage screenshot. The left column, top to bottom: Workspaces, Blueprints, Artifacts, Scheduled Jobs, Context & Skills. Below that, the "Recent Workspaces" section shows real entries like "Feature Request Workflow," "Auto Email Agent," and "Q3 Planning Doc," with a "Show all (171)" link underneath. The four onboarding cards in the center are the official example use cases: prep for a 1-on-1 meeting, find trends and recommendations in a sheet or CSV, trigger an agent when a new email arrives, and build a small tool or dashboard. The model picker sits at the bottom right of the input box. Source: Cloudflare Blog.

But the screenshot in the official blog shows an empty workspace — you can't see what it's actually like to work in. The screenshot in the open-source repo is far more revealing:

Q3 planning workspace: a conversation on the left, and a six-page slide deck generated on the right, currently showing page five
Workspace screenshot from the open-source repo. On the left, the agent reports it has built a six-slide deck and summarizes each slide, adding, "Every number is made up — swap in real ones before you talk to anyone." On the right, page 5 is rendered: three columns showing what ships in July, August, and September, with acceptance criteria for each month. Three things are worth noting: The $1.73 badge in the top-right corner — this workspace shows its running cost in real time. Above the content, there are Slides / Code / Connections tabs, so you can open the artifact, the code that generated it, or the resources it's connected to. And in the bottom-right of the input box, the model is set to Claude Opus 5. Source: cloudflare/cloudflare-os repo.
Mechanism

Every "file" is a standalone app with its own sandbox and its own database

Traditional office suites hand you a fixed set of file types: docs, sheets, slides. Cloudflare OS ditches that premise entirely. Every "file" can be its own complete application, written on the fly by an agent for you, for a project, or for a team.

In the repo, this is called a gadget; the public blog post translates it as "app." Same thing. It's not a prototype, and it's not a half-finished thing you have to export and deploy somewhere else. Each one is a complete full-stack application: frontend code, backend code, APIs, and persistent state. Private by default, shareable like a document.

How does it give everyone their own instance without burning money? Three pieces fit together:

PieceWhat it doesAvailable since
Dynamic Worker
Dynamic Worker
Hosts the app's backend code. It's a lightweight isolated runtime that loads on demand and uses no resources when idle — no need to provision a server or container per app and leave it sitting there.March 2026
Durable Object Facet
Durable Object Facet
Gives the app its own SQLite database, separate from the platform runtime's storage. This is why every "file" can have independent state.April 2026
Cap'n Web RPC
Cloudflare's open-source RPC system
Handles communication between frontend and backend. Calling a backend method from the frontend feels like calling a local function.Already open-sourced

The first two are features Cloudflare added to the Workers runtime just this spring. The repo README is explicit about where they came from: these features were added to the runtime specifically to make Cloudflare OS possible, and more are on the way.

Cap'n Web comes with a free bonus

The third piece has a side effect, and it's the most elegant part of the whole design. Because the frontend has to call the backend through a well-defined method interface, that same interface is naturally callable by an agent.

That little tool you built for yourself? An agent can use it to do work for you while you're away. No need to write a separate MCP server, no need to bolt on another agent loop. It comes free. The official architecture diagram puts it right in the middle: whatever the UI can do, the agent can do.

App architecture diagram: an agent session and a browser client connect from above to the same Application API, below which are a Dynamic Worker and a Durable Object Facet, with three typed resource bindings at the bottom
Official architecture diagram. Two entry points at the top — the agent session (which writes the app, then calls it) and the browser client (sandboxed iframe, no network access of its own) — both connect via Cap'n Web to the same Application API in the middle. Below that is the on-demand app server: the left half is a Dynamic Worker (lightweight isolated runtime, no idle resources), the right half is a Durable Object Facet (its own SQLite, separate from the runtime). The three boxes at the bottom show the permission granularity: env.PROJECT is scoped to one repo, issues only; env.CALENDAR is read-only, writes require approval; env.WAREHOUSE has certain columns redacted. The diagram's own caption: granted per resource, never a credential. Source: Cloudflare Blog.
Sharing

Two ways to share: use the same app together, or hand over the code so someone can make it their own

The first is sharing the app itself: everyone goes into the same app, the same SQLite database. Changes are visible to everyone in real time, like collaborating in Google Docs.

The second is sharing a blueprint. The recipient gets a copy of the code and generates a brand-new app from it. None of the original app's data, conversation history, credentials, or connected resources carry over. From that point on, the two run independently.

On the left, you and a colleague connect to the same app and share a database. On the right, a blueprint splits into two independent apps, one for team A and one for team B
Official comparison diagram. Left, "Share the app": real-time collaboration — one app, one SQLite database, one set of connected resources. Right, "Share a blueprint": only the code and structure transfer. Team A and Team B each get their own copy, with their own state, their own resources, and they modify it to fit their own needs. Source: Cloudflare Blog.

The second mode is the important one. It means someone who gets your app can have their own AI modify it, instead of filing a feature request and waiting in your backlog.

The repo README takes this argument even further. For the past 25 years, the SaaS logic has been: I run the software on my servers, you connect and use it; if you need a feature, you have to beg for a spot on my roadmap. Blueprints are closer to the mobile-app or PC-software model: each user runs their own copy, and if they need something, their AI adds it. The README's argument is that while AI lets individual developers build far more than ever before, individually maintaining an online service is still hard — and blueprints remove "maintaining the service" from the equation entirely.

Security

Gatekeeper: agents start with zero access, and approval isn't handing over a key

Around February, a colleague from Cloudflare's sales team went to the company CIO asking for API keys — a lot of them. This person had used AI to assemble a "super app" that claimed it could transform the entire marketing team. One thing stood in the way: production credentials for a dozen of the company's core business systems, plus admin access to a deployment pipeline.

This is the wall every company runs into when rolling out AI. If AI can't touch the systems people actually work in, it's basically useless. But letting it in means handing over keys — and keys are broad, long-lived, hard to revoke, and impossible to audit.

MCP was already a step forward: the agent doesn't hold the keys directly; an MCP server holds them and exposes a defined set of tools. But the blog post zeroes in on MCP's blind spot:

MCP only tells us which tools an agent can call. It doesn't tell us which underlying resources it has actually seen.

Cloudflare Blog, "Cloudflare OS: An Open Platform for Agents, Apps, and Work"

An agent can easily combine information from several systems, move it somewhere less carefully guarded, or leak it through the apps and artifacts it creates to people who have no business seeing the raw data. So authorization can't stop at the front door. It has to govern where data can flow next.

That's what Gatekeeper is for. It's a Worker that sits between Cloudflare OS and an external service — one per service — and understands that service's APIs, resources, and possible operations. It does four things: holds the credentials, enforces policy, records what's been read, and intercepts every externally visible side effect.

An analogy

Think of the front desk at an office. Outsiders can't just walk in; everything goes through the front desk. The desk holds the keys for you, logs everything that happens, and checks with someone before anything goes out.

Layer one: you start at zero, and approval gets you a scoped pass

The door into Cloudflare OS is managed by Cloudflare Access. Once inside, every agent and every app starts with zero permissions. An agent can request access to a specific resource, and you approve or deny it. When you approve, the code it writes gets something like this:

const issues = await env.PROJECT.listIssues({
  teamId: "ENG",
  state: "open",
});

env.PROJECT is a capabilityThe original term is "capability." The difference from a key: a key is a string of characters that works for anyone who holds it. A capability is an object with its allowed actions baked in, and it can't be copied or handed to someone else. representing "use this specific resource under this specific policy." The credentials themselves are completely isolated from the agent and the code it writes — the code never touches a key.

The scoping can also be extremely fine-grained. The blog's example: handing an agent your entire GitHub account is clearly too broad. Gatekeeper can restrict it to a single repo, let it read issues but not source code, redact certain fields, apply rate limits, and require human sign-off before merging PRs.

Two more walls underneath: the app's server-side code runs in a Dynamic Worker with outbound network access disabled by default, and the frontend runs in a sandboxed iframe in the browser. Both sides can only reach the outside through the capabilities you explicitly granted. No other path exists.

Gatekeeper architecture: an agent or app connects via a typed RPC capability, Gatekeeper holds the credential, with separate columns for reads and actions, a human approving or rejecting on the right, and the business systems below
Official Gatekeeper diagram. An agent or app connects from the top through a typed RPC capability. The orange block in the middle is Gatekeeper, labeled "holds the credential" in the top-right corner. The left column is the read flow: vet resource → call service → log an observation. The right column is the action flow: enforce policy → simulate the result → queue for approval → execute only after approval. Connected to the right side is you — the approver. The actual business systems sit at the bottom. The simulate the result step on the diagram gets zero explanation in the blog post itself — it's arguably the most useful design in this entire release, and we'll cover it in detail below. Source: Cloudflare Blog.
Core mechanism

The system remembers what the agent read — and checks viewers against that before they see anything

Controlling the initial read alone isn't enough. The blog gives an example that makes it instantly clear: an agent reads a sensitive table in the data warehouse and builds a live dashboard from it. Sharing that dashboard can't become a backdoor for sharing the underlying table.

Cloudflare OS's answer: log every resource an agent reads. These observation records travel with the agent and its artifacts. When someone else tries to open the workspace, chat with the agent, or view its output, the various Gatekeepers check one thing: is this person allowed to directly read what the agent read? If yes, they're in. If not, they're blocked.

Observation record check: a workspace has read a revenue table, support tickets, and a team calendar. When someone wants to view it, the system first asks whether they can read those, checks with three Gatekeepers, then allows or denies
Official diagram. The orange box at the top is the agent workspace, containing the three things it has read: revenue table, support tickets, team calendar. The label in the top-right reads observations stay attached to the agent and its work. When someone wants to view it, the flow first asks "Can they read it?", then checks separately with the warehouse, GitHub, and calendar Gatekeepers, before returning a single allow or deny. Source: Cloudflare Blog.

The implementation in the repo goes further than the blog lets on

The blog just says "it checks." The full mechanism in docs/observers.md in the repo has three additional details the blog leaves out:

One: the recipient has to connect their own accounts first. When you share an app with a colleague, they have to pick one of their own accounts for each service the app depends on — their own Google, their own GitHub. The system then asks the Gatekeepers using their identity: can this person read these things? If not, they get a straight refusal. If they decline to connect an account, same result.

Two: once they're in as an "observer," your app's capabilities get clamped down. From the moment they become an observer, if the app tries to read anything the observer isn't allowed to see, that read is blocked on the spot and throws an exception. If you share your app with a colleague who has fewer permissions than you, your own app's read scope gets squeezed down to match theirs. There's only one way out: revoke their access.

Three: every time they open it, the check runs again. This guards against "they had access last month, but they changed roles since then."

The old way, for contrast

Before this mechanism, the system only had a blunt switch called prohibitAllSharing: if any Gatekeeper flagged a single read as top-secret, the app became completely unshareable — locked down, unable to take any action, unable to reach the network. The docs admit this was a stopgap, because it can't express the nuance of "this data can be shared, but only with people who have the same clearance."

The same observation records have a second job: governing outbound traffic. After reading sensitive data, an agent may be blocked from writing to certain destinations, pulling in new collaborators, delegating a task to another agent, or making certain external requests. What you read determines what you're allowed to do next.

Core mechanism

Approval can wait: Gatekeeper fakes the issue first and lets the agent run to the end

Anyone who has used an agent tool with permission prompts knows this scene.

Traditional human-in-the-loop approval is synchronous: when the agent wants to do something with side effects, it stops and waits for you to click confirm. You assign it a task, walk away to refill your coffee, and come back to find it stuck on the first approval popup, having accomplished nothing. So people give up and set everything to auto-approve — or worse, add the skip-permissions flag. The README names it directly: --dangerously-skip-permissions. It's obviously not safe, but it beats sitting around waiting.

Gatekeeper's answer: don't actually do the thing, but make it look done.

The agent says "create an issue." Gatekeeper doesn't create one on GitHub. It queues the action for approval and hands the agent a temporary fake issue, so the agent believes it's done and can keep going. Labeling the issue, commenting on it, referencing it elsewhere — all of it works. The agent runs to completion without stopping. Later, when you have a moment, you review the batch: approve them all, approve them one by one, or reject them.

Before · Stops and waits for your click Create issue Needs approval Stuck Waiting for you Add label Comment Notify None of these ever happened Cloudflare OS · Fake it first, keep moving Create issue #~1 Add label #~1 Comment #~1 Reference it #~1 Done No pauses. The issue ID the agent holds is fake — the #~ prefix is a dead giveaway You're back All four actions are lined up in one batch. Approve all or approve one by one — each action only actually happens when you approve it
Diagram by Xiaohu, based on the interface comments in the repo and the GitHub Gatekeeper implementation.

I checked the source: createIssue really does queue first, then returns a temporary ID

I pulled the repo and went through the GitHub Gatekeeper implementation. createIssue indeed first throws the action into submitActionForApproval, then immediately returns an issue object with a provisionalId to the caller. The code also shows the rendering format for these temporary IDs — the #~1 tilde-prefixed fake numbers, easily distinguishable from real ones.

The interface comment spells out the design intent:

Gatekeepers are encouraged to "simulate" the results of unapproved actions, i.e., the session API should behave as if all actions have already been applied. This allows the app to continue its work and enqueue further actions that depend on them.

cloudflare-os repo · packages/workshop-shared/src/gatekeeper.ts

The costs are in the comments too. Three of them.

One: simulation is "encouraged," not "required." Right after the passage above, the comment adds: Gatekeepers are not strictly required to simulate, and it's up to the Gatekeeper author to decide which actions are worth simulating. So the experience will vary from service to service.

Two: rejecting an already-simulated action can require restarting the entire app. Because state has already moved forward based on the fake result, an incomplete rollback will confuse the agent. The interface has a dedicated restart flag for exactly this. The code also handles cascading effects: if you reject the "create issue" action, every subsequent action that depended on that issue is rejected along with it.

Three: rollback is optional. A Gatekeeper may choose not to implement rollback. In that case, the system can only tell the user to undo it manually. The comment says "a high-quality Gatekeeper should implement it in almost all cases" — which, read backwards, means not all of them do right now.

Cost

Every model call and every dollar flows through the same gateway

All inference calls go through Cloudflare AI Gateway. The benefit is that there's a single place to decide which models are available and which tasks get routed to which model.

The reasoning is pragmatic: not every task deserves the most expensive model. Summarizing your unread email every morning doesn't need a frontier model. The CIO's post puts it even more bluntly — you can't have employees spending $20/hour to summarize their inboxes.

Every request is attributed to a specific person, team, and workspace. Admins can see where the money goes, set budgets and rate limits, and define what happens when those are exceeded.

AI Gateway flow diagram: all model calls go through the gateway first, which checks identity, budget, and cache, then routes to frontier, balanced, or small models
Official diagram. On the left, every model call from agents and apps carries "who made this call." In the middle, AI Gateway does five things in sequence: verify identity, apply budget, serve from cache when possible, pick a model, and auto-fall back on errors. On the right, three tiers: frontier models handle the hardest reasoning, balanced models take most everyday tasks, and small models handle high-volume, low-cost work. The diagram notes "any provider, including Workers AI" at the bottom. Source: Cloudflare Blog.

The four providers supported out of the box in the repo

ProviderWhat's on the default recommended list
AnthropicClaude Opus 5, Claude Sonnet 5, Claude Haiku 4.5
OpenAIGPT 5.6 in Sol, Luna, and Terra tiers
GoogleGemini 3.6 Flash
Cloudflare Workers AIKimi K2.7 Code, GLM 5.2

There's also a hook for local ollama. One TODO comment in the code is amusing: they'd like to add Claude Fable, but first need an admin toggle, because many companies prohibit it under zero-data-retention policies. The comment adds, "it's also kind of overkill for building these little apps."

The hosted version has another billing layer: each user gets a daily free allowance, defaulting to 100 model calls. After that, you either connect your own Cloudflare account and pay from your own AI Gateway balance (which must be above $2), or you're blocked. Self-hosted deployments have this layer disabled — no limits.

Data

Inside Cloudflare for three months: 4,000+ apps built in the last 30 days, and a pile of junk

The first version of Cloudflare OS opened up to all employees in May 2026. Three months later, it's being open-sourced.

4,000+
Apps and tools built by employees in the last 30 days
10k+ hours
Time saved for the sales team over the same period, per Cloudflare's own estimate
1,000+
Employees using it weekly, with daily active usage climbing through the workweek
May
When v1 opened to all employees; v2 is open-sourced three months later

What did the saved time go toward? The CIO names territory mapping and proposal writing — sales tasks that used to be manual.

The miss first

Early on, they gave non-technical employees the exact same tool, just with a friendlier interface. The CIO's own summary is telling:

If you give everyone a workspace that's really good at writing code, you end up with way more code than you need.

Sam Rhea, CIO at Cloudflare

What appeared was a flood of vibe-coded apps in search of a problem to solve. That's a big part of why v2 pushed toward deterministic workflows: not every task needs a code-writing agent.

The CIO's own example, three generations side by side

Every morning he needs to see the IT helpdesk ticket queue and a few service metrics.

PhaseHow it was doneThe cost
Manual eraExport a CSV from the ticketing system, plot it in Google Sheets, then click through each new overnight ticket one by oneTime-consuming, and it created a duplicate copy of the data outside the system
v1Run a skill file connected to the ticketing system's MCP serverSafer and less manual, but every morning burned thousands of tokens to regenerate a report that barely changed
v2Have the agent write the dashboard as code, with a Gatekeeper managing the connection to the datasetZero tokens to load that initial report

That last "zero" needs its premise spelled out: it holds because the dashboard has been written as code, the data is fetched directly through Gatekeeper, and loading it never touches a model. It's not "Cloudflare OS means zero token burn." The places he actually needs AI — like drafting replies to new tickets — are still embedded in the app, and those still burn tokens.

Another line of work from the same company, covered on Xiaohu
Cloudflare's coding engineering practices: a unified "rule library" puts Codex in the review seat, blocking 16,000 bad merges in four months
The engineering-side approach the CIO mentions — an internal rule library that uses agents to review every merge request, technical design, and incident report — is the subject of that article. Not repeating it here.
Approach

How they find out what to automate: a magic inbox for work nobody wants to do

This part has nothing to do with the product itself, but it's the most directly copyable thing in this entire post.

The problem: if you want to know which work in your company is worth automating, asking people "what would you like to automate?" usually produces useless answers. Cloudflare's approach is to ask a different question. They told the whole company: send the work you don't want to do to this magic AI inbox, and it will send you back the finished result.

There's no automated system behind the inbox. It's a small team of humans with AI tools, working through the requests one by one.

The genius is in the psychology. In the CIO's own words: for some reason, people don't like sending their vibe-coding ideas to something they think is an automated system, but they're very happy to dump the work they don't want to do.

After hundreds, then thousands of sessions, they manually sorted the requests and patterns started to emerge: which requests repeat, what data they need, what form of output people ultimately want. Once they could see it clearly, they turned it into skill files and context files, wired up the data sources, and locked down the output formats. Only when the material was sufficient did they put it on the platform for self-service.

The CIO describes the process as "painful," and says they kept almost shutting it down — but held on until they had enough material.

The hardest of the five principles

Before starting, they set five principles. The fifth one: when you use AI, you should never get more access to business systems than you normally have. Furthermore, any agent you share should grant others access based on their permissions, not yours.

The entire Gatekeeper and observation-record machinery grew out of this single sentence.

Limitations

What to know before you dive in: this is an early version, and Gatekeepers have to be written by hand

Most of these come from the repo rather than the launch post, but they determine whether you should start now.

One: the README itself carries an "early access" warning. This repo is actually v2 — a complete rewrite informed by v1's lessons. Their words: it's surprisingly capable, but it still has rough edges; we know, and we're working on it.

Two: writing a Gatekeeper for a service is real engineering work. The repo ships 16 of them, covering Google, GitHub, Slack, Notion, Linear, Confluence, Supabase, Home Assistant, and other common services. I counted the lines of code for each:

Google
7,425 lines
GitHub
5,427 lines
Home Assistant
4,638 lines
Notion
4,073 lines
Confluence
3,394 lines
Linear
3,209 lines
Slack
2,137 lines
MCP bridge
544 lines
8 of the 16 shown. Line counts are from the repo — TypeScript source under each package's src/, excluding type declaration files.

In other words, for any in-house system without a ready-made Gatekeeper, someone has to write one — and at this scale, it's not an afternoon project. The good news: the repo includes two bridge packages, MCP and MCP Portal, so existing MCP servers can be plugged in directly. The catch is that you only get MCP-level control, not Gatekeeper's fine-grained policies.

Three: they don't accept external code contributions. The reasoning in the contributing guide is worth reading:

AI has made writing code easy. What's hard today is reviewing code, maintaining quality, and keeping the product coherent. Seen that way, external code contributions hand us the easy half of that work while creating more of the hard half.

cloudflare-os repo · CONTRIBUTING.md

They only accept small, instantly verifiable fixes; anything over a dozen lines gets closed with a link to this policy. Big ideas go in a discussion post.

Four: self-hosting on your own servers via workerd is still marked "coming soon" in the docs. It works technically — local dev mode runs on workerd — but the tooling and docs aren't complete. If you want to do it now, you'll be digging through low-level configuration yourself.

The official roadmap has three items: make Cloudflare OS a hosted product in the Cloudflare dashboard, add containers to the development workflow, and integrate workspaces into chat tools like Slack.

Getting Started

How to try it: one command locally, or one-click deploy to your Cloudflare account

The fastest path: run it locally. Install pnpm, run pnpm run-local, then open localhost:8787. The whole thing runs on your machine, with data stored in a local .wrangler directory. This mode isn't for production, but it's more than enough to get a feel for what the product actually is.

To deploy to your own Cloudflare account, there's an online flow: os.cloudflare.app/deploy. If you plan to customize deeply, use the cloudflare-os-starter template repo, which mirrors how Cloudflare itself deploys. The key design principle: consume the core, don't patch it. Configuration, custom UI, internal integrations, analytics, and deployment pipelines all live in your layer, so core upgrades don't clash with your changes.

The README offers a few starter prompts. Copied verbatim:

  • "Make a set of slides for my customer meeting tomorrow." (Uses the built-in slides blueprint.)
  • "Build a collaborative whiteboard app." (Built from scratch.)
  • "Build a tic-tac-toe game." Then: "I'm X and you're O. I made my first move, your turn."
  • "Build an issue dashboard for this GitHub repo." (Requires configuring the GitHub Gatekeeper first.)
  • "Fix the typos in this Google Doc." (Requires configuring the Google Gatekeeper first.)

If you'd rather not do it yourself: Cloudflare's two strategic partners, Presidio and Happy Cog, offer deployment services — connecting internal systems, building out company context and skill libraries, and configuring security and cost policies.

🧰 Quick Start · Cloudflare OS
PriceFree and open source under Apache 2.0. The hosted version gives each user 100 free model calls per day by default; beyond that, it draws from your own Cloudflare AI Gateway balance (which must be above $2). Self-hosted deployments have no such limit.
BarrierTo try locally: install pnpm and run one command. To connect real company systems: the 16 ready-made Gatekeepers cover common services; anything else needs custom Gatekeeper code, or you can bridge existing MCP servers via the MCP bridge package.
Source
Cloudflare OS: An Open Platform for Agents, Apps, and WorkPhillip Jones, Dan Carter, Cloudflare Blog·Original·2026-08-05
Editor's Note
Five mechanism diagrams and one homepage screenshot are from the Cloudflare Blog; the workspace screenshot is from the cloudflare-os repo's docs/images. The "three outputs" diagram and the "sync vs. async approval" comparison are original to this article. The three details of the observer mechanism, the simulated-approval implementation and its three trade-offs, the line counts for all 16 Gatekeepers, the built-in model list, and the free-allowance rules all come from the open-source repo's source code and docs — not from the launch post. Usage scale and hours saved are Cloudflare's own claims; the hours figure is their estimate.