Graphify
v0.9.53 open-sourceTurn any codebase, with its docs, SQL schemas, configs, and PDFs, into a queryable knowledge graph. A /graphify skill for Claude Code, Cursor, Codex, and Gemini CLI: local deterministic AST parsing, every edge explained, no vector store.
graphify extract --force --code-only uv tool install 'graphifyy[robot]' pip install graphifyy[postgres] graphify extract --code-only --force graphify extract --no-dedup . GRAPHIFY_MAX_CONTEXTS=4 graphify-mcp
Summary
Graphify is an open-source AI coding agent that builds knowledge graphs from code understanding and AST analysis. It is free under the MIT license and runs as a command-line tool, positioning it for application developers and platform engineers. The material does not mention any comparable tools, so it sits in the space of code-understanding tools. Given its history, the project has seen 40 releases in the tracked window and had its last release this week.
Turn any codebase, with its docs, SQL schemas, configs, and PDFs, into a queryable knowledge graph. A /graphify skill for Claude Code, Cursor, Codex, and Gemini CLI: local deterministic AST parsing, every edge explained, no vector store.
What Graphify answers
What programming languages does Graphify process?
It analyzes code using AST, allowing it to process multiple languages.
How is the knowledge graph built?
It builds the graph by analyzing code and its Abstract Syntax Tree structure.
Where does Graphify execute?
It functions as a command-line tool.
What is the scope of Graphify's analysis?
It constructs knowledge graphs from code understanding and AST analysis.
Can I adapt my existing workflows to use Graphify?
It operates as a command-line tool, integrating it into development workflows.
What is the underlying structure for its analysis?
The process is based on code understanding and AST analysis.
Examples
Command line
No option matches that search.
| option | found in | since | description |
|---|
No option matches that search.
Values are placeholders taken from each option’s declared default. Nothing is executed here — the output shown is a recording of a run that already happened.
Release history
- docs update
Graphify v0.9.53 adds Robot Framework extraction support for .robot and .resource files
└──▷ TRY ITForce a full code rescan to pick up changed imports or aliases without discarding existing document/semantic data.$ graphify extract --force --code-only
- ›Adds Robot Framework extraction via the optional
[robot]extra, parsing.robotand.resourcefiles into suites, test cases, user keywords, keyword-call edges, and resource/library imports with case/space/underscore-insensitive keyword resolution. - ›The
graphify extract --force --code-onlyflag now fully rescans all code files (instead of skipping unchanged files and keeping stale import/alias resolution) while preserving the existing document/semantic tier.
- ›Adds Robot Framework extraction via the optional
- v0.9.53
Graphify v0.9.53 adds Robot Framework extraction via the optional
[robot]extra, mapping suites, test cases, and keyword graphs.└──▷ GET THIS VERSION$ git clone --branch v0.9.53 https://github.com/Graphify-Labs/graphify.git # already have the repo? check out this version: $ git checkout v0.9.53
└──▷ TRY ITInstall Graphify with Robot Framework support to start mapping.robotand.resourcefiles into your knowledge graph.$ uv tool install 'graphifyy[robot]'- ›Adds extraction of Robot Framework
.robotand.resourcefiles via the optional[robot]extra — captures suites, test cases, user keywords, keyword-call edges, and resource/library imports with case/space/underscore-insensitive keyword resolution.
- ›Adds extraction of Robot Framework
- docs update
C# and TypeScript enum members now emit graph nodes with
case_ofedges, matching existing Java/Kotlin/Swift enum handling.└──▷ TRY ITInstall Graphify with the postgres extra to get the SQL introspection grammar and actionable errors on grammar mismatches.$ pip install graphifyy[postgres]- ›C# and TypeScript enum members now each emit a graph node with a
case_ofedge to their parent enum, covering explicit and implicit values,const enum, and quoted TypeScript member names — consistent with existing Java/Kotlin/Swift enum handling. - ›Installing
graphifyy[postgres]now includes thetree-sitter-sqlgrammar required by the SQL introspection path, and a missing or ABI-incompatible grammar raises an actionable error instead of silently returning zero nodes. - ›Multi-repo community detection now offsets each input's community ids so community 0 of one repo no longer fuses with community 0 of another; the original id is preserved in the
local_communityfield. - ›Performance: ignore-pattern evaluation in pattern-heavy monorepos is dramatically faster — relative paths are now computed lexically, each pattern is parsed once into a bounded process cache, and per-entry work is memoized; ignore decisions are unchanged.
- ›C# and TypeScript enum members now each emit a graph node with a
- v0.9.50
Graphify v0.9.50 adds graph nodes for C# and TypeScript enum members with
case_ofedges to their parent enum.└──▷ GET THIS VERSION$ git clone --branch v0.9.50 https://github.com/Graphify-Labs/graphify.git # already have the repo? check out this version: $ git checkout v0.9.50
- ›C# and TypeScript enum members now each emit a graph node with a
case_ofedge to their enum, matching existing Java/Kotlin/Swift enum handling; supports explicit and implicit values,const enum, and quoted TypeScript member names.
- ›C# and TypeScript enum members now each emit a graph node with a
- docs update
Graphify v0.9.49 adds cross-repo type linking, C# property/constructor/interface-dispatch nodes, and safer
--code-only --forceextraction.└──▷ TRY ITRe-extract code changes in an existing graph without losing the document/paper/image semantic layer that was built previously.$ graphify extract --code-only --force
- ›Running
graphify extract --code-only --forceover an existing graph now preserves the document/paper/image semantic layer instead of dropping it; files deleted from disk are still pruned. - ›
graphify merge-graphsnow links a type declaration shared across two repos — matched by fully-qualified namespace and name — with asame_type_asedge, making shared contract types navigable across repo boundaries. - ›C# object-creation expressions (new Foo()) now emit an edge to the constructed type, making constructor usage visible in the graph; built-in and out-of-corpus types are not fabricated.
- ›C# interfaces with exactly one implementing class now have their methods linked to that implementation with a
dispatches_toedge, so calls through injected dependencies reach the concrete implementation. - ›C# properties now emit a member node per property, making properties visible as class members alongside fields and methods.
- ›Running
- v0.9.49
Graphify v0.9.49 adds cross-repo type linking, C# constructor/interface dispatch edges, and C# property member nodes
└──▷ GET THIS VERSION$ git clone --branch v0.9.49 https://github.com/Graphify-Labs/graphify.git # already have the repo? check out this version: $ git checkout v0.9.49
- ›Adds
same_type_asedge ingraphify merge-graphsto link types that share a fully-qualified namespace and name across different repos, making shared contract types navigable across repo boundaries without linking unrelated same-short-name types. - ›Adds
dispatches_toedge from a C# interface method to its sole implementing class, so a call through an injected dependency traces to the implementation; guarded to single implementer, single case-sensitively same-named method, both ends C#. - ›Adds
callsedge for C# object-creation expressions (new Foo()), making constructor usage visible in the graph; qualified constructions resolve against declared namespaces without fabricating built-in or out-of-corpus types. - ›Emits a member node per C# property, making properties visible in the graph alongside fields and methods; the property's type still emits its
referencesedge and no built-in types are fabricated.
- ›Adds
- v0.9.48
Graphify v0.9.48 adds
graphify extract --no-dedupto skip fuzzy near-duplicate merging during builds and incremental runs.└──▷ GET THIS VERSION$ git clone --branch v0.9.48 https://github.com/Graphify-Labs/graphify.git # already have the repo? check out this version: $ git checkout v0.9.48
└──▷ TRY ITPreserve symbolically distinct nodes that fuzzy-matching would otherwise collapse — useful when distinct but similarly-named symbols (e.g. overloads or homonymous types across modules) must stay separate in the graph.$ graphify extract --no-dedup .
- ›Adds
graphify extract --no-dedupflag to skip fuzzy near-duplicate node merging on build and incremental merge, while preserving exact-id uniqueness and loudly refusing surprising node drops via a shrink guard.
- ›Adds
- v0.9.47
Graphify v0.9.47 adds graph modeling of JavaScript/TypeScript factory-function API objects with callable members.
└──▷ GET THIS VERSION$ git clone --branch v0.9.47 https://github.com/Graphify-Labs/graphify.git # already have the repo? check out this version: $ git checkout v0.9.47
- ›JavaScript/TypeScript factory functions that assign callable members to a local object literal (
const api = {}; api.foo = fn) now keep those members in the graph — the API object is modeled beneath its factory and assigned functions attach as methods, including arrow-function assignments and their intra-factory call edges.
- ›JavaScript/TypeScript factory functions that assign callable members to a local object literal (
- v0.9.46
Graphify v0.9.46 adds Markdown node-kind filtering with frontmatter attributes and Common Lisp extraction via tree-sitter.
└──▷ GET THIS VERSION$ git clone --branch v0.9.46 https://github.com/Graphify-Labs/graphify.git # already have the repo? check out this version: $ git checkout v0.9.46
- ›Markdown nodes now carry a
node_kindattribute (pagevsheading) so a docs corpus can be filtered by kind, and leading YAML frontmatter is parsed onto the page node as bounded, sanitized attributes. - ›Adds Common Lisp extraction for
.lisp,.cl,.lsp, and.asdfiles via tree-sitter-commonlisp (optional[commonlisp]extra), covering packages, classes, functions, methods, generics, macros, variable definers, same-file calls, and cross-fileopened/:used package resolution.
- ›Markdown nodes now carry a
- v0.9.44
graphify v0.9.44:
hook installreads.graphifyrcviz_node_limit and shares it project-wide via version control└──▷ GET THIS VERSION$ git clone --branch v0.9.44 https://github.com/Graphify-Labs/graphify.git # already have the repo? check out this version: $ git checkout v0.9.44
- ›Adds
viz_node_limit=<int>key to.graphifyrc—graphify hook installreads it and bakes the value into generated git hooks as a${GRAPHIFY_VIZ_NODE_LIMIT:-<n>}default, so a per-run env var still overrides the committed limit. - ›
graphify hook statusnow reports the bakedviz_node_limitfrom.graphifyrcand degrades gracefully on a malformed.graphifyrc.
- ›Adds
- v0.9.43
Graphify v0.9.43 adds OCaml support via tree-sitter-ocaml, extracting modules, types, functions, and cross-file call resolution.
└──▷ GET THIS VERSION$ git clone --branch v0.9.43 https://github.com/Graphify-Labs/graphify.git # already have the repo? check out this version: $ git checkout v0.9.43
- ›Adds OCaml language support (
.ml/.mli) via the optional[ocaml]extra, extracting modules, top-level and module-level values/functions, types and variant constructors,openimports, and function calls — including qualified calls likeGeo.arearesolved to the real definition across files.
- ›Adds OCaml language support (
- v0.9.33
Adds
--allow-partialflag tographify extractand surfaces_callablemarkers ingraph.jsonfor reliable incremental rebuilds.└──▷ GET THIS VERSION$ git clone --branch v0.9.33 https://github.com/Graphify-Labs/graphify.git # already have the repo? check out this version: $ git checkout v0.9.33
- ›Adds
--allow-partialflag tographify extractto opt into a best-effort partial graph instead of exiting non-zero when a whole-pass AST failure occurs on a fresh build. - ›
graphify installnow prints a one-time pointer to the hosted platform after the setup summary.
└──▷ BREAKING ON UPGRADE- !
graphify extractnow exits non-zero instead of writing a zero-node graph when a whole-pass AST failure occurs on a fresh build — use--allow-partialto restore the previous best-effort behavior.
- ›Adds
- v0.9.30
Graphify v0.9.30 adds
GRAPHIFY_MAX_CONTEXTSLRU cap for MCP graph cache and wiresGRAPHIFY_API_TIMEOUT/GRAPHIFY_MAX_RETRIESto the Bedrock backend.└──▷ GET THIS VERSION$ git clone --branch v0.9.30 https://github.com/Graphify-Labs/graphify.git # already have the repo? check out this version: $ git checkout v0.9.30
└──▷ TRY ITCap the MCP server's in-memory graph cache to avoid unbounded growth in a workspace with many projects.$ GRAPHIFY_MAX_CONTEXTS=4 graphify-mcpSet aggressive timeout and retry limits for the Bedrock backend so long reasoning traces do not hang indefinitely.📍GRAPHIFY_API_TIMEOUT=30GRAPHIFY_MAX_RETRIES=3graphify .- ›The MCP server's multi-project graph-context cache is now bounded via
GRAPHIFY_MAX_CONTEXTS(LRU eviction, default 8) instead of growing unbounded. - ›The Bedrock backend now honors
GRAPHIFY_API_TIMEOUTandGRAPHIFY_MAX_RETRIESenvironment variables instead of silently defaulting to botocore's 60-second timeout. - ›The Bedrock backend reads the first text block of a Converse response rather than block 0, enabling reasoning-capable models to return non-empty graphs.
- ›
merge-graphsnow preserves edge direction instead of rewiring import edges to the importing file. - ›TypeScript
.tsxfiles now parse with the TSX grammar, preventing absolute-path node IDs from leaking into edge endpoints.
+1 moreshow less
- ›AST-cache hits after a corpus move or clone now re-anchor stored root-relative node IDs to the new root, preventing stale absolute IDs from replaying.
- ›The MCP server's multi-project graph-context cache is now bounded via