Issue Nº 01 — October 15, 2026

@readmodelmag
MODEL

Follow MODEL on X @readmodelmag

Tools

graphify, tested: it found every caller, once we gave it the tsconfig

SummaryThe open-source tool that turns a codebase into a graph your coding agent can query shipped version 0.9.94 this morning. On our own Next.js site it mapped 75 files in half a second with no AI model and no key, and found every file that calls a function. Without our tsconfig.json it found none, and said so as if that were the answer.

· MODEL Editors · 3 min read

Some links may be affiliate links. Disclosure

MODEL card: We tested it, graphify 0.9.94. Our run on our own Next.js site, 75 TS/TSX files, no LLM, no API key. Command: graphify affected getTool(). Without tsconfig: 322 nodes in 0.8 s, 0 of 4 calling files for getTool() with the message No affected nodes found, 0 of 8 for formatDate(). With tsconfig: 377 nodes in 0.5 s, 4 of 4 and 8 of 8, and a 708-byte answer versus 16,220 bytes for the files themselves. The catch: without tsconfig.json it can't follow @/ imports and says none instead of warning you.
Our own test output, October 22, 2026. Illustration by MODEL. Original. Image source.

graphify turns a folder of code (and, with an AI model, docs, PDFs and images) into a knowledge graph: functions, classes and files as nodes, calls and imports as edges. Your coding agent then asks the graph "who calls this?" instead of grepping and reading whole files. It installs as a /graphify skill for Claude Code, Cursor, Codex, Gemini CLI and others, and also runs as a plain command-line tool. It's open source under Apache-2.0 from Graphify Labs, with more than 132,000 GitHub stars, and it was on GitHub's daily trending list this morning.

Version 0.9.94 came out today at 9:19 a.m. Pacific. The release notes list 19 community pull requests, including a security pass on URL fetching (it now rejects URLs with no hostname, a bad port or a user:pass@ login, on every redirect) and fixes to how JavaScript, TypeScript and SQL code gets linked up.

The test. We installed graphifyy 0.9.94 from PyPI (the package name has a double y for now; the command is graphify) into a fresh Python 3.13 environment on an 8-core Linux box. We pointed it at a copy of this website's own code: 75 TypeScript files, about 4,800 lines. We used only the code path, graphify update, which parses files locally and calls no AI model, so no account and no API key. We didn't run graphify install, which writes skill files into your agents' config folders. Then we checked its answers against a plain text search.

First run, code folders only: 322 nodes and 602 edges in 0.8 seconds. Then we asked which code is affected by getTool(), a function four of our pages call. It answered "No affected nodes found." Same for formatDate(), which eight files call: zero. Our pages import through the @/ shortcut defined in tsconfig.json, and that file wasn't in the folder, so graphify couldn't resolve the imports. Nothing in the output told us.

Second run, with tsconfig.json added: 377 nodes and 1,085 edges in half a second, from scratch. Now it was right every time we checked:

  • getTool(): 4 of 4 calling files, each with the calling function and line number
  • formatDate(): 8 of 8
  • absoluteUrl(): 3 of 3
  • getStories(): 8 of 8, including callers inside the same file
  • No wrong files in any answer

The answer is also small. For getTool() it was 708 bytes, against 16,220 bytes for the four files an agent would otherwise read. That's about 23 times less to put in front of a model. The README's "71.5x fewer tokens" is the maker's figure on a bigger, mixed corpus. We didn't repeat it.

A free-text question was less useful. "How does a story page get its related stories" came back in a fifth of a second with the right starting points, but as a list of 39 nodes out of 216, cut off at our 800-token budget. It's a map, not an answer.

The catch. The silent miss. If the graph is built without the config that tells it how your imports resolve, it returns "nothing is affected" with the same confidence as a real answer. An agent that trusts it could change a function and skip the files that break. Run it from the project root, keep tsconfig.json (or your language's equivalent) in scope, and spot-check one answer against a text search before you rely on it.

What we did not test. The /graphify skill inside an agent, AI extraction of docs, PDFs, images and video, community labels, the MCP server, watch mode and git hooks, large repositories, languages other than TypeScript, the new URL-fetch security checks, Windows and macOS.

The verdict. Worth adding if your agent wastes context reading files to find callers. On our code it was fast, free to run and exact once configured. Treat an empty answer as "check the setup", not "safe to change".

Disclosure: not sponsored. No affiliate links. MODEL has no relationship with Graphify Labs. Full test notes, commands and outputs are kept by MODEL Editors.

Sources

  1. graphify 0.9.94 release notes (Oct 22, 2026)

    Graphify Labs (GitHub)

  2. graphify repository and README

    Graphify Labs (GitHub)

  3. graphifyy on PyPI

    PyPI

See the MODEL tool card: graphify

FREE · EVERY WEEK

The top AI tools this week, tested.

Every week MODEL's editors pick the AI tools worth your time, try them hands-on, and tell you what's good, what's not, and who it's for. Free, in your inbox.

Free. Unsubscribe anytime. Our picks are editorial and can't be bought.

The weekly three is editorial. A subscription does not buy a place in it.