Skip to content

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.pdf

Graft 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.