2026-05-29
DBOS recently argued that Postgres is all you need for durable execution: if you already trust your database, you do not need a separate orchestration tier. I agree with the direction, and I think the idea can be pushed further.
For a large class of durable systems, SQLite is all you need.
Durable execution is often discussed as if it requires durable infrastructure. In many cases it does not. The durable part is the workflow state. The compute can stay cheap and disposable.
That is a natural fit for Obelisk: workflow progress lives in an execution log, workflows replay from persisted history, and activities can be retried. What matters most is keeping the workflow state around and easy to inspect.
SQLite is appealing because it gives you transactional durable state without introducing a separate database service. There is no network hop, no extra control plane, and no new operational surface area just to keep workflow progress safe. For many systems, a local database file is exactly the right level of machinery.
The obvious concern is what to do with those SQLite files once experiments start to accumulate. That is where Litestream helps. It can stream SQLite changes asynchronously to S3-compatible object storage. That gives you a simple way to keep working state close to the runtime while still copying databases out for backup, migration, and inspection.
The caveat is that Litestream replication is asynchronous. A restore can miss the newest local writes if the SQLite volume disappears before they are copied. That is fine for many AI and experimentation workflows, but it is not the same thing as a highly available shared database.
That still leads to a useful operating model: run an Obelisk server with a SQLite database, back it up with Litestream, and let an observer pull interesting databases when needed. The same file can be used for local replay, debugging, and understanding what an agent actually did.
This is especially attractive for AI agents and AI-generated workflows. Those systems are often bursty, experimental, and easier to reason about when each agent or tenant has a small self-contained unit of state. A fleet of tiny servers in micro VMs or containers, each with its own SQLite database and object storage backup, is often a better fit than one large always-on shared system. It is simpler, cheaper, and gives better fault isolation.
SQLite is not the answer to every deployment shape. Obelisk also supports Postgres, and that is the right choice when you need higher availability, broader shared scalability, or other deployment properties that are better served by a network database. It is also the better fit when asynchronous replication to object storage is not the durability model you want.
Many workflow systems do not need that on day one and should not start with more infrastructure than their state actually demands.
In a large set of cases, a local SQLite database plus Litestream backup to S3 is enough. Add cheap workers around it and you get a durable system with very little infrastructure. For the world of AI agents, that may be the most sensible default.