upvote
This is really interesting. I built a similar product (not released yet), but it uses Kubernetes as the infrastructure layer instead of Cloudflare OS. I guess all these years later I am left with the same existential question that plagued Sandstorm. What is its relevance in the context of Linux containers? This is not a rhetorical question, is there a real benefit for a Sandstorm grain over a docker style Linux container? Does a containerized process not have all the same benefits of a Sandstorm grain, with the added benefit of not requiring any modifications of the containerized software?

One argument I could bring is that despite all its claims, OpenAI still had to switch from containers to MicroVMs because its agents under test still managed to break out from their containers. Is the security model of a Sandstorm grain so much better that agents wouldn't figure out how to break out of it?

reply
Sandstorm's use of containers was just a means to an end. The real innovation was the fine-grained instances -- each document in its own container. No other container platform did that.

But honestly, it didn't work well, because of cold start times and memory usage. It's bad enough when a server takes seconds to start, but if every document you open has a long startup time and uses hundreds of MB of RAM, it's really painful.

Cloudflare OS doesn't use containers. It uses Dynamic Workers, which are 100x more efficient: https://blog.cloudflare.com/dynamic-workers/

So the stuff I have been building in Workers for the past 9 years turns out to be the thing that Sandstorm needed all along. What a coincidence. :)

reply
dumb question: is this javascript/typescript only? can you use webassembly based languages instead?
reply
In theory Wasm could be supported, but generally JS/TS is much more efficient when running inside isolates (our lightweight sandboxes) since you don't have to bundle a language runtime into the app. CFOS at present only exposes JS (with TS coming soon).
reply
Please add Wasm support :)

I'm making a whole new language to get around the problem you're talking about: it brings no runtime at all. One of my targets is a Sandstorm like system I've been slowly working on, but I'd love for it to be a fit for the actual Sandstorm successor.

reply
This is far too Cloudflare flavored to be interesting to me.

It's using Workers (capital W) and the core Cloudflare primitives.

I don't feel safe building on this or touching this.

I'd be happier if a startup or neutral party built this in a more agnostic way.

reply
I'm sorry but Workers is the technology that makes this all possible. I don't think I could have built this without Workers as a foundation. (I tried once, with Sandstorm, and like I said, it didn't work well.)

Sometimes you just can't advance the state of the art while also maintaining broad compatibility.

It's all open source, though. You can run the whole stack on your own machine.

reply
For what it's worth, we also ran workerd inside a Sandstorm grain and not only did it work, it performed well. In the same way some people run Docker to run a single thing inside a VM solely for that thing... you can probably use workerd just to run a single Workers-based thing inside something else... and it'll probably work just swell.
reply
Workers is a product and you're paid to develop and sell it as an employee.

I 100% understand the hustle. I do the same thing. I just don't trust a giant like Cloudflare that has done several things to weaken the open web and establish a position that is all too powerful. I don't want to give them an iota of support. Even using open source buys into their mindshare, distribution, ecosystem, and eventual supremacy and lock-in.

I'd buy this from a smaller company for sure. Just not from Google, AWS, Cloudflare.

If this was a YC startup I'd have given you my credit card info already.

I don't know what your stock in Cloudflare is like, but your upside would be way bigger building this externally. You'd probably raise an extremely large seed round.

Consider launching your own startup. Don't give Cloudflare all the upside.

Edit: I didn't realize you'd already responded. Was clarifying my position and wishes for this to not be something made by Cloudflare.

reply
I tried it as a startup once, so I know what that's like. It's a lot of time spent running around begging for money (from investors and from customers) rather than building technology.

Workers is my startup-within-Cloudflare. It won't make me a billionaire, but it has still made me more money than I actually know what to do with, while being able to delegate all the stuff I don't like doing to other parts of the company that already do it quite well.

I have a lot of influence here. The CEO and CTO listen to me. E.g. I made my argument this all needed to be open source and self hostable, and they agreed enthusiastically.

I don't think I could build this better as a separate company.

reply
I appreciate your extremely thoughtful answers. It greatly improves my perception and attitude about this.

I'll check it out.

I'm still anxious about the Cloudflare angle (and that's hard to shake), but beggars can't be choosers. You've legitimately built something cool and done a fantastic job spearheading that.

