Minigraf embeds a graph database in an application rather than running a separate server. Facts about entities and their relationships live in a local .graph file; you query them with Datalog, a rule-based language suited to following links. Its two time axes distinguish when a fact was recorded from when it was true—useful for corrections to historical records, audit trails, or an agent’s changing picture of a project.

  • Start: Add minigraf = "2.0.2" to a Rust project’s dependencies (Rust 1.89+), then open a file with Minigraf::open("data.graph"). There is also a browser playground for exploring the query model. The crate is MIT or Apache-2.0 licensed; there is no hosted service to pay for.
  • What changed on September 27: v2.0.2 narrows point queries to the requested attribute, avoids reprocessing unchanged index leaves during checkpoints, and fixes a POSIX power-loss risk by syncing parent directories when database/WAL files are created or removed. These are the maintainer’s reported fixes, not independent benchmarks.
  • Important limit: In v2.x, writing multiple values of the same attribute for one entity in a single transaction can make one value disappear from query results. The maintained known-issues list says to write or retract each such value in a separate call; a format-changing fix is planned for v3. Check that list before trusting it with critical data.

The HN discussion raises the practical question of when this is worth another query language instead of a graph modeled in SQLite. The interesting distinction is built-in history across both clocks; the project’s own roadmap still treats production readiness and stronger integrity checks as work in progress. I have not run a workload against it.