Manifesto
Content Is a Living System
On the death of the content lake, the rise of the content runtime, and why AI must propose, not publish.
There is a quiet assumption underneath every modern CMS, and it is wrong. The assumption is that content sits still.
We built systems to manage content the way we built systems to manage warehouse inventory: rows on shelves, edited on schedules, shipped in releases. Then the world changed three times at once. Edge compute became table stakes. Real-time collaboration became table stakes. And then language models walked through the door and started asking — politely at first, then less so — to write.
None of the CMSes we have were designed for this moment. Not one. They are all very good at being what they are. They are also all wrong about what content has become.
This is a piece about why, and about what comes next.
The Content Lake
The dominant architecture of the last decade has a name, even if it has never been given one. I call it the content lake.
A content lake is a database with a writing app stapled to it. Underneath: Postgres, or a document store, or sometimes both. On top: a polished editor, a media library, a permissions matrix. Around the side: webhooks so the rest of your stack can find out something has changed. In front: a CDN so readers don't have to wait for the database to wake up.
Sanity built one. Contentful built one. Strapi built one. Storyblok, Hygraph, Payload — all variations on the same theme. They are good lakes. Some are excellent lakes. None of them are anything else.
This worked. For a long time, this worked beautifully. It worked because content was rare, slow, and human. You published once a week. The writers were people you knew by name. AI was a spell-check button. The lake's job was to keep things organized and serve them when asked, and it did.
That world is gone. Look at what we are now asking the lake to do.
Open the same document in two tabs in any major CMS. Watch what happens. It is 1998 in there. Last write wins. Your colleague's paragraph evaporates without ceremony. We have had collaborative editing as a solved problem in computer science for fifteen years and the lakes have not absorbed it, because doing so would require rewriting how documents are stored from the bottom up. So they don't.
Publishing is save-and-pray. The editor on the left, the preview on the right, the button that says Publish. You press it and the world sees it. There are no diffs. There is no review of the content as content. There is no way to say this version should go live at 3pm Tuesday and this other version is what we'll roll back to. We do this for content. We would never do this for code, and code is less public.
And then there is AI. When an agent wants to update a product description — to translate it, to optimize it, to refresh a stale FAQ — where does it write? Directly to the live document. Who reviewed it? No one. Who knows it happened? Whoever reads the audit log, if there is one. The lake has no notion of authority, only of access. If the model has credentials, the model is a writer with the same standing as the editor-in-chief. This is, somehow, considered fine.
The lake is passive. Water sits in it. Things rot at the bottom. And we keep building bigger lakes, with better dashboards and more integrations, hoping that volume will produce a quality it does not contain.
What we need is not a better lake. It is not a lake at all.
The Content Runtime
In computing, a runtime is something that is, by definition, running. A database stores. A runtime executes. The distinction is the difference between a library on a shelf and a city in motion.
A content runtime treats content the way modern systems treat any live state: as something concurrent, distributed, and continuously evolving. Three properties make it different in kind, not just degree, from what came before.
Concurrency is the substrate. Every change in a content runtime is a CRDT operation — a conflict-free replicated data type, a mathematical structure with the property that two people editing the same paragraph at the same time produce a single, deterministic outcome. No last-write-wins. No "your changes were not saved." Just convergence. This is not new research. Yjs and Automerge have shipped this for years. Ink & Switch's Upwelling work showed how to push it further, into the long-form editing experience itself. The lakes have not picked it up because their data models cannot hold it. A runtime starts there.
Branching is native. Content forks like code. Drafts are not "unpublished documents" sitting in a status column. They are branches. The November issue of a magazine is a branch. An experimental rewrite is a branch. The Spanish translation is a branch. So is the version your AI assistant is working on. And they merge — properly, with three-way conflict resolution, with diffs you can read, with the option to accept or reject individual changes. The magazine editors who first heard us describe this said the same sentence back to us: so an issue is a branch. Yes. That is exactly what an issue has always wanted to be. The tools just refused to admit it.
Distribution is the model, not the layer. The runtime lives at the edge, not behind it. Documents are durable objects sitting in three hundred cities, replicating their state across the network as it changes. Reads are local because the data is local. Writes propagate as state transitions, not as cache invalidations chasing a central origin. The edge is not where the CMS terminates. The edge is where the CMS lives.
A content runtime is not a database with better networking. It is a different physics. Content is no longer a thing you store and then push around. It is a thing that lives in many places at once, changes continuously, and reconciles deterministically.
This is the category that has been missing. Storage was solved. Delivery was solved. What was never solved is the connective tissue between them — the live, governed, branching, mergeable state of a publication as it actually exists in the world. That is the runtime.
AI Proposes. Humans Merge.
All of this would be interesting on its own. There is a reason it matters now, and the reason is not the edge.
Language models are about to write most of the world's content. Not all of it — but most. The product descriptions. The localized variants. The meta tags. The FAQ entries. The summaries, the legal disclosures, the alt text, the changelog entries. The work humans were never good at doing at scale is the work models are good at, and there is no version of the next ten years in which they don't do it.
The question every CMS has refused to answer is this: what is the authority of a model?
The current answer, almost everywhere, is: whatever it wants. Hand the agent an API key. Let it write. The model produces a sentence, the document is updated, the page is regenerated, the world sees it. Nobody approved anything. Nobody knows what changed unless they go looking. The audit log, if there is one, is a forensic tool, not a control surface.
This produces a specific and predictable failure mode. Brand voice drifts because nobody is watching the small edits. Hallucinations get published as fact and are discovered three weeks later by a customer. Translations introduce errors that nobody on staff can read. Regulatory copy mutates under your nose. The cumulative effect is a kind of slow corruption — the content is still there, still well-formatted, still well-delivered, but nobody at the company can quite say what is in it, or who put it there, or whether it is still true.
There is a better model, and we already use it. We use it for code. We call it pull requests.
In a properly run engineering organization, no one pushes directly to main. You open a branch. You make your changes. You write a description of what you did and why. Someone with judgment reads it, asks questions, accepts or rejects. The repository's history is therefore the history of decisions, not just changes.
Apply this to content and the architecture clarifies. An agent proposes. It opens a branch. It writes its changes there. It explains what it did, why, and what it is uncertain about. A human reads. A human merges, or doesn't. The act of publication remains a human act. The act of generation does not have to be.
Generated is not the same as published. This is the line that AI-native publishing must hold, and it is the line almost no current tool is structurally capable of holding, because their data models do not have branches and their permissions models do not distinguish between "can write" and "can publish."
This is not friction. This is the only architecture in which editorial trust survives contact with autonomous writers. Every other arrangement is a slow leak — of accuracy, of voice, of the readers' belief that what they are reading was meant by someone. The companies that get this right will be the ones whose content readers still trust in 2030. The companies that don't will discover that they can no longer tell their own writing apart from anyone else's, and neither can their audience.
What We Are Building
This is the architecture we are building under the name EOXScriptum. A content runtime for the edge. CRDT-native, branching, multi-tenant, with AI as a first-class contributor whose contributions are governed by the same review discipline that engineering teams have relied on for twenty years.
We did not invent any of these primitives. CRDTs come from decades of distributed systems research. Branching came from Git, and the conceptual leap of treating documents that way came from Ink & Switch. The edge belongs to Cloudflare and a handful of others rebuilding the substrate underneath the web. The philosophy of human-gated AI is borrowed wholesale from every serious engineering team that has ever required a code review before a deploy.
What we did was assemble these primitives into something content has never had: a runtime. Not a lake. Not a warehouse. Something alive.
Content is a living system. The tools we have were built for content that wasn't. It is time we built tools that are.
The first version is shipping in phases through the rest of this year. The multiplayer engine is done. Semantic memory is next. Branching and governance follow. We are not in a hurry to be everywhere. We are in a hurry to be right.
If the case for the lake still feels intact to you, I understand. It worked. It produced real businesses and real publications and real value, and most of the web you read today sits on top of one. We owe those systems some respect. We also owe the next decade an honest answer to the question of what we are going to do with autonomous writers, real-time collaborators, and a network that no longer has a center.
Our answer is on scriptum.ink.