Graft
Version control for SQLite-backed app state.
Graft adds Git-like history to the state behind SQLite-backed applications. It versions SQLite databases and app-owned files together, so a commit records one coherent state your app can open.
Git can store a .sqlite file, but it mostly treats that file as opaque bytes.
Graft makes SQLite databases first-class versioned objects: you can stage,
commit, diff rows, merge compatible changes, resolve structured conflicts, and
restore them as database state.
Use it when your app data directory looks like this:
app-data/ data.sqlite search.sqlite settings.json attachments/ note-42.png contract.pdfGraft keeps SQLite in charge of reads, writes, indexes, and transactions. It adds the repository layer around those files: stage, commit, branch, switch, diff rows, restore state, merge changes, and sync through remotes.
Start Here
Section titled “Start Here” What Is Graft The problem Graft solves and where it fits.
CLI Quickstart Create a repository, commit data, diff rows, and restore state.
SQLite Extension Use the optional Graft VFS as SQLite's live page-storage data plane.
App-State Walkthrough Track a database, files, branches, diffs, and a remote together.
Common Tasks
Section titled “Common Tasks” Track databases and files Understand path kinds, storage strategies, and staging.
Build an app UI Use JSON status, diff, conflict, and payload output.
Sync with remotes Push, fetch, pull, clone, and choose a remote backend.
Resolve merge conflicts Use row-aware auto-merge and structured conflict output.