Thank you for the kind and well stated response. Sounds like you've had a lot of fun building this too.

reply
deleted
reply
My approach has been an interpreted Lisp running on a web server backend and it basically does everything described here
reply
I don’t think containers, as normally used, provide that much security because so much of what you want to secure is at the boundaries between containers (the network) rather than inside the container itself.

There’s not much point in preventing hyper visor escape style exploits if the agent can just SSH or psql log in to an adjacent container. Likewise there are near infinite ways to do weird things with the network to make stuff happen in another less controlled environment (eg sign up for AWS free account, make VM, do everything on that VM where controls don’t apply).

There are tools to do this, but I’ve never seen anyone package them up in a way that was pleasant to interact with. It’s got the SELinux problem of being useful, but annoying enough that everyone just disables it the second it gets in the way. It’s surprisingly hard to manage what should be able to connect to what as you start scaling out the number of things on the network. Whoops, you forgot that random software embeds its own DNS over HTTPS resolver so the normal DNS profile won’t work and everything crashed kind of issues.

reply
It has real business value. Letting non technical users run wild without the onerous layers of controls in traditional enterprise IT.

We're already contending with users wanting to hook up every SaaS MCP to every other SaaS platform and then slap AI on top. Having a controlled sandbox for that would hugely simplify things.

reply
Linux namespaces, and containers, are not security features in themselves. They end up having to be combined with SECCOMP and some sort of application kernel or SELinux in order to have an effective security apparatus. This is before you give it application aware security controls like policy.
reply
> is there a real benefit for a Sandstorm grain over a docker style Linux container?

Linux containers are meant to be used by those with significant software engineering skills. Sandstorm was designed to be used, once installed by someone else, by grandma.

reply
That should have been the announcement.

The article posted buries the lead. Cloudflare OS reads like almost any other AI knowledge base until midway when apps are introduced and then becomes overly technical with a code snippet.

reply
We really struggled with how to present this to multiple audiences at once.

My tweet thread, and the GitHub readme, is really the presentation intended for the HN crowd. The blog post is for a different audience.

https://github.com/cloudflare/cloudflare-os

reply
> The blog post is for a different audience.

No one? Like literally, I don't understand a thing of what the blog post is saying. It's vague to the point of meaning nothing. Every piece of text I've seen that explains CloudflareOS is clear except the blog post.

reply
I used to read their blog regularly because it had lots of interesting technical details. Lately, though, there’s less of that, and I can’t quite put my finger on what changed. My guess is that they realized how popular the blog had become and started using that attention more for advertising. There’s nothing wrong with that, but earlier the “advertisements” actually made me want to try things out and bring them back to my team. I even considered applying to work there. Not so much anymore. I’ve even removed it from my RSS feed.

I don’t like offering criticism without a solution, but I’m not really motivated to come up with one here. It looks like employees may read this, so maybe someone will see the feedback.

reply
https://blog.cloudflare.com/three-chapters-at-cloudflare-pro...

TL;DR; jgc stopped editing the blog, and AI slop took over:

> Today, after more than 13 years at the company, I am joining Cloudflare’s board of directors and retiring from my full-time position as CTO.

> ...

> I wrote for, and edited, the Cloudflare Blog for many, many years

reply
This matches my perception of a ton of recent Cloudflare blog posts. I literally have no idea who they are targeting. It almost feels like they're targeting themselves.
reply
Launching just recently and having to think about how i'm marketing things more and more, the hardest parts to really market are the AI related features. Most of the real value AI provides isn't flashy its just eliminating the tedious work that sits between the interesting parts of a job: structuring messy data, extracting information from documents, validating it against references, filling out forms, routing it for approval, and preparing it for distribution. The exciting work was already exciting. AI just removes the friction between point A and point D. That's alot harder to demonstrate than generating an image or writing a paragraph. "Look, here's all the data you no longer have to enter manually" isn't exactly a compelling marketing headline, even if it's where users save the most time.

I sometimes wonder who AI marketing is really for. The people who would benefit from eliminating repetitive work, or other technical people who want to see interesting AI demos.. A lot of product launches end up looking like "Here's a prompt that bootstraps X," when the bigger story is that the prompt replaces an hour of repetitive work that nobody wanted to do in the first place.

reply
Random trivia (and something I learned this way myself from an internet reply, though I can't remember when):

What gets buried is the "lede". It is a really unusual thing — a deliberate, engineered misspelling of "lead" that leaked into broader use:

https://www.merriam-webster.com/wordplay/bury-the-lede-versu...

(Not meant as a nit-pick — it's just something that adds really fascinating historical colour to a useful expression, that people often mistakenly re-correct)

reply
Not sure why you got downvoted on this one. You're right and you even turned it into a bit of language history. It's bury the lede, and now I know why.
reply
I think it was fair. I added the bit in brackets to clarify because maybe it had come across as a nit-pick.

In my head there are corrections that are rude that I don't do, because I genuinely think authentic writing matters more and more, and because I am absolutely not above reproach where grammar and spelling is concerned.

Then there are things I think people would want to know, that are either in the intellectual-you-have-a-little-bit-of-pinach-in-your-teeth territory or in the "cool fact" territory, or somewhere hazy in between.

I figured if one is going to correctly use an expressive phrase like "bury the lede" that they've perhaps only ever heard someone say, they would absolutely want to know about the spelling quirk, because it fully makes it better.

Other people obviously read it differently and the downvote was a useful signal.

reply
It's spelled "lede" so as not to be confused with "lead," as in the metal with which was used to print newspapers.

Since "lead" (as in beginning of a story) and "lead" (as in metal) were frequently used in print newsrooms, the spelling of one changed over time to reduce confusion.

There were a number of other language convolutions in newsrooms, such as "slug" which meant a piece of hot metal, and so was useful for describing a spent bullet, the very short text that served as a title for a particular story, and a section of metal letters on the printing press.

/Worked for two major newspaper companies back when printing newspapers was akin to printing money.

reply
“TK” meaning “to come” is another one. “More TK” in particular is now a blogger affectation but it seems to have been a way to communicate to an editor that a story was so far incomplete, within the text of a submission, without the editor assuming the words “to come” were part of the story. And elsewhere it indicates a placeholder that needs a fact to be confirmed and filled in before publication.
reply
it seems to have been a way to communicate to an editor that a story was so far incomplete

When the story was complete, the notification varied from newspaper to newspaper, but very often they followed the AP's convention of writing "-30-" which I have always believed was something the AP print wire actually (and surprisingly) adopted from the broadcast side, because broadcast stories were ideally 30 seconds long.

reply
deleted
reply
Sandstorm without self hosting has no interest though. (Edit: see below, where the creator states it _can_ be run locally)

Buzz looks like a more reasonable direction than this does.

reply
What do you mean? This is 100% open source and self-hostable!

https://github.com/cloudflare/cloudflare-os

It runs on the open source Workers Runtime:

https://github.com/cloudflare/workerd

You can run it at home if you want. There's even a Home Assistant Gatekeeper.

reply
So you can run it off the public internet with no sneaky external dependency on cloudflare, slack etc?

And it would be functionally the same? With the same performance if you put enough hardware there?

If so cool, and that should have been clearly in the announcement, because as it sounded it is “I am a sucker, lock me in!”

reply
> So you can run it off the public internet with no sneaky external dependency on cloudflare, slack etc?

Yes. It even supports ollama and works decently well with some local LLMs.

> And it would be functionally the same? With the same performance if you put enough hardware there?

Honestly it is faster running locally.

> If so cool, and that should have been clearly in the announcement,

We had so many things we wanted to say, it was hard to fit them all into one story.

The blog post is for an enterprise audience. My tweet thread is for the hacker audience.

reply
That is actually cool.

Maybe it is my bubble, but the experience people are having with Anthropic particularly is motivating a big “get this stuff back under control” effort so while it may not be strategically optimal for Cloudflare the local hosting would prove more valuable to enterprises than maybe a few years back, even if presented as a backup plan.

reply
Neat! How does that work with the AI Gateway portion? I see some references in the code but at a quick glance I can't tell if you can configure it to skip AI Gateway.
reply
Use of Cloudflare AI Gateway is optional.

In the default configuration, you just plop your Anthropic/OpenAI/Gemini/Workers AI/ollama API keys into the UI and it talks to each provider directly.

That said, I would recommend AI Gateway, it has a lot of nice features. :)

reply
You're not alone The name "cloudflare-os" by itself made me think this was heavily based on Cloudflare
reply
Do you have a store/list of public blueprints like sandstorm?
reply
Not yet, but that's an obvious direction to take things. :)

I'm really excited by the idea that this platform makes it safe to use blueprints that someone else vibe coded, without worrying about whether they checked it for security bugs, etc. Basically if the app works, it works. So yeah, there absolutely should be a marketplace so everyone can try everyone else's stuff.

BTW there are three blueprints installed automatically (docs, slides, sheets).

reply
Couldn't the blueprint exfiltrate incoming data to an external location for example?
reply
Blueprints shouldn't (if I know anything about Kenton) have access to the Internet/external locations without you granting it permission to.
reply
The blueprint is just code, it does not include data or capabilities.

It's, I suppose, possible that the agent added secrets to the code itself. Not, like, API keys -- the agent never sees those. But it could have extracted sensitive info and put it into code, perhaps?

We can implement restrictions on exporting blueprints from workspaces that have seen sensitive secrets, though this might be more annoying than useful. It's a tricky balance.

reply
Thank you for your work over the years, sandstorm is a really interesting and inspiring piece of software. I'll certainly try to self-host CloudflareOS.
reply
Yes, just like SaaS was a limitation to it's utility, PaaS is still a limitation, just on a different level.
reply
There is also qm with smol machines. I found this out the long way, by looking at the contributors to qm at https://github.com/yc-software/qm where I found BinSquare, the founder of smol machines. Then I found a tweet about a public instance of it where I could try out having it code something agentically - I'm in the replies here: https://x.com/binsquares/status/2083305704274976819

I guess the lock-in is to Cloudflare Workers, which is limited to JavaScript. I would in fact look into projects that are built around MicroVMs and WebAssembly. It seems Buzz would be happy to use smolmachines, or whatever. You'd have to roll your own permission system, but smolmachines would at least take care of being able to use stuff within an app, by offering persistent, portable containers.

Actually I think now I can finally say why this sandstorm.io with Cloudflare OS has lock-in. The promise is "you can pretty much go wild" and that you can hand it off to non-technical people to do that. Much as you squint, there is not a sophisticated access control system available to self-hosted users. There's a framework for building a sophisticated access control system, but that isn't the same as having something open source that you can self-host and let non technical users go wild.

However, this is cool. I just agree with you that Buzz sounds more interesting to me as someone who was into Sandstorm.

reply
Workers also supports Python, Rust and anything via WebAssembly (Go, C, etc)
reply
Ah, that changes the amount of work and the reward in the equation for attempting to self-host Cloudflare OS. And I knew that I could run WebAssembly manually inside of JavaScript, but it seems to be runnable directly too. What would help me to know further is how Cloudflare OS integrates its access control in that open source project, and if it is conveniently available to WebAssembly, Python, or Rust workers.
reply
> the sandbox is so secure that you can pretty much go wild -- the AI cannot introduce a significant security bug.

This can only be correct when the application can’t affect anything outside the sandbox. Which would significantly restrict useful applications.

reply
See my next tweet in the chain:

https://x.com/KentonVarda/status/2084990302784307363

-------------

Of course, personal apps are more useful if they can connect to external services. Cloudflare OS introduces a "connector" system we call Gatekeepers. This is sort of like MCP (and MCP is supported as a kind of Gatekeeper), but with a lot more:

* Instead of exposing tools, a Gatekeeper exposes a Cap'n Web RPC API. That makes it appropriate for use by both agents (via code mode) and Gadgets.

* Gatekeepers integrate with the Cloudflare OS UI to provide inline audit logging and human-in-the-loop approvals for all side-effecting actions.

* When an action requires approval, the agent does not need to stop and wait for it. A Gatekeeper will simulate the outcome, allowing the agent to keep running and queue up more work. You can then approve everything in a batch at the end. Hopefully, this means you no longer feel the need to turn on auto-approve! (But you still can if you want.)

We have already built Gatekeepers for a huge number of services, from GitHub to Home Assistant. We've found, with the right skills, AI can basically crank these things out for any given API, solving the chicken-and-egg ecosystem problem. We are working on a "software factory" of sorts where you can input the API docs for your favorite service and get a well-written Gatekeeper. That's not quite ready yet -- so for now use the ones we provide or use the write-gatekeeper skill to write your own. You can add your own Gatekeepers to your personal deployment.

reply
Or more directly:

When you share a Gadget, we verify that anyone you share with also has direct permission to access each of the resources it is connected to (via the Gatekeeper system). Hence, no security bug in the Gadget itself could accidentally grant people access to things they don't already have.

reply
But that is a problem. I have access to something deeply secret, I run a gadget, it reads that and sends it to whoever made it
reply
No, a Gadget does not just get automatic access to your data. It only gets access to the things you grant it explicitly.
reply
Just like phishing websites, which are still a problem. I’m sure I’m being overly cautious, but this sounds like a recipe for data leaks with the low barrier to entry.

And if you want real life examples, every single LLM provider has gotten insane amounts of data shared to them, even if you have to approve.

reply
> * When an action requires approval, the agent does not need to stop and wait for it. A Gatekeeper will simulate the outcome, allowing the agent to keep running and queue up more work. You can then approve everything in a batch at the end. Hopefully, this means you no longer feel the need to turn on auto-approve! (But you still can if you want.)

Can you say more about how you simulate outcomes of approvals? For example, if I need an approval to be granted permission to read a document, how could it simulate the document contents?

reply
Reads do not require approval. Only writes do.

Reads are, however, limited to only the resources you have explicitly attached.

Moreover, since agents and gadgets run in a sandbox with essentially no access to the outside world except via approved channels (Gatekeepers), it's essentially not possible for the agent to leak secrets it has seen unless you approve a later write.

In fact, the system actually keeps track of everything the agent / gadget has observed to know if it is "tained", and can use that to flag later actions as dangerous, e.g. due to prompt injection or possible leaking of secrets. (This is still evolving, but all the groundwork is there.)

(Of course, this assumes you trust the LLM provider itself not to steal secrets from your prompts. Most LLM providers offer zero-data-retention options, but if you don't trust them you can also use a local LLM. We support ollama and will support others in time.)

reply
The key aspect here is "when an action requires approval". i.e. an action which writes. Presumably you are granting the read access when firing this process off in the first place.
reply
Interesting, so how does this work with regards to purposeful but naive changes? If, for example, we have a Notion integration, and a non-technical user can add a feature to it via prompt, would it be possible for them to accidentally add something that sends a bunch of internal-only proprietary data to Notion? Would this system prevent or flag that in some way?
reply
Gatekeepers can specify the sensitivity of their data. A Gatekeeper can actually flag an observation (a read operation) as being so sensitive that the agent should be prohibited from writing anywhere else after having seen that.

This is what allowed us to connect Cloudflare OS to our own sensitive internal data sources, containing things like customer data, revenue info, etc. Once you connect to one of those, the system enforces no data can be shared out of it.

That said, the policies are a bit blunt right now, maybe overly restrictive. We're going to be evolving it further.

reply
Thank you. The tweet values the readers time. The blog post. Dear lord. So much noise.

This was a great summation.

reply
>This doesn't work in the cloud Software-as-a-Service model, because you are not running your own copy of the app.

Let me introduce you to scrapling+MCP--the closest I've come.

Stealthed, controllable browser gives you an API to arbitrary web things

You can't modify it, but you can extend it which imo is the next best thing

adb (Android) is close albeit a bit more tedious. It's fun watching an LLM take screenshots, read them, then send input events back to the phone.

If you have a rooted Android, you _can_ modify the apps. Xposed, ReVanced, et al subject to Play Integrity's ever growing pervasiveness

reply
Oh, wow! This is a lot clearer to me. I've long had a soft spot in my heart about Sandstorm. Here's a comment[0] I made 11 years ago about what Sandstorm was, to me:

> I'm a web developer, but I can't really use my skills to provide an open source web app the way I'd like to. I'd like to build a small server-side budgeting app that people can use from their computers or phones to record expenses, but there's no way I can ask people to find a web host that lets them run rails, or set up a heroku account or whatever.

> So my only alternative would be to run the service myself, but then I'm storing other people's data, I have to worry about scaling if lots of people use it, and user accounts, and all this stuff.

> The idea of sandstorm is folks run this platform on their personal servers, and then it lets you browse an app store like interface and one-click install these server side apps. So I'd bundle up my budgeting rails app as a sandstorm package, and if someone wants to track their expenses from a variety of devices, they install the app. Now they're running it so the data is theirs, there's no scaling issues, and user authentication is provided by sandstorm.

It was a beautiful thing that tried to thread the needle between personal, self-hosted software and cloud-based "software as a service". I've long thought that "federated" software is the sweetspot, since it allows people to control software in more natural organizational units like families or communities, without being centrally controlled or devolving into the craziness that is "decentralized".

However, while the functionality of Cloudflare OS may be Sandstorm-inspired, I feel like it doesn't really have its soul. What a difference a decade makes! Here's another comment[1] from me 10 years ago about why I loved sandstorm, which begins:

> Oh no! I really believe sandstorm (or something like it) is what we need the future to be. Rather than having everything get sucked up into Google, Facebook, Apple, or these other few centralized services, imagine where everyone has a personal (or family, or church group or whatever) server, and they can one-click install their email apps, their document apps, etc.

These days Cloudflare has become one of the "Google, Facebook, Apple" that I mentioned. I'm still a fan of Cloudflare generally, and with kentonv behind this I absolutely have to try it out, but it doesn't have the open source, community-oriented charm that I think Sandstorm had.

edit: Oh, I didn't read far enough down the tweet chain:

> I am so proud to say, we are making this whole thing open source, Apache 2.0 license, no catch.

Hooray! Sandstorm's back on the menu, boys! This really does make me happy. I never should have doubted, ha.

[0] https://news.ycombinator.com/item?id=10237821

[1] https://news.ycombinator.com/item?id=13589471

reply
For what it's worth we (the community still working on Sandstorm) are also about to release an updated version of Sandstorm. But also as someone who definitely will still be running Sandstorm at home, some of the Cloudflare OS stuff is super exciting to me, and probably well beyond what we'll tackle with Sandstorm any time soon. What Kenton's doing with gatekeepers is insanely cool.
reply
deleted
reply
You should probably add a disclaimer you work at Cloudflare yourself?

> I liked Kenton's take on this: https://x.com/KentonVarda/status/2084990137180590572

https://archive.vn/wvgxq

reply
Damn, this is a pretty big deal!
reply
Can you explain why you think this is a big deal?

What particular feature/capability made you think this?

I do not disagree but i am curios. Lets have a discussion instead of just throwing feel good vibes around...

reply
Uh, no? I responded to a comment. That's the context. Dafuq?
reply
You are adding nothing to the diacussion.
reply
> What if, when you wanted a new feature in the software you are using, you could just prompt your agent to add it?

Yep, that's precisely the vision I formulated some months ago: https://manuel.kiessling.net/2025/11/04/what-if-software-shi...

reply
I don't get it

How is this different than the capabilities which cowork by claude / chat gpt desktop apps now a days give in terms of core capabilities.

The fact that you can maybe fetch bugs from jira and present in the way you want is true for any of the agentic orchestrators, so is it really the USP ?

One difference I found against other orchestrators was that they work on a per seat billing model. Example if you have 10 team members who want access to a shared agent infrastructure, you would end up paying 10 * 20$ = 200$ per month while in this case it is probably just the AI and infrastructure bill that you have to spend, which probably might cross 200 dollars as well.

reply