Know what your agent actually did.

flightrec is a Rust daemon that snapshots your filesystem, diffs every change, and writes the record your agents will not. Git-like observability for AI agents — no SDK, no instrumentation, no cloud.

cargo install flightrec COPIED
View on GitHub
flightrec watch output showing filesystem changes as they happen
FIG. 00 — flightrec watching its own repository
01 Ground Truth

Your agent ran.
Do you know what it changed.

You give an agent access to your filesystem, your configuration, your codebase. It runs. It does things. Then it reports back in natural language, optimistically, from its own perspective.

That is not observability. Agents optimize for completion, not for accuracy in their self-reports. The log is a narrative, not a record.

flightrec sits outside the agent. It watches at the filesystem layer — the only layer that cannot lie — and builds a timestamped, content-addressable, diffable record of what actually happened.

Agents narrate their intent. Not their actions. There’s a difference.

The filesystem does not lie.

02 Snapshot → Diff → Narrate
Step 01 Snapshot
SNAPSHOT 2a4f8c1b
objects/
  2a/
    4f8c1b...  src/main.rs
    sha256:2a4f8c1b9d
  7e/
    3d1a0c...  Cargo.toml
    sha256:7e3d1a0c42
  b5/
    92ef4a...  src/config.rs
    sha256:b592ef4a81

manifest.json
  roots: ["./"]
  files: 18
  ts: 1749800100
flightrec watch --once
Step 02 Diff
{ "snapshot_a": "a1b2c3d4", "snapshot_b": "2a4f8c1b", "changes": [ { "change_type": "added", "path": "src/blobstore.rs" }, { "change_type": "modified", "path": "src/lib.rs" }, { "change_type": "removed", "path": "SPEC.md" } ] }
flightrec diff <snap-a> <snap-b>
Step 03 Narrate
Report — diff 2a4f8c1b
Added blobstore module with
content-addressable storage.
Modified lib.rs to export the
new blobstore public API.
Removed SPEC.md (superseded
by docs/architecture.md).

Net: 3 files changed.
  +1 added   src/blobstore.rs
  ~1 modified src/lib.rs
  -1 removed  SPEC.md
flightrec report <diff-id>
03 Install
cargo
cargo install flightrec COPIED
homebrew
brew install zakelfassi/tap/flightrec COPIED
binaries
GitHub Releases — linux amd64/arm64, macOS amd64/arm64
04 Configure

One file. No magic.

Run flightrec init to write a starter config to ~/.flightrec/config.toml. The FLIGHTREC_HOME environment variable overrides both the config location and storage root — useful for hermetic test runs or multiple isolated recording environments.

Every key has a safe default. Point it at a directory, run flightrec watch, and you have a record.

Full config reference →
# ~/.flightrec/config.toml
# generated by: flightrec init

[watch]
roots = ["~/projects/my-app"]   # watch roots

[filter]
include = ["**/*.rs", "**/*.toml", "**/*.md"]
exclude = ["**/.git/**", "**/target/**"]

[daemon]
interval_seconds = 60        # polling interval

[llm]
enabled   = true
provider  = "anthropic"       # anthropic | openai | ollama
model     = "claude-haiku-4-5"

[output]
json_log_dir = "~/.flightrec/logs"
FIG. 04 — annotated config.toml
05 Deployed Where
Coding agents
The diff before the commit.

Run flightrec alongside any coding agent — Claude, Codex, or any local model. The snapshot-to-snapshot diff is a ground-truth record of every file the agent touched, independent of its git operations or self-reported summary.

Agent fleets & ops
Audit trail for autonomous pipelines.

Multi-agent systems that operate on shared filesystems, configuration directories, or model artifact stores need external audit capability. flightrec records who changed what, when, across any number of concurrent agent sessions.

Anywhere a filesystem exists
No agent SDK required.

Robots writing calibration configs. CI pipelines generating build artifacts. Edge devices updating local state. If a process touches a filesystem, flightrec can observe it without any instrumentation on the process side.