Project Status
Graft is an experimental project. This documentation targets the v0.15.5 release and focuses on versioning SQLite databases and the files around them: consistent snapshots, row-aware diffs, merge support, restore, and remote sync.
Features that exist only on the development branch are not part of the v0.15.5 documentation unless a page labels them as unreleased.
Available Today
Section titled “Available Today”- CLI workflows for
init,clone,sql,status,audit,gc,ls-files,payload,config,add,rm,commit,log,show,diff,checkout,restore,export,reset,branch,switch,tag,merge,conflicts,resolve,remote,ls-remote,fetch,pull,push, andupgrade. - Repository-local state under
.graft/. - Multiple tracked SQLite database paths in one worktree.
- Text and binary file artifacts in the same commit tree as SQLite snapshots.
- External payload storage for binary files and configured paths.
- Row-level diff output for ordinary rowid tables and declared-primary-key
WITHOUT ROWIDtables, includingSTRICTand composite-key schemas. - Row-aware merge planning and per-row resolution for those supported SQLite changes.
- JSON output for app-facing status, diff, conflict, payload, config, and sync UIs.
- Long-lived Node.js repository sessions through the Node-API 8
@eidos.space/graftpackage. - Remotes using
fs://,s3://,s3_compatible://, andgraft+http(s)://. - An HTTP remote client for services that implement the Graft HTTP remote protocol.
Stability Boundaries
Section titled “Stability Boundaries”Treat repository-mode CLI commands, the @eidos.space/graft API, config keys,
and JSON output as the intended external surfaces. They may still change while
the project is experimental, but they are the surfaces this documentation is
organized around.
Treat these as implementation details:
- storage LSNs
- page and segment layout
- object serialization internals
- internal Rust module boundaries
The internals pages document those details for contributors and advanced debugging, not as product-level API guarantees.
Compatibility Notes
Section titled “Compatibility Notes”Graft works alongside ordinary SQLite tooling by using physical worktree files
and materializing committed snapshots back to those paths. After an external
tool commits a transaction, stage the physical path with graft add. The
staging snapshot includes committed WAL frames, so a manual checkpoint is not
required.
sqlite3 data.sqlite "INSERT INTO notes(body) VALUES ('hello');"graft add data.sqliteClose database connections before branch, checkout, restore, or reset operations that replace the file. Graft refuses to replace a database under an active writer.
Release Artifacts
Section titled “Release Artifacts”Prebuilt CLI archives are published with the
v0.15.5 GitHub release.
The resident Node.js SDK is independently versioned and published as
@eidos.space/graft.
The repository is an experimental fork of orbitinghail/graft. The upstream project is a transactional storage engine for lazy, partial data replication on object storage. This fork applies that foundation to version control for SQLite databases and app-owned files.