DeltaDB
Keep the context behind every change
The version control system that records every edit with the conversation behind it.
Git keeps the commits. DeltaDB keeps everything in between.
Git records a snapshot each time you commit. DeltaDB records work as a stream of fine-grained deltas as it happens, alongside the conversation that produced it. Commits, branches, and remotes stay in Git, so you push and open pull requests as usual.
How DeltaDB works
DeltaDB records each change as it happens and keeps every copy in sync.
- 1
Every edit becomes a delta
DeltaDB records each edit, yours or an agent's, as a delta with a stable identity, its author, and the version it builds on. There's nothing to stage or commit.
- 2
The conversation shares the history
Messages, comments, and file tree changes are deltas too, so each message sits in the same history as the edit it produced.
- 3
Every copy stays in sync
Every Delta client holds a replica. Deltas sync as you type, and concurrent edits resolve the same way on every machine, in any order.
- 4
Files appear where you need them
Agents and browsers use the replicated files directly. On your machine, Delta mounts them into a checkout for your terminal, builds, and editor. The checkout is temporary, and the work stays in DeltaDB.
Read about Delta worktrees
What a continuous history makes possible
Rewind to any message
Revert a thread to an earlier message, and DeltaDB restores its files to match. You don't need a commit.
Share work before you commit it
Teammates can join while the agent is still working, read the conversation, and comment on changes before anyone commits.
Start new work without the bookkeeping
Each thread gets an isolated worktree, and you can fork one to try another approach. There are no directories or branches to clean up.
Know where each change came from
Each delta records whether a person or an agent made it. From the code, you can get back to the conversation behind it.
Under the hood
DeltaDB is built on CRDTs, loosely based on diamond-types and adapted to work with Git.
Each delta records what it was based on
A delta carries the text it inserts, the ranges it replaces, and the version it builds on: earlier deltas, or a Git blob for a file's starting text. Without a shared clock, order comes from the causal graph.
struct HistoryDeltaBatch {
id: DeltaBatchId,
parent: HistoryVersion,
payloads: Vec<HistoryDelta>,
}
struct DeltaId {
timestamp: u64,
actor_id: ActorId,
}Concurrent edits converge
Start with TIVITY. You insert REA at the start while I insert C at the same spot. Both machines break the tie by actor ID, so we both get REACTIVITY, whichever edit arrives first.
The fragment index
Each file is stored as text plus a B-tree recording which delta created each character. When an edit based on an older version arrives, DeltaDB looks up where that position is now.
Structural sharing
Versions are immutable trees. A new version adds only the nodes on the path to the change and shares the rest, so storage grows with the size of the edits instead of the number of edits squared.
Frequently asked questions
Does DeltaDB replace Git?
No. Your project still needs a Git remote, commits stay in Git, and you push and open pull requests as usual. DeltaDB records the work between commits.
What does DeltaDB record?
Messages, comments, file tree changes, and edits to files Git tracks or doesn't ignore. Ignored files, like build output and local .env files, stay on the machine that created them.
How do I use DeltaDB?
DeltaDB comes with Delta. Download the app, or open a shared thread in your browser.