neogit¶
A Git-like tool for filesystems, backed by a Neo4j graph and pluggable object storage.
Neogit takes content-addressed Merkle-tree snapshots of a directory tree and stores them in two places:
- Neo4j — the graph: commits, branches, trees, blobs, and their relationships
- Object storage — the bytes: file contents addressed by their SHA-1 (local filesystem, MinIO, or S3 via Apache Libcloud)
This split makes filesystem state queryable as a graph while keeping file contents in cheap blob storage.
Where to start¶
This documentation follows the Divio framework — four kinds of docs, each serving a different need:
-
Learning by doing. Take your first filesystem snapshot in five minutes.
-
Recipes for specific tasks: switching storage backends, diffing commits, embedding neogit in your own Python code.
-
The dry facts: every CLI flag, every config key, every node type in the graph.
-
Background and design rationale: why Neo4j, how the Merkle tree is laid out, what trade-offs were made.
Where it's used¶
Neogit powers the storage layer of the OSWatcher ecosystem, where downstream projects build filetype detection, symbol extraction, and syscall-trace plugins on top of neogit's Commit / PluginRun graph.