Extension for Graphify

Make your knowledge graph time-aware — without any LLM cost

Enrich a Graphify knowledge graph with temporal metadata from filesystem timestamps. Adds file_mtime, file_birthtime, dir_mtime to nodes and deterministic preceded_by edges — pure filesystem, zero API calls.

What timestamps can you see?

Three distinct timestamps — one filesystem

graphify-temporal resolves three independent timestamps from the filesystem. They are often different, giving you a timeline: createdarrived in this directorylast modified.

file_birthtimeTrue creation
preceded_by
dir_mtimeArrival proxy
preceded_by
file_mtimeLast modified

file_mtime

default

Last content modification time. The default timestamp applied to every node with a source_file. Can optionally use --use-ctime for inode metadata change (Unix) or creation time (Windows), or --use-birthtime for true creation time.

dir_mtime

--include-dir-mtime

Parent directory modification time. The best proxy for "when did this file arrive here?" — set with a single flag.

file_birthtime

--use-birthtime

True creation time — when the file was born on disk. Supported on Linux kernel ≥ 4.11 (ext4/btrfs/xfs via statx), macOS ≥ 10.4, and Windows natively. When unavailable, falls back to None — never a crash.

$ graphify-temporal enrich

Enrichment is idempotent — run it anytime

After every graphify build, run graphify-temporal enrich. It reads the graph, stats the filesystem, adds timestamps and edges, then regenerates output. Re-run with different flags anytime — timestamps update in-place and edges are deduplicated.

graphify-temporal v1.0.0
Files analyzed:1,220
Nodes enriched:14,173 (85%)
Files not found:12
Edges added:12,946
  intra-file:12,911
  cross-file:35
html: wiki:

$ pip install

One command to install

Requires Python ≥ 3.10 and an existing graphify-out/graph.json (run graphify . first).

terminal
$ pip install git+https://github.com/todotge/graphify-temporal.git
terminal
$ git clone https://github.com/todotge/graphify-temporal.git
$ cd graphify-temporal
$ pip install .

If graphify-temporal is not found after install, use python -m graphify_temporal instead — the binary lives in your venv's bin/ directory.

$ graphify-temporal enrich

Usage — the enrich subcommand

A separate CLI from graphify. The enrichment subcommand is graphify-temporal enrich, not graphify enrich. After every /graphify build, run graphify-temporal enrich — the graph is not complete without temporal stamps.

terminal
# Basic: add file_mtime to all nodes + intra-file preceded_by edges
$ graphify-temporal enrich

# Cross-file temporal edges + filter by date
$ graphify-temporal enrich --cross-file --since 2026-05-01

# Use true creation time (birthtime) instead of modification time
$ graphify-temporal enrich --use-birthtime

# Full timeline: birthtime as primary + directory arrival time
$ graphify-temporal enrich --use-birthtime --include-dir-mtime

# All flags combined: birthtime + dir arrival + cross-file edges
$ graphify-temporal enrich --use-birthtime --include-dir-mtime --cross-file

# Preview on a subdirectory without modifying
$ graphify-temporal enrich --include "your/archive/**" --dry-run

Switching timestamp modes: Enrichment is idempotent — re-run with different flags anytime. It updates file_mtime in-place and deduplicates edges, so you never get double edges or corrupted data. No need to rebuild the graph.

Options reference

Every flag, one table

FlagDescription
PATHProject root (default .)
--use-ctimeUse st_ctime instead of st_mtime (metadata-change on Unix, creation on Windows)
--use-birthtimeUse st_birthtime (true creation time). Mutually exclusive with --use-ctime
--include-dir-mtimeAlso add dir_mtime (parent directory mtime) to nodes — arrival proxy
--cross-fileCreate preceded_by edges across different files
--dry-runShow stats without modifying graph.json
--since DATEOnly process files modified after DATE (YYYY-MM-DD)
--include GLOBOnly process files matching glob (repeatable)
--exclude GLOBExclude files matching glob (repeatable)
--no-regenerateSkip regenerating HTML/wiki
--quiet, -qMinimal output

$ graphify-temporal query & timeline

Filter and explore by time

Once enriched, query nodes by name, filter by date range, and walk chronological preceded_by chains. All time filters require explicit dates (YYYY-MM-DD).

terminal
# Find nodes by name (one per file)
$ graphify-temporal query "auth"

# Filter by date range
$ graphify-temporal query "auth" --since 2026-05-01 --before 2026-06-01 --order newest-first

# Walk the preceded_by chain
$ graphify-temporal timeline

# See temporal coverage stats
$ graphify-temporal stats

Team setup

Auto-detects your AI coding assistant

graphify-temporal install detects which AI client you're using and injects instructions so your agent knows how to run temporal enrichment automatically. graphify-temporal uninstall removes them cleanly.

Claude CodeCLAUDE.md
OpenCodeAGENTS.md + plugin
CodexAGENTS.md
Gemini CLIGEMINI.md
Cursor.cursor/rules/
CodeBuddyCODEBUDDY.md
Copilotinstructions.md
Windsurf.windsurf/rules/
AiderAGENTS.md
Kilo CodeAGENTS.md
TraeAGENTS.md