Graphify answered from its map in 1,207 bytes. The source it mapped was 237.
We ran graphify 0.9.89 in code-only mode with no keys. On a 3-file fixture the map answer was 1,207 bytes against 237 bytes of source, and upstream CI passed 7,910 tests.
By David Discua
Measured in the lab
- 1207 B
- map answer
- 237 B
- fixture source
- 10
- lab tests passed
- 7910
- upstream tests passed
- extract: 3 code, 0 docs, 8 nodes, 10 edges, 4 communities
- path: UserService uses DatabasePool in 1 hop
- query edge points at pkg/auth.py:L5
- upstream pytest: 7910 passed, 14 skipped
From reports/gate.json · run on October 14, 2026. graphifyy 0.9.89 at e8eb76e7; code-only tree-sitter, no LLM; byte counts, not billed tokens; upstream suite in CI run 38521257850
How it is wired
01/03Graphify parses your code locally with tree-sitter.
Graphify turns a codebase into a local knowledge graph that an agent can query before it opens files. We pinned graphifyy==0.9.89, built a code-only map with no LLM and no keys, and measured how many bytes the map's answer took compared with the source it described. On our three-file fixture the answer was 1,207 bytes and the source was 237, so on a repo this small the map costs more than reading the code.
The catch
A map pays for itself only when the repo is bigger than the answer. Our fixture is a tiny UserService to DatabasePool package, and mapfirst measure reported 1,207 map bytes against 237 source bytes. We count bytes and make no claim about billed tokens.
The README has a larger demo on vercel-labs/skills at a fixed commit. The graph had 669 nodes, 1,921 edges and 14 communities. A query about how add installs a skill returned 6,600 bytes, while the 37 non-test .ts files total 528,138 bytes. That answer was truncated at graphify's default budget of about 2,000 tokens (95 of 513 nodes), so it shows size and says nothing about completeness. The demo is not part of the gate.
Graphify logs queries to ~/.cache/graphify-queries.log unless you set GRAPHIFY_QUERY_LOG_DISABLE=1, which the lab does. And graphify install --project --platform cursor at 0.9.89 writes .cursor/rules/graphify.mdc, a duplicate of the rule Cursor already reads from .claude/skills/, so the lab test fails if that file shows up. In the CI run recorded in the README, upstream's bandit and pip-audit steps exited 1. Upstream's own workflow marks both continue-on-error, and our copy of the script keeps that.
What we ran (keyless)
export GRAPHIFY_QUERY_LOG_DISABLE=1 DO_NOT_TRACK=1 DISABLE_TELEMETRY=1
uv sync --frozen
uv run --frozen ruff check .
uv run --frozen pytest -q
cd tests/fixtures
uv run mapfirst measure . --question "what does UserService use" --code-only
bash scripts/upstream-graphify.sh # heavy; CI job upstream
From reports/gate.json, run on October 14, 2026:
| Check | Result |
|---|---|
Extract (--code-only) | 3 code, 0 docs, 8 nodes, 10 edges, 4 communities |
| Path | UserService --uses [INFERRED]--> DatabasePool (1 hop) |
| Query edge | DatabasePool at=pkg/auth.py:L5 |
| Map answer | 1,207 bytes |
| Fixture source | 237 bytes |
| Lab pytest | 10 passed, 0 failed (35.08 s) |
| Upstream pytest (CI) | 7910 passed, 14 skipped in 288.24 s |
All three CI jobs (lab, upstream, security) finished with success on lab commit 476c9e3.
How it is wired
Graphify parses code with tree-sitter on your machine and writes graphify-out/graph.json. The agent then calls graphify query or graphify path and reads edges with file and line references instead of opening every file. graphify install --project --platform claude writes a project skill, CLAUDE.md and a PreToolUse hook in .claude/settings.json, and nothing under your global ~/.claude/. The lab adds its own skill, map-before-deciding.
Minilab (open source)
Upstream is graphify-labs/graphify: 126,532 stars, Apache-2.0, Python, as of October 14, 2026. Point uv run mapfirst measure at your own repo with a real question and compare map_answer_bytes with source_bytes before you decide the map is worth it.
Run it yourself
SkilledDragonCorp/minilab-graphify-map-first
Clone, install and run the report with no API keys. The numbers above are what that run writes.
uv sync --frozen && uv run --frozen pytest -qSkilledDragon is not affiliated with Graphify Labs or the graphify project. Numbers are from our own keyless lab run; re-run the report before relying on them. Marks belong to their owners.
All labs