<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Graphify Labs Inc</title>
    <description>The latest articles on DEV Community by Graphify Labs Inc (graphify).</description>
    <link>https://dev.to/graphify</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F15091%2F831bf484-c707-431a-85cf-c12370867d8b.png</url>
      <title>DEV Community: Graphify Labs Inc</title>
      <link>https://dev.to/graphify</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/graphify"/>
    <language>en</language>
    <item>
      <title>Why vector search isn't enough for coding agents</title>
      <dc:creator>Syed Fahad</dc:creator>
      <pubDate>Fri, 30 Oct 2026 16:21:05 +0000</pubDate>
      <link>https://dev.to/graphify/why-vector-search-isnt-enough-for-coding-agents-ai5</link>
      <guid>https://dev.to/graphify/why-vector-search-isnt-enough-for-coding-agents-ai5</guid>
      <description>&lt;p&gt;Ask a coding agent "where does an expired token get rejected?" and vector search will usually find something that sounds right. The hard part is the next step. The agent has to work out how that code connects to the code it's about to change.&lt;/p&gt;

&lt;p&gt;Since our post on &lt;a href="https://dev.to/graphify/code-knowledge-graph-vs-rag-why-structure-beats-similarity-4lo5"&gt;code knowledge graphs vs RAG&lt;/a&gt;, readers have asked for one thing above all: show it end to end. One question, the code it finds, the dependency path the graph returns, and a label on every hop saying whether it was read from the source or inferred. This post does exactly that. Everything below the "Worked example" heading is real output from open-source Graphify, run on a public repo you can clone yourself.&lt;/p&gt;

&lt;h2&gt;
  
  
  What others have already shown
&lt;/h2&gt;

&lt;p&gt;We're not the first to look at this, and the best published examples are worth reading in full:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The orphan function.&lt;/strong&gt; In &lt;a href="https://dev.to/wonderlab/codebase-knowledge-base-series-05-vector-retrieval-vs-knowledge-graph-adding-a-call-graph-4ad5"&gt;Codebase Knowledge Base Series (05)&lt;/a&gt;, WonderLab asks about "process payment". Vector top-5 returns &lt;code&gt;get_payment_history&lt;/code&gt; and &lt;code&gt;verify_webhook_signature&lt;/code&gt;, which look like payments but don't answer the question. One &lt;code&gt;CALLS&lt;/code&gt; hop from &lt;code&gt;process_checkout&lt;/code&gt; brings in &lt;code&gt;calculate_order_total&lt;/code&gt;, the function that does. In their words, it's "semantically distant but structurally close."&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The bug three hops down.&lt;/strong&gt; Tian Pan's &lt;a href="https://tianpan.co/blog/2026/05/07/code-specific-rag-general-retrieval-fails-codebases" rel="noopener noreferrer"&gt;Code-Specific RAG&lt;/a&gt; traces &lt;code&gt;processPayment → validateCard → checkFraudScore → fetchUserHistory&lt;/code&gt;. A query surfaces the first function, "but the actual bug or context lives in &lt;code&gt;fetchUserHistory&lt;/code&gt;. Token-based retrieval stops at the first hop."&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Look-alike functions.&lt;/strong&gt; In &lt;a href="https://www.inkylabai.com/articles/codebot" rel="noopener noreferrer"&gt;CodeBot&lt;/a&gt;, InkyLab points out that training and inference preprocessing "look almost identical. A vector search can't tell them apart." Their fix is resolved &lt;code&gt;calls&lt;/code&gt; edges over the Ultralytics codebase.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ranking by references.&lt;/strong&gt; &lt;a href="https://aider.chat/2023/10/22/repomap.html" rel="noopener noreferrer"&gt;Aider's repo map&lt;/a&gt; uses tree-sitter to pull out definitions and references, then ranks them on a dependency graph to fit a token budget.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;On a benchmark.&lt;/strong&gt; &lt;a href="https://arxiv.org/abs/2410.14684" rel="noopener noreferrer"&gt;RepoGraph&lt;/a&gt; (Ouyang et al.) builds a line-level definition/reference graph and retrieves ego-graphs around keywords. Plugged into four SWE-bench systems, it reports an average relative improvement of 32.8%.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;They all land in the same place. Finding the starting point is the easy part. Structure is how you get from there to everything the change touches. What most of these write-ups leave out is the question readers keep asking: &lt;strong&gt;how far can you trust each hop?&lt;/strong&gt; That's where Graphify's labelled edges come in.&lt;/p&gt;

&lt;h2&gt;
  
  
  Worked example: itsdangerous, one question
&lt;/h2&gt;

&lt;p&gt;The repo is &lt;a href="https://github.com/pallets/itsdangerous" rel="noopener noreferrer"&gt;pallets/itsdangerous&lt;/a&gt; (commit &lt;code&gt;672971d&lt;/code&gt;), the small library Flask uses to sign cookies and tokens. It's small enough to check every line by hand.&lt;/p&gt;

&lt;p&gt;Building the graph uses only the parser, with no LLM call:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ graphify update src
[graphify watch] Rebuilt: 152 nodes, 346 edges, 7 communities
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 1: the question finds the relevant code
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ graphify query "where does an expired timestamp raise SignatureExpired"
Graph: src/graphify-out/graph.json (152 nodes) | Traversal: BFS depth=2 |
Start: ['SignatureExpired', 'TimestampSigner', 'Raised if a signature does not match.'] | 64 nodes found
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;From a plain-language question, Graphify went straight to &lt;code&gt;SignatureExpired&lt;/code&gt; and &lt;code&gt;TimestampSigner&lt;/code&gt;, the code that handles expiry. A list of matching chunks would stop here. Graphify keeps going.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 2: the graph returns the path, with a label on every hop
&lt;/h3&gt;

&lt;p&gt;The same query returns the edges around those start nodes. Here are the ones that answer the question, copied as printed:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;EDGE TimestampSigner --method [EXTRACTED]--&amp;gt; .unsign() at=src/itsdangerous/timed.py:L72
EDGE .unsign() --calls [EXTRACTED context=call]--&amp;gt; SignatureExpired at=src/itsdangerous/timed.py:L142
EDGE SignatureExpired --inherits [EXTRACTED]--&amp;gt; BadTimeSignature at=src/itsdangerous/exc.py:L60
EDGE TimestampSigner --inherits [EXTRACTED]--&amp;gt; Signer at=src/itsdangerous/timed.py:L22
EDGE TimestampSigner --uses [INFERRED]--&amp;gt; SignatureExpired at=src/itsdangerous/timed.py:L142
EDGE TimedSerializer --uses [INFERRED]--&amp;gt; SignatureExpired at=src/itsdangerous/timed.py:L213
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then we ask for the shortest route from the serializer most apps actually call:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ graphify path "TimedSerializer" "SignatureExpired"
Shortest path (1 hops):
  TimedSerializer --uses [INFERRED]--&amp;gt; SignatureExpired
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 3: check each hop against the source
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;.unsign() --calls--&amp;gt; SignatureExpired&lt;/code&gt;, EXTRACTED, timed.py:L142.&lt;/strong&gt; The parser read this straight from the call site:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;age&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;max_age&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="k"&gt;raise&lt;/span&gt; &lt;span class="n"&gt;SignatureExpired&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's the answer to the question, and it's backed by a line number.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;SignatureExpired --inherits--&amp;gt; BadTimeSignature&lt;/code&gt;, EXTRACTED.&lt;/strong&gt; It's in the class definition. It also matters for the change: any &lt;code&gt;except BadTimeSignature&lt;/code&gt; or &lt;code&gt;except BadSignature&lt;/code&gt; will catch expiry too.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;TimedSerializer --uses--&amp;gt; SignatureExpired&lt;/code&gt;, INFERRED, timed.py:L213.&lt;/strong&gt; No line has &lt;code&gt;TimedSerializer&lt;/code&gt; calling &lt;code&gt;SignatureExpired&lt;/code&gt;. The resolver linked them because the class body refers to the exception. Open line 213 and you'll find it isn't raised there. It's caught and re-raised:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;except&lt;/span&gt; &lt;span class="n"&gt;SignatureExpired&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="c1"&gt;# The signature was unsigned successfully but was
&lt;/span&gt;    &lt;span class="c1"&gt;# expired. Do not try the next signer.
&lt;/span&gt;    &lt;span class="k"&gt;raise&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The inferred edge points at exactly the right line, and the label tells the agent this is the one hop worth a quick look before it edits. That's the point of provenance. Without labels, every hop looks equally certain. With Graphify, the agent knows which hops are read straight from the source and which one to verify.&lt;/p&gt;

&lt;h3&gt;
  
  
  What the agent ends up knowing
&lt;/h3&gt;

&lt;p&gt;Say the task is "make expired tokens return a 401 instead of a 500." Here's what each approach hands the agent:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Graphify, with labelled hops:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;The exact raise site (L142, parser-backed).&lt;/li&gt;
&lt;li&gt;The exception hierarchy that decides which &lt;code&gt;except&lt;/code&gt; blocks catch it (parser-backed).&lt;/li&gt;
&lt;li&gt;The one place a serializer deliberately re-raises it (inferred, flagged to verify).&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Every hop comes with a file, a line number and a label, so the agent can make the change with the whole path in view.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why the graph matters
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Finding the code&lt;/strong&gt; answers "where is the code about X?"&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A code knowledge graph&lt;/strong&gt; answers "what does X call, what calls X, and what catches it?" That's the question behind most risky changes, and the one WonderLab, Tian Pan, InkyLab, Aider and RepoGraph all show similarity alone can't answer.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Provenance labels&lt;/strong&gt; tell the agent when it can move on and when to read the source first. &lt;code&gt;EXTRACTED&lt;/code&gt; means the edge was read directly from the source. &lt;code&gt;INFERRED&lt;/code&gt; means Graphify resolved it.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Graphify gives the agent all three in one answer.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it on your own repo
&lt;/h2&gt;

&lt;p&gt;The fastest way to try this is the hosted &lt;strong&gt;&lt;a href="https://app.graphify.com" rel="noopener noreferrer"&gt;Graphify app&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;To run it locally, use the Graphify CLI:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;uv tool &lt;span class="nb"&gt;install &lt;/span&gt;graphifyy
graphify &lt;span class="nb"&gt;install&lt;/span&gt;          &lt;span class="c"&gt;# sets up the skill for Claude Code; use --platform for other assistants&lt;/span&gt;
graphify update &lt;span class="nb"&gt;.&lt;/span&gt;         &lt;span class="c"&gt;# build the code graph&lt;/span&gt;
graphify query &lt;span class="s2"&gt;"where does an expired token get rejected?"&lt;/span&gt;
graphify path &lt;span class="s2"&gt;"TimedSerializer"&lt;/span&gt; &lt;span class="s2"&gt;"SignatureExpired"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;Codex uses &lt;code&gt;$graphify&lt;/code&gt; instead of &lt;code&gt;/graphify&lt;/code&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Over MCP, the same operations are available as &lt;code&gt;query_graph&lt;/code&gt;, &lt;code&gt;shortest_path&lt;/code&gt; and &lt;code&gt;get_node&lt;/code&gt;, so any MCP client can use them. The source is at &lt;a href="https://github.com/Graphify-Labs/graphify" rel="noopener noreferrer"&gt;github.com/Graphify-Labs/graphify&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's next
&lt;/h2&gt;

&lt;p&gt;Next, we want to run the same trace on a larger repo with hundreds of inferred edges, and measure how often an &lt;code&gt;INFERRED&lt;/code&gt; hop holds up when you check it against the source. If you have a repo where vector search keeps sending your agent to the wrong place, tell us in the comments or on &lt;a href="https://discord.gg/graphify" rel="noopener noreferrer"&gt;Discord&lt;/a&gt;, and we'll trace it.&lt;/p&gt;

&lt;p&gt;Thanks to the authors linked above for publishing examples we could build on.&lt;/p&gt;

&lt;p&gt;Syed Fahad and the Graphify team&lt;/p&gt;

</description>
      <category>ai</category>
      <category>codingagents</category>
      <category>knowledgegraph</category>
      <category>devtools</category>
    </item>
    <item>
      <title>Graphify made it to GitHub's Octoverse 2026</title>
      <dc:creator>Syed Fahad</dc:creator>
      <pubDate>Wed, 28 Oct 2026 20:19:56 +0000</pubDate>
      <link>https://dev.to/graphify/graphify-made-it-to-githubs-octoverse-2026-a4a</link>
      <guid>https://dev.to/graphify/graphify-made-it-to-githubs-octoverse-2026-a4a</guid>
      <description>&lt;p&gt;We're in GitHub's &lt;a href="https://octoverse.github.com/" rel="noopener noreferrer"&gt;Octoverse 2026&lt;/a&gt;. I had to read it twice.&lt;/p&gt;

&lt;p&gt;Octoverse is GitHub's yearly look at what happened in open source. This year's &lt;a href="https://github.blog/news-insights/octoverse/octoverse-commits-pushes-reach-new-highs-in-2026-as-developers-build-with-agents/" rel="noopener noreferrer"&gt;report&lt;/a&gt; has a list of the most-engaged open source repositories, and &lt;a href="https://github.com/Graphify-Labs/graphify" rel="noopener noreferrer"&gt;Graphify-Labs/graphify&lt;/a&gt; is No. 7 on the single-vendor and product-led side. That's next to microsoft/vscode, anomalyco/opencode, and BerriAI/litellm. The report covers 1 October 2025 to 30 September 2026.&lt;/p&gt;

&lt;p&gt;Our first commit was 5 April 2026. Six months later, GitHub put us in its year-in-review.&lt;/p&gt;

&lt;h2&gt;
  
  
  Octoverse, built by the community
&lt;/h2&gt;

&lt;p&gt;Engagement means people. You starred the repo, filed issues, sent pull requests, answered questions in Discord, and wrote about Graphify on your own blogs. That's what this list counted.&lt;/p&gt;

&lt;p&gt;As of 29 October 2026, the repo has more than 137,000 stars and more than 13,000 forks. The &lt;code&gt;graphifyy&lt;/code&gt; package was downloaded from PyPI more than 1.6 million times in the last month.&lt;/p&gt;

&lt;p&gt;Two weeks ago we wrote about &lt;a href="https://graphify.com/blog/125000-github-stars" rel="noopener noreferrer"&gt;125,000 GitHub stars&lt;/a&gt;, and before that about &lt;a href="https://graphify.com/blog/eight-million-downloads-in-six-months" rel="noopener noreferrer"&gt;8 million PyPI downloads&lt;/a&gt;. Octoverse is GitHub telling the same story.&lt;/p&gt;

&lt;h2&gt;
  
  
  What doesn't change
&lt;/h2&gt;

&lt;p&gt;If you're new here: Graphify turns your codebase into a map your AI assistant can read, so its answers come from your actual code.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Your code is parsed on your machine.&lt;/li&gt;
&lt;li&gt;Every relationship is tagged &lt;a href="https://graphify.com/glossary/confidence-tags" rel="noopener noreferrer"&gt;&lt;code&gt;EXTRACTED&lt;/code&gt; or &lt;code&gt;INFERRED&lt;/code&gt;&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;You get a &lt;a href="https://graphify.com/blog/what-is-a-code-knowledge-graph" rel="noopener noreferrer"&gt;knowledge graph&lt;/a&gt; your assistant can query and walk.&lt;/li&gt;
&lt;li&gt;Graphify stays Apache 2.0.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Type &lt;code&gt;/graphify&lt;/code&gt; in Claude Code, Cursor, Gemini CLI, or Copilot (&lt;code&gt;$graphify&lt;/code&gt; in Codex), and you get a map of your codebase.&lt;/p&gt;

&lt;h2&gt;
  
  
  Beyond the repo: what's on graphify.com
&lt;/h2&gt;

&lt;p&gt;The open source engine runs on your machine, and that stays. graphify.com is where the same graph runs hosted, kept current for you.&lt;/p&gt;

&lt;p&gt;The &lt;a href="https://graphify.com/mcp" rel="noopener noreferrer"&gt;hosted Graphify MCP server&lt;/a&gt; gives Claude Code, Cursor, Codex, Copilot, and other agents one endpoint with an OAuth sign-in, so they query the graph instead of re-reading files. The &lt;a href="https://graphify.com/integrations" rel="noopener noreferrer"&gt;Graphify integrations page&lt;/a&gt; lists the assistants it works with and the tools your code comes in from. Hosted plans add pull request reviews and &lt;a href="https://graphify.com/formal-verification" rel="noopener noreferrer"&gt;formal verification&lt;/a&gt;, and a workspace can hold more than code, like a &lt;a href="https://graphify.com/blog/connect-google-drive" rel="noopener noreferrer"&gt;Google Drive folder&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://graphify.com/pricing" rel="noopener noreferrer"&gt;Graphify pricing&lt;/a&gt; starts with a free plan for one developer, then Pro, Teams, and Enterprise. &lt;a href="https://graphify.com/enterprise" rel="noopener noreferrer"&gt;Graphify Enterprise&lt;/a&gt; runs self-hosted or air-gapped, with SAML single sign-on. Pre-seed and seed teams can apply to the &lt;a href="https://graphify.com/startups" rel="noopener noreferrer"&gt;Graphify for Startups program&lt;/a&gt; for 50% off Teams.&lt;/p&gt;

&lt;p&gt;If you'd rather help build, &lt;a href="https://graphify.com/graphguild" rel="noopener noreferrer"&gt;GraphGuild&lt;/a&gt; is our community program for people who answer questions, write, and host events.&lt;/p&gt;

&lt;h2&gt;
  
  
  Thank you
&lt;/h2&gt;

&lt;p&gt;This one belongs to every contributor, every bug report, and everyone who told a teammate about Graphify. Thanks also to the GitHub team for the recognition and the artwork.&lt;/p&gt;

&lt;p&gt;If Graphify has helped you, &lt;a href="https://github.com/Graphify-Labs/graphify" rel="noopener noreferrer"&gt;star it on GitHub&lt;/a&gt;. It's the easiest way to tell us to keep going.&lt;/p&gt;

&lt;p&gt;Syed Fahad and the Graphify team&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>github</category>
      <category>ai</category>
      <category>community</category>
    </item>
    <item>
      <title>Grounded answers: how Graphify tags what it knows</title>
      <dc:creator>Syed Fahad</dc:creator>
      <pubDate>Wed, 28 Oct 2026 12:27:07 +0000</pubDate>
      <link>https://dev.to/graphify/grounded-answers-how-graphify-tags-what-it-knows-51g9</link>
      <guid>https://dev.to/graphify/grounded-answers-how-graphify-tags-what-it-knows-51g9</guid>
      <description>&lt;p&gt;Confidence tags on a Graphify graph say how each edge was established, before an agent follows it. EXTRACTED means tree-sitter found the call, import, or definition in the syntax tree. INFERRED means a model connected it. AMBIGUOUS means the evidence did not resolve, and the edge stays flagged. Read the tag before you trust the hop.&lt;/p&gt;

&lt;h2&gt;
  
  
  What do the confidence tags mean?
&lt;/h2&gt;

&lt;p&gt;A &lt;a href="https://graphify.com/blog/what-is-a-code-knowledge-graph" rel="noopener noreferrer"&gt;code knowledge graph&lt;/a&gt; stores functions, classes, and docs as nodes. Calls, imports, and references are the edges between them. The edge is the claim the assistant walks. &lt;a href="https://graphify.com/glossary/confidence-tags" rel="noopener noreferrer"&gt;Confidence tags&lt;/a&gt; are the label on that claim. &lt;a href="https://graphify.com/concepts" rel="noopener noreferrer"&gt;How Graphify works&lt;/a&gt; builds the graph in two stages, and the tag says which stage produced the edge.&lt;/p&gt;

&lt;p&gt;EXTRACTED comes from the syntax tree. Graphify parses code on the machine with tree-sitter. The parser finds the call, the import, or the definition, and that edge is deterministic. Parse the same file again and the parser finds the same edge. No model sits in that step. The Cursor integration describes this tag as parsed from the AST.&lt;/p&gt;

&lt;p&gt;INFERRED is a connection a model made. Docs, PDFs, and recordings are not a tree of calls. (SQL schemas and Terraform are parsed, so their edges are EXTRACTED.) The model you configure joins a doc page to the service it describes, or a runbook to the Terraform resource it covers. Those edges are usually right. They are still a judgment, and the tag says so. A plausible link can be wrong. The tag is how you see that the link was proposed.&lt;/p&gt;

&lt;p&gt;AMBIGUOUS means Graphify found evidence and could not resolve it. The cases named in the glossary are dynamic dispatch, reflection, and an import built from a string. The edge stays in the graph with the flag, so the unresolved link is visible as unresolved.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;graphify explain&lt;/code&gt; shows how each connection on a node was established. &lt;code&gt;GRAPH_REPORT.md&lt;/code&gt; separates the architecture the parser extracted from the connections the model proposed. Over MCP, &lt;code&gt;graph_stats&lt;/code&gt; and the confidence audit in the report break the graph down by the three tags, so you can see how much of the map is parsed fact.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why should an agent read the tag before the next hop?
&lt;/h2&gt;

&lt;p&gt;An answer from the graph is a path. Each hop names a file and a line, and the edge on that hop carries one tag. The tags are different evidence. A caller the parser found and a doc the model attached can both appear in the same path, and the output keeps them distinct.&lt;/p&gt;

&lt;p&gt;Treat every hop as fact and an INFERRED link gets the same weight as an EXTRACTED call. That is how a guessed connection becomes an edit. The glossary uses this picture: the payment worker depends on the sessions table. You want to see whether the parser found that, or a model inferred it, before you change the code.&lt;/p&gt;

&lt;p&gt;Lean on an EXTRACTED hop when you change code. Treat an INFERRED hop as a lead, and open the doc and the symbol. Treat an AMBIGUOUS hop as a place to read the source, because the evidence stopped short of a resolved link.&lt;/p&gt;

&lt;p&gt;A similarity score says two chunks resemble each other. It does not record whether a relationship was parsed or proposed. That difference is the subject of &lt;a href="https://graphify.com/blog/code-knowledge-graph-vs-rag" rel="noopener noreferrer"&gt;Code knowledge graph vs RAG&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where do confidence tags not help?
&lt;/h2&gt;

&lt;p&gt;The tag describes an edge. It does not answer "find this string." Grep returns the lines that contain the string. A misspelled word in a comment, or a URL in a config file, is that question. Grep answers the hop you can phrase as a string. A tag will not.&lt;/p&gt;

&lt;p&gt;Fuzzy search over a large body of prose is the other miss. Embeddings are the better tool there, and Graphify does not try to beat them. A tag will not find the paragraph that only resembles the question.&lt;/p&gt;

&lt;h2&gt;
  
  
  What runs on the machine?
&lt;/h2&gt;

&lt;p&gt;The open-source engine is Apache 2.0. Code parsing happens on your machine. There is no telemetry. INFERRED edges use the model backend you configure, and that backend can be a local one, so the judgment can stay on the machine too. The graph is files in &lt;code&gt;graphify-out/&lt;/code&gt;: &lt;code&gt;graph.html&lt;/code&gt;, &lt;code&gt;GRAPH_REPORT.md&lt;/code&gt;, and &lt;code&gt;graph.json&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://app.graphify.com" rel="noopener noreferrer"&gt;Graphify Cloud&lt;/a&gt; hosts the same kind of graph and keeps it current. It is a different product.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;uv tool &lt;span class="nb"&gt;install &lt;/span&gt;graphifyy
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The package on PyPI is &lt;code&gt;graphifyy&lt;/code&gt; (two y's). &lt;code&gt;pipx install graphifyy&lt;/code&gt; also works. Then &lt;code&gt;graphify install&lt;/code&gt;, and in the assistant &lt;code&gt;/graphify .&lt;/code&gt;. The command reference is in the &lt;a href="https://docs.graphify.com" rel="noopener noreferrer"&gt;docs&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>llm</category>
      <category>rag</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Why graphs beat vectors for agent memory</title>
      <dc:creator>Syed Fahad</dc:creator>
      <pubDate>Wed, 28 Oct 2026 12:26:57 +0000</pubDate>
      <link>https://dev.to/graphify/why-graphs-beat-vectors-for-agent-memory-m4a</link>
      <guid>https://dev.to/graphify/why-graphs-beat-vectors-for-agent-memory-m4a</guid>
      <description>&lt;p&gt;A code graph stores the calls and imports in a codebase, and the assistant still has them next session. A vector database stores text that resembles the question, then searches again. The code graph vs vector database difference is what the assistant remembers.&lt;/p&gt;

&lt;h2&gt;
  
  
  How does a code graph differ from a vector database?
&lt;/h2&gt;

&lt;p&gt;A code graph stores typed entities and the relationships between them. A &lt;a href="https://graphify.com/glossary/knowledge-graph" rel="noopener noreferrer"&gt;Knowledge graph&lt;/a&gt; is that structure. The entities are the things in the repo. The edges are how they connect, and an assistant can traverse them. A vector database stores embeddings and metadata filters. A filter limits which vectors return. The relationship lives on the graph as an edge, and that edge is still there when the assistant starts again.&lt;/p&gt;

&lt;p&gt;How similarity and structure compare as ways to fetch an answer is in &lt;a href="https://graphify.com/blog/code-knowledge-graph-vs-rag" rel="noopener noreferrer"&gt;Code knowledge graph vs RAG&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  What does a query return?
&lt;/h2&gt;

&lt;p&gt;A graph query is a typed, multi-hop traversal. The assistant follows edges of a given type, one hop after another. A vector query is approximate nearest-neighbour search, a top-k of the chunks whose embeddings sit nearest the question.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://graphify.com/vs/vector-databases" rel="noopener noreferrer"&gt;Graphify vs vector databases&lt;/a&gt; sets the two side by side. Pinecone, Weaviate, and pgvector return the most similar vectors. The graph returns the entities and the relationships between them. For an assistant, that result is the memory.&lt;/p&gt;

&lt;h2&gt;
  
  
  What happens on the second hop?
&lt;/h2&gt;

&lt;p&gt;The gap shows up when a question has two steps. A top-k lookup is one round of nearest-neighbour search, so a second hop needs the first answer before it can even be phrased. The model is left stitching disconnected chunks together.&lt;/p&gt;

&lt;p&gt;On a graph the second hop is one more edge. A later session follows that same edge, because the edge was stored with the graph.&lt;/p&gt;

&lt;h2&gt;
  
  
  What stays when a file changes?
&lt;/h2&gt;

&lt;p&gt;Changing a file means re-embedding and upserting every chunk it touched before any of it can be retrieved again. Graphify re-parses that one file and updates its nodes. The edges that did not change stay. The cost of keeping current is the size of the change, not the size of the repository.&lt;/p&gt;

&lt;p&gt;Inside the assistant, the command is &lt;code&gt;/graphify . --update&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  How can you check an answer?
&lt;/h2&gt;

&lt;p&gt;A vector result comes with a similarity score. The score measures how near two vectors were. A graph result is the path the answer took. Every edge on that path carries a confidence tag: EXTRACTED, INFERRED, or AMBIGUOUS.&lt;/p&gt;

&lt;p&gt;The tag is stored on the edge, so the next session can read that path.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where does the text go?
&lt;/h2&gt;

&lt;p&gt;Vector data is often shipped to an embedding API. Graphify is on-device, and it sends no telemetry.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where does a vector database still win?
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://graphify.com/vs/vector-databases" rel="noopener noreferrer"&gt;Graphify vs vector databases&lt;/a&gt; has nine rows. Eight of them are a real difference. The ninth is the one they win. A vector index answers what looks like this, and for fuzzy similarity over large volumes of prose it is still the better tool.&lt;/p&gt;

&lt;h2&gt;
  
  
  Can you run both?
&lt;/h2&gt;

&lt;p&gt;You can run both. Some teams keep a vector index for semantic recall and use Graphify for structure. Graphify can store embeddings as node attributes, so similarity stays one signal inside a traversal.&lt;/p&gt;

&lt;p&gt;Hybrid search blends keyword and vector scores. What comes back is still a ranked list of disconnected chunks. A graph returns connected entities, and the structure survives retrieval. &lt;a href="https://graphify.com/vs/rag" rel="noopener noreferrer"&gt;Graphify vs RAG&lt;/a&gt; is that choice for a retrieval pipeline. After the session ends, those connections are on the graph.&lt;/p&gt;

&lt;h2&gt;
  
  
  Does Graphify replace Pinecone, Weaviate, or pgvector?
&lt;/h2&gt;

&lt;p&gt;As coding-assistant memory, retrieval becomes a traversal over typed edges. The answer arrives as connected entities, and the path is there to read. Graphify does not replace Pinecone, Weaviate, or pgvector for every workload. Those products keep their place for pure similarity, and Graphify runs alongside them.&lt;/p&gt;

&lt;h2&gt;
  
  
  Is Graphify a graph database like Neo4j?
&lt;/h2&gt;

&lt;p&gt;Graphify is a memory layer. It builds the graph from your codebase and serves it over MCP and the CLI. There is no schema to model and no queries to write. If you already run Neo4j or FalkorDB, it exports into them.&lt;/p&gt;

&lt;h2&gt;
  
  
  Proof
&lt;/h2&gt;

&lt;p&gt;Steve Scargall, at MemVerge, reported 79× fewer tokens on a 496K-token codebase, with no vector database in the stack. That is his measurement, not a Graphify benchmark.&lt;/p&gt;

&lt;h2&gt;
  
  
  Install
&lt;/h2&gt;

&lt;p&gt;The package on PyPI is &lt;code&gt;graphifyy&lt;/code&gt;. Install the CLI, then register it with your assistant.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;uv tool &lt;span class="nb"&gt;install &lt;/span&gt;graphifyy
graphify &lt;span class="nb"&gt;install&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In the project, build the graph.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/graphify .
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>ai</category>
      <category>rag</category>
      <category>agents</category>
      <category>llm</category>
    </item>
    <item>
      <title>How to give GitHub Copilot codebase context that persists</title>
      <dc:creator>Syed Fahad</dc:creator>
      <pubDate>Wed, 28 Oct 2026 12:26:29 +0000</pubDate>
      <link>https://dev.to/graphify/how-to-give-github-copilot-codebase-context-that-persists-4f0f</link>
      <guid>https://dev.to/graphify/how-to-give-github-copilot-codebase-context-that-persists-4f0f</guid>
      <description>&lt;p&gt;GitHub Copilot codebase context vanishes when the chat ends, because each session starts from zero and Copilot searches the repo again. A graph built once on your machine is a map Copilot can query the next time. Graphify builds that graph and registers it with Copilot.&lt;/p&gt;

&lt;h2&gt;
  
  
  How do you give GitHub Copilot codebase context?
&lt;/h2&gt;

&lt;p&gt;The &lt;a href="https://graphify.com/integrations/github-copilot" rel="noopener noreferrer"&gt;GitHub Copilot integration&lt;/a&gt; page wires this in two commands, then a graph of the repo. The package on PyPI is &lt;code&gt;graphifyy&lt;/code&gt; (two y's).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;uv tool &lt;span class="nb"&gt;install &lt;/span&gt;graphifyy
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;pipx install graphifyy&lt;/code&gt; also works.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;graphify &lt;span class="nb"&gt;install&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;graphify install&lt;/code&gt; registers the &lt;code&gt;/graphify&lt;/code&gt; skill and an MCP server, so Copilot can query the graph. Graphify speaks the &lt;a href="https://modelcontextprotocol.io" rel="noopener noreferrer"&gt;Model Context Protocol&lt;/a&gt;. Any MCP client talks to the same server and the same ten graph tools. The integration page points at the docs for how to point Copilot at that server.&lt;/p&gt;

&lt;p&gt;Build the graph on the project you have open. In Copilot, run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/graphify .
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Tree-sitter parses the code locally, so call and import edges come from the syntax tree. Docs and other non-code files are read by the model you already use. The map lands in &lt;code&gt;graphify-out/&lt;/code&gt; as &lt;code&gt;graph.html&lt;/code&gt;, &lt;code&gt;GRAPH_REPORT.md&lt;/code&gt;, and &lt;code&gt;graph.json&lt;/code&gt;. The next session queries those files. The architecture is already on disk.&lt;/p&gt;

&lt;p&gt;A &lt;a href="https://graphify.com/glossary/knowledge-graph" rel="noopener noreferrer"&gt;knowledge graph&lt;/a&gt; here means entities and the typed relationships between them. The same shape of setup for Cursor is &lt;a href="https://graphify.com/blog/how-to-give-cursor-a-code-knowledge-graph" rel="noopener noreferrer"&gt;How to give Cursor a code knowledge graph&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  What can Copilot ask once the graph exists?
&lt;/h2&gt;

&lt;p&gt;The questions on the integration page are the ones that used to mean reading a large slice of the repo. What calls &lt;code&gt;chargeCustomer&lt;/code&gt;, and what breaks if the signature changes. The path from a checkout endpoint to the table it writes. Which modules read a config value such as &lt;code&gt;STRIPE_KEY&lt;/code&gt;. How the auth subsystem hangs together before you touch it.&lt;/p&gt;

&lt;p&gt;You can run the same questions from the shell. The page names these commands:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;graphify query &lt;span class="s2"&gt;"what calls chargeCustomer"&lt;/span&gt;
graphify path &lt;span class="s2"&gt;"checkout"&lt;/span&gt; &lt;span class="s2"&gt;"database"&lt;/span&gt;
graphify explain &lt;span class="s2"&gt;"AuthService"&lt;/span&gt;
graphify prs
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;graphify query&lt;/code&gt; returns a scoped piece of the graph. &lt;code&gt;graphify path&lt;/code&gt; walks the hops between two nodes. &lt;code&gt;graphify explain&lt;/code&gt; lists the edges on one symbol. &lt;code&gt;graphify prs&lt;/code&gt; is the pull-request command listed beside them. The docs cover its flags.&lt;/p&gt;

&lt;p&gt;Every edge Copilot gets back carries a confidence tag. EXTRACTED was parsed from the AST with tree-sitter. INFERRED means a model connected non-code material, such as a doc to the service it describes, and the tag marks that judgment. AMBIGUOUS means there was evidence and it could not be fully resolved, as with dynamic dispatch or an import built from a string. The edge is kept and flagged.&lt;/p&gt;

&lt;p&gt;When Copilot returns a path, open the file and line on the hop you are about to trust, and read the tag on that edge. An EXTRACTED edge is the parser. An INFERRED edge is the model joining a doc or a schema to code. It can be wrong and still sound plausible. An AMBIGUOUS edge is unresolved evidence, kept so the gap stays visible. The integration page describes the return value as connected structure, a path, which still holds past one or two hops. A pile of matching files, with the links guessed in the chat, is the loop this replaces.&lt;/p&gt;

&lt;h2&gt;
  
  
  What does the graph leave to you?
&lt;/h2&gt;

&lt;p&gt;The graph does not update itself. After the code changes, run &lt;code&gt;/graphify .&lt;/code&gt; again, or &lt;code&gt;/graphify . --update&lt;/code&gt; to re-scan only what changed. From the shell, &lt;code&gt;graphify update .&lt;/code&gt; does that pass. &lt;code&gt;graphify hook install&lt;/code&gt; adds post-commit and post-checkout git hooks that refresh the changed files. Until you refresh, Copilot is reading the last map you built.&lt;/p&gt;

&lt;p&gt;Grep still wins when the question is "find this string." The graph is for relationships. A literal string in a comment is still a search.&lt;/p&gt;

&lt;p&gt;The open-source engine runs on your machine. Code parsing is local. There is no telemetry. &lt;a href="https://app.graphify.com" rel="noopener noreferrer"&gt;Graphify Cloud&lt;/a&gt; is the hosted graph. This guide is the on-device setup. Cloud is a different product.&lt;/p&gt;

&lt;h2&gt;
  
  
  How do you confirm it is wired?
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;uv tool &lt;span class="nb"&gt;install &lt;/span&gt;graphifyy
graphify &lt;span class="nb"&gt;install&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then, in Copilot:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/graphify .
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The command reference is in the &lt;a href="https://docs.graphify.com" rel="noopener noreferrer"&gt;docs&lt;/a&gt;. Copilot-specific notes stay on the &lt;a href="https://graphify.com/integrations/github-copilot" rel="noopener noreferrer"&gt;GitHub Copilot integration&lt;/a&gt; page.&lt;/p&gt;

</description>
      <category>githubcopilot</category>
      <category>ai</category>
      <category>devtools</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Best codebase-context tools for AI coding assistants (2026)</title>
      <dc:creator>Syed Fahad</dc:creator>
      <pubDate>Wed, 28 Oct 2026 12:26:19 +0000</pubDate>
      <link>https://dev.to/graphify/best-codebase-context-tools-for-ai-coding-assistants-2026-1j7p</link>
      <guid>https://dev.to/graphify/best-codebase-context-tools-for-ai-coding-assistants-2026-1j7p</guid>
      <description>&lt;p&gt;The best codebase context tools depend on the question you are asking. Grep finds a string. Embeddings, RAG, and a vector database find prose that resembles the question. A code knowledge graph follows a relationship you can open. Hosted search and review tools serve a person, or a pull request.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Question&lt;/th&gt;
&lt;th&gt;A tool that fits&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Find this string&lt;/td&gt;
&lt;td&gt;grep&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Prose that resembles the question&lt;/td&gt;
&lt;td&gt;Embeddings, RAG, or a vector database&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;What calls what, hop by hop&lt;/td&gt;
&lt;td&gt;A code knowledge graph&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Search across the organisation&lt;/td&gt;
&lt;td&gt;Sourcegraph&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Comments on an open pull request&lt;/td&gt;
&lt;td&gt;Greptile or CodeRabbit&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Code that looks like this, inside Cursor&lt;/td&gt;
&lt;td&gt;Cursor's own index&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  What is grep best at?
&lt;/h2&gt;

&lt;p&gt;Grep is best when the question is "find this string." It returns the lines that contain the text. One hop is usually in reach too: the direct callers of a function, when the name in the call matches the name you searched.&lt;/p&gt;

&lt;p&gt;Past that hop, text search gets worse. A question such as what breaks if this schema changes runs through the table, the queries, the services, and the endpoints. Each hop adds name collisions, re-exports, and files that mention the symbol without touching it.&lt;/p&gt;

&lt;h2&gt;
  
  
  What are embeddings, RAG, and a vector database best at?
&lt;/h2&gt;

&lt;p&gt;They are best at fuzzy recall over prose. &lt;a href="https://graphify.com/vs/rag" rel="noopener noreferrer"&gt;Graphify vs RAG&lt;/a&gt; describes retrieval-augmented generation the way Lewis et al. (2020) introduced it: split documents into chunks, embed them, and pull back the top-k most similar. That works for lookup, when the answer sits in one passage.&lt;/p&gt;

&lt;p&gt;A relationship is a different shape. Chunking drops the link between a function and its caller. A two-hop question needs the first answer before the second can be asked, which is why benchmarks such as HotpotQA exist. &lt;a href="https://graphify.com/vs/vector-databases" rel="noopener noreferrer"&gt;Graphify vs vector databases&lt;/a&gt; names Pinecone, Weaviate, and pgvector: nearest-neighbour search returns similar vectors. A metadata filter narrows that search. Hybrid search still comes back as a ranked list of disconnected chunks.&lt;/p&gt;

&lt;p&gt;A changed file is re-embedded before those chunks can be retrieved again. A similarity score measures resemblance, and you judge the answer yourself. Chunks in a typical embedding pipeline go to an embedding API.&lt;/p&gt;

&lt;p&gt;Keep the vector index when the corpus is prose. Some teams run both: vectors for semantic recall, a graph for relationships. Graphify can store an embedding as one signal on a node, and retrieval is still a walk. If you already run Neo4j or FalkorDB, the graph exports into them. The essay form of this argument is &lt;a href="https://graphify.com/blog/code-knowledge-graph-vs-rag" rel="noopener noreferrer"&gt;Code knowledge graph vs RAG&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is a code knowledge graph best at?
&lt;/h2&gt;

&lt;p&gt;A code knowledge graph is best when the assistant needs a relationship: what calls this, what a change reaches, the path from one symbol to another. Graphify builds that graph from the repo. Code is parsed on the machine with tree-sitter, and each edge carries a confidence tag: EXTRACTED from the syntax tree, INFERRED by a model, or AMBIGUOUS when the evidence did not resolve. An answer is a path you can open.&lt;/p&gt;

&lt;p&gt;There is no telemetry on the open-source engine. &lt;a href="https://app.graphify.com" rel="noopener noreferrer"&gt;Graphify Cloud&lt;/a&gt; is the hosted graph. It is a different product.&lt;/p&gt;

&lt;p&gt;Graphify is the wrong tool for two of the jobs in the table. Fuzzy prose still belongs to embeddings. "Find this string" still belongs to grep.&lt;/p&gt;

&lt;h2&gt;
  
  
  What are hosted search and review tools best at?
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://graphify.com/vs/sourcegraph" rel="noopener noreferrer"&gt;Graphify vs Sourcegraph&lt;/a&gt; is a code search platform people use. The index covers the organisation, every repository, cloud or self-hosted, under a commercial licence. Search across thousands of repositories is the job that page says Sourcegraph is built for. Graphify maps the repositories you point it at, on the machine where you work, and the assistant walks that map. The two can run together.&lt;/p&gt;

&lt;p&gt;Greptile is hosted review and codebase chat. It indexes your code, and you see pull-request comments plus its own chat. Managed review on every pull request is its core product. &lt;code&gt;graphify prs&lt;/code&gt; is on demand. A managed bot that fits your policies is Greptile's job. A graph on the machine fits when the code cannot leave, or when you want each claim auditable.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://graphify.com/vs/cursor" rel="noopener noreferrer"&gt;Graphify vs Cursor indexing&lt;/a&gt; is the page whose answer is to use both. Cursor's index is embedding similarity inside the editor, automatic, with indexing through Cursor's servers. It surfaces code that looks like what you half remember, and there is nothing to set up. Connected questions are where it runs out. "What breaks if I change this" is a caller of a caller, and the model stitches similar snippets. You also cannot inspect why a snippet was pulled in. Graphify registers as an MCP server, the built-in index stays on, and the agent uses the graph when the question is structural.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://graphify.com/vs/coderabbit" rel="noopener noreferrer"&gt;Graphify vs CodeRabbit&lt;/a&gt; acts after the pull request opens: comments in GitHub or GitLab, through a hosted service, once the change is already written. Graphify is for the assistant writing the code, so it can ask what calls this before the edit. Graph-aware review in Graphify is Enterprise, early access, running in your own infrastructure. For a managed bot on every pull request today, that page says a service is the right shape. A common setup is the graph on the machine while code is written, and a hosted reviewer on the pull requests that follow.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>devtools</category>
      <category>opensource</category>
      <category>productivity</category>
    </item>
    <item>
      <title>How to give Cursor a code knowledge graph (2026 guide)</title>
      <dc:creator>Syed Fahad</dc:creator>
      <pubDate>Wed, 28 Oct 2026 12:26:10 +0000</pubDate>
      <link>https://dev.to/graphify/how-to-give-cursor-a-code-knowledge-graph-2026-guide-3g1b</link>
      <guid>https://dev.to/graphify/how-to-give-cursor-a-code-knowledge-graph-2026-guide-3g1b</guid>
      <description>&lt;p&gt;Out of the box, Cursor answers codebase questions by searching. It greps for a symbol, opens the files that match, reads them into context, and assembles an answer. That works, and it is expensive in a specific way. The exploration repeats every session, the same files get re-read, and the architectural picture the agent builds is gone the moment you close the window.&lt;/p&gt;

&lt;p&gt;A &lt;a href="https://graphify.com/glossary/knowledge-graph" rel="noopener noreferrer"&gt;code knowledge graph&lt;/a&gt; changes the move available to the agent. Instead of re-deriving structure from text, Cursor queries a persistent map of your repo: functions, classes, tables, and config as nodes; calls, imports, and references as typed edges. The graph is built once and stored on your machine. Graphify is the open-source (Apache 2.0) tool that builds that graph and hands it to Cursor. The whole setup is four commands.&lt;/p&gt;

&lt;h2&gt;
  
  
  How it works
&lt;/h2&gt;

&lt;p&gt;Install the CLI. The package on PyPI is &lt;code&gt;graphifyy&lt;/code&gt; (two y's). That puts the &lt;code&gt;graphify&lt;/code&gt; command on your path.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;uv tool &lt;span class="nb"&gt;install &lt;/span&gt;graphifyy
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Wire Cursor. &lt;code&gt;graphify install&lt;/code&gt; detects Cursor and registers Graphify over the &lt;a href="https://modelcontextprotocol.io" rel="noopener noreferrer"&gt;Model Context Protocol&lt;/a&gt;, the open standard Cursor already speaks for external tools. Cursor's agent can then call the graph mid-conversation: query the structure, trace a path between two nodes, explain why a node matters. No config files to hand-edit. The &lt;a href="https://graphify.com/integrations/cursor" rel="noopener noreferrer"&gt;Cursor integration page&lt;/a&gt; has the specifics.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;graphify &lt;span class="nb"&gt;install&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Map the repo. In your next agent session, or from the shell, run &lt;code&gt;/graphify .&lt;/code&gt; in the project. Graphify parses your code locally across about 40 languages, including SQL, Postgres schemas, and Terraform, so the call and import edges come from real AST extraction. No model is involved in reading your source. Docs and PDFs are folded in by whichever model you choose.&lt;/p&gt;

&lt;p&gt;A few minutes later, three files sit in &lt;code&gt;graphify-out/&lt;/code&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;graph.html&lt;/code&gt;: an interactive map you can open in a browser&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;GRAPH_REPORT.md&lt;/code&gt;: a written brief covering god nodes, subsystem communities, and suggested questions&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;graph.json&lt;/code&gt;: the raw structure&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ask structural questions. Try the ones that used to trigger long search-and-read loops: what calls this function, what is the blast radius of renaming this column, how does the webhook handler reach the database. Cursor answers by traversing the graph (a handful of nodes and edges rather than the full text of every matching file). Every edge carries a provenance tag: &lt;code&gt;EXTRACTED&lt;/code&gt; from the AST, &lt;code&gt;INFERRED&lt;/code&gt; by the model, or &lt;code&gt;AMBIGUOUS&lt;/code&gt; when the evidence could not be resolved. Why that tagging matters is in &lt;a href="https://graphify.com/concepts" rel="noopener noreferrer"&gt;concepts&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;You can run the same queries yourself:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;graphify query &lt;span class="s2"&gt;"what calls this handler"&lt;/span&gt;
graphify path &lt;span class="s2"&gt;"webhook"&lt;/span&gt; &lt;span class="s2"&gt;"database"&lt;/span&gt;
graphify explain &lt;span class="s2"&gt;"APIRouter"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The command reference lives in the &lt;a href="https://docs.graphify.com" rel="noopener noreferrer"&gt;docs&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  The limit
&lt;/h2&gt;

&lt;p&gt;The open-source engine runs on your machine. Code parsing is local. There is no telemetry. The only optional network call is the model used to fold non-code sources into the graph, and that can stay local with Ollama.&lt;/p&gt;

&lt;p&gt;Re-run &lt;code&gt;/graphify .&lt;/code&gt; when the code changes meaningfully, or &lt;code&gt;graphify . --update&lt;/code&gt; to re-scan only what changed. Between refreshes the graph is plain files in &lt;code&gt;graphify-out/&lt;/code&gt;. It does not update itself.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://app.graphify.com" rel="noopener noreferrer"&gt;Graphify Cloud&lt;/a&gt; is the hosted, always-on graph: the same map, kept current across repos, queryable from any assistant. This guide is the on-device setup. Cloud is a different product.&lt;/p&gt;

&lt;p&gt;This does not replace Cursor's grep. It gives the agent a map to consult first. For a question that is really "find this string," grep is still the right tool.&lt;/p&gt;

&lt;h2&gt;
  
  
  Proof
&lt;/h2&gt;

&lt;p&gt;Graph answers are small, and the graph persists, so context stops being spent on re-discovery. Actual savings depend on your repo and your questions. One community user reported 71.5× fewer tokens on their workload. That is their measurement, not a Graphify benchmark. The claim underneath it is that a traversal sends less text than a file dump.&lt;/p&gt;

&lt;p&gt;The other change is qualitative. Because every answer traces to a path through real files, you can audit what Cursor tells you instead of taking a plausible-sounding reconstruction on faith. Open &lt;code&gt;GRAPH_REPORT.md&lt;/code&gt; once. The god nodes and subsystem communities it names are usually worth knowing about even before the agent starts using them.&lt;/p&gt;

&lt;h2&gt;
  
  
  Install
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;uv tool &lt;span class="nb"&gt;install &lt;/span&gt;graphifyy
graphify &lt;span class="nb"&gt;install&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then, in Cursor:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/graphify .
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;First-graph walkthrough: &lt;a href="https://docs.graphify.com/guides/first-graph" rel="noopener noreferrer"&gt;docs.graphify.com/guides/first-graph&lt;/a&gt;. Cursor-specific notes: &lt;a href="https://graphify.com/integrations/cursor" rel="noopener noreferrer"&gt;graphify.com/integrations/cursor&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>cursor</category>
      <category>mcp</category>
      <category>ai</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>How to give Claude Code a code knowledge graph (2026 guide)</title>
      <dc:creator>Syed Fahad</dc:creator>
      <pubDate>Wed, 28 Oct 2026 12:26:00 +0000</pubDate>
      <link>https://dev.to/graphify/how-to-give-claude-code-a-code-knowledge-graph-2026-guide-1hi8</link>
      <guid>https://dev.to/graphify/how-to-give-claude-code-a-code-knowledge-graph-2026-guide-1hi8</guid>
      <description>&lt;p&gt;Claude Code starts each session by searching the repo. It greps for a name, opens the files that match, and reads them into the conversation. A code knowledge graph for Claude Code gives it a map it can query instead, so the session starts from structure that already exists on your machine.&lt;/p&gt;

&lt;h2&gt;
  
  
  What does graphify install write for Claude Code?
&lt;/h2&gt;

&lt;p&gt;The package on PyPI is &lt;code&gt;graphifyy&lt;/code&gt;, with two y's. Install the CLI first.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;uv tool &lt;span class="nb"&gt;install &lt;/span&gt;graphifyy
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;pipx install graphifyy&lt;/code&gt; also works. If the shell then says &lt;code&gt;graphify&lt;/code&gt; is not found, run &lt;code&gt;uv tool update-shell&lt;/code&gt; and open a new terminal. &lt;code&gt;~/.local/bin&lt;/code&gt; is not on PATH until you do.&lt;/p&gt;

&lt;p&gt;The bare &lt;code&gt;graphify install&lt;/code&gt; targets Claude Code. It writes the &lt;code&gt;/graphify&lt;/code&gt; skill to &lt;code&gt;~/.claude/skills/graphify/SKILL.md&lt;/code&gt;, adds a graphify section to &lt;code&gt;~/.claude/CLAUDE.md&lt;/code&gt;, and writes PreToolUse hooks to &lt;code&gt;.claude/settings.json&lt;/code&gt;. When you type &lt;code&gt;/graphify&lt;/code&gt;, that section tells Claude Code to follow the skill before it does anything else.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;graphify install --project&lt;/code&gt; writes those pieces inside the repo, so a team can commit them. The skill path there is &lt;code&gt;.claude/skills/graphify/SKILL.md&lt;/code&gt;, and the hook settings go in &lt;code&gt;.claude/settings.json&lt;/code&gt;. The command prints a &lt;code&gt;git add&lt;/code&gt; hint. Teammates need the &lt;code&gt;graphifyy&lt;/code&gt; CLI installed.&lt;/p&gt;

&lt;p&gt;If you see &lt;code&gt;ModuleNotFoundError: No module named 'graphify'&lt;/code&gt;, the usual cause on Mac or Windows is a plain pip install. The skill resolves Python from &lt;code&gt;graphify-out/.graphify_python&lt;/code&gt;, which can point at a different environment than pip used. Use the uv or pipx install above. Both isolate the package.&lt;/p&gt;

&lt;p&gt;The registration block is on &lt;a href="https://graphify.com/integrations/claude-code" rel="noopener noreferrer"&gt;Graphify + Claude Code: a code knowledge graph&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  How do you build the graph?
&lt;/h2&gt;

&lt;p&gt;In a Claude Code session, type &lt;code&gt;/graphify .&lt;/code&gt;. The skill maps the project into &lt;code&gt;graphify-out/&lt;/code&gt;. &lt;code&gt;graph.html&lt;/code&gt; is the interactive view, &lt;code&gt;GRAPH_REPORT.md&lt;/code&gt; has the highlights and suggested questions, and &lt;code&gt;graph.json&lt;/code&gt; is the queryable graph.&lt;/p&gt;

&lt;p&gt;On PowerShell, type &lt;code&gt;graphify .&lt;/code&gt;. The leading slash in &lt;code&gt;/graphify .&lt;/code&gt; is parsed as a path separator there.&lt;/p&gt;

&lt;p&gt;If &lt;code&gt;/graphify&lt;/code&gt; does nothing, check that &lt;code&gt;~/.claude/skills/graphify/SKILL.md&lt;/code&gt; exists and that the graphify section is in &lt;code&gt;CLAUDE.md&lt;/code&gt;. Start a new Claude Code session so both are picked up.&lt;/p&gt;

&lt;p&gt;The background is in &lt;a href="https://graphify.com/blog/what-is-a-code-knowledge-graph" rel="noopener noreferrer"&gt;What is a code knowledge graph?&lt;/a&gt;. The glossary page is &lt;a href="https://graphify.com/glossary/knowledge-graph" rel="noopener noreferrer"&gt;Knowledge graph&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  How does Claude Code query the graph?
&lt;/h2&gt;

&lt;p&gt;Before Claude Code greps or opens files one by one, the hook-guard reminds it to try the graph. &lt;code&gt;graphify query&lt;/code&gt; returns a scoped subgraph for a question. &lt;code&gt;graphify path&lt;/code&gt; returns the dependency path between two symbols. &lt;code&gt;graphify explain&lt;/code&gt; returns everything connected to a node. Ask what calls &lt;code&gt;chargeCustomer&lt;/code&gt;, and what breaks if you change its signature.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;graphify query &lt;span class="s2"&gt;"what calls chargeCustomer, and what breaks if I change its signature?"&lt;/span&gt;
graphify path &lt;span class="s2"&gt;"A"&lt;/span&gt; &lt;span class="s2"&gt;"B"&lt;/span&gt;
graphify explain &lt;span class="s2"&gt;"chargeCustomer"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Results include &lt;code&gt;file:line&lt;/code&gt; citations. Every edge is tagged &lt;code&gt;EXTRACTED&lt;/code&gt;, &lt;code&gt;INFERRED&lt;/code&gt;, or &lt;code&gt;AMBIGUOUS&lt;/code&gt;. The tags separate what was found from what was guessed.&lt;/p&gt;

&lt;h2&gt;
  
  
  What does strict mode change?
&lt;/h2&gt;

&lt;p&gt;A normal install nudges Claude Code toward the graph. &lt;code&gt;graphify install --project --strict&lt;/code&gt; blocks the first raw source read of a session and redirects that read to the graph. After that one block, the hook goes back to the soft nudge.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;GRAPHIFY_HOOK_STRICT=1&lt;/code&gt; or &lt;code&gt;0&lt;/code&gt; toggles strict mode at runtime. No reinstall.&lt;/p&gt;

&lt;h2&gt;
  
  
  How does the graph stay current?
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;graphify update .&lt;/code&gt; re-extracts changed files. That pass is AST-only. &lt;code&gt;graphify hook install&lt;/code&gt; adds post-commit and post-checkout git hooks that run the update on commit and checkout. The graph does not update itself.&lt;/p&gt;

&lt;p&gt;Hook commands store an absolute path to the interpreter at install time. After you upgrade, run &lt;code&gt;graphify hook install&lt;/code&gt; again so the embedded interpreter path stays fresh. If the PreToolUse hooks stop firing after an upgrade, run &lt;code&gt;graphify install&lt;/code&gt; again.&lt;/p&gt;

&lt;h2&gt;
  
  
  Do you need the MCP server?
&lt;/h2&gt;

&lt;p&gt;The skill plus the CLI is the complete default. The MCP server is optional. Add &lt;code&gt;.mcp.json&lt;/code&gt; at the project root when you want the graph as native tools, or when several assistants should share one graph.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mcpServers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"graphify"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"python"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"args"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"-m"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"graphify.serve"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"graphify-out/graph.json"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can call &lt;code&gt;query_graph&lt;/code&gt;, &lt;code&gt;shortest_path&lt;/code&gt;, &lt;code&gt;god_nodes&lt;/code&gt;, &lt;code&gt;graph_stats&lt;/code&gt;, and a PR-triage set. The rest are in the &lt;a href="https://docs.graphify.com/reference/mcp-tools" rel="noopener noreferrer"&gt;MCP tools reference&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  When should you use grep?
&lt;/h2&gt;

&lt;p&gt;Grep wins when the question is "find this string."&lt;/p&gt;

&lt;p&gt;Code is parsed locally across about 40 languages, 34 of them with tree-sitter grammars. The model you already use in Claude Code reads docs and PDFs. There is no telemetry.&lt;/p&gt;

&lt;p&gt;The installer replaces or appends only its own graphify section and leaves the rest of &lt;code&gt;CLAUDE.md&lt;/code&gt; alone. &lt;code&gt;graphify claude uninstall&lt;/code&gt; removes the Claude Code pieces. &lt;code&gt;graphify uninstall&lt;/code&gt; removes every platform at once. It also removes the graphify section from &lt;code&gt;CLAUDE.md&lt;/code&gt;, and deletes that file only if graphify created it. &lt;code&gt;graphify uninstall --purge&lt;/code&gt; also deletes &lt;code&gt;graphify-out/&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  How do you install it?
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;uv tool &lt;span class="nb"&gt;install &lt;/span&gt;graphifyy
graphify &lt;span class="nb"&gt;install&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then open the repo in Claude Code and run &lt;code&gt;/graphify .&lt;/code&gt;.&lt;/p&gt;

</description>
      <category>claude</category>
      <category>mcp</category>
      <category>ai</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>100,000 GitHub stars</title>
      <dc:creator>Syed Fahad</dc:creator>
      <pubDate>Wed, 28 Oct 2026 12:25:48 +0000</pubDate>
      <link>https://dev.to/graphify/100000-github-stars-3jph</link>
      <guid>https://dev.to/graphify/100000-github-stars-3jph</guid>
      <description>&lt;p&gt;We hit 100,000 GitHub stars. &lt;a href="https://github.com/Graphify-Labs/graphify" rel="noopener noreferrer"&gt;github.com/Graphify-Labs/graphify&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That is 117 days after the first commit. Graphify has now been downloaded more than 4 million times, forked more than 10,000 times, and runs inside more than 20 AI coding assistants.&lt;/p&gt;

&lt;p&gt;That still feels surreal.&lt;/p&gt;

&lt;p&gt;I am a knowledge graph researcher. When Andrej Karpathy posted about using LLMs to build personal knowledge bases, something clicked: a coding assistant should not have to grep its way through a codebase every time you ask it a question. It should have a map. I built the first version that weekend and pushed it to GitHub on 5 April. One person and a tree-sitter parser.&lt;/p&gt;

&lt;p&gt;We had 4,000 stars on day one and 10,000 by day two, almost entirely because people we had never met posted about it on X. We never optimised for stars. We optimised for one thing: type &lt;code&gt;/graphify&lt;/code&gt; in your assistant and get something useful back in thirty seconds. Stars are a side effect of that. But a milestone is a good moment to stop and look back, and this one is really about a community that showed up, stuck around, and built things we never planned for.&lt;/p&gt;

&lt;h2&gt;
  
  
  What hasn't changed
&lt;/h2&gt;

&lt;p&gt;The principles are the same ones I wrote down that first weekend.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Your code stays on your machine.&lt;/strong&gt; Code is parsed locally and deterministically. No LLM call, nothing sent anywhere.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Every edge is explained.&lt;/strong&gt; Each relationship is tagged &lt;code&gt;EXTRACTED&lt;/code&gt; or &lt;code&gt;INFERRED&lt;/code&gt;, so you always know what was read straight from the source and what Graphify resolved.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A graph, not a vector index.&lt;/strong&gt; No embeddings, no vector store. Something you can traverse, query, and trace from one concept to the next.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Simple enough to onboard yourself.&lt;/strong&gt; Two commands to install, one to run.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Standing on open source
&lt;/h2&gt;

&lt;p&gt;Graphify is built on top of other people's work, and we would not be here without it.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://tree-sitter.github.io/tree-sitter/" rel="noopener noreferrer"&gt;tree-sitter&lt;/a&gt;. Every code relationship in Graphify starts life as a tree-sitter AST, across dozens of languages.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.nature.com/articles/s41598-019-41695-z" rel="noopener noreferrer"&gt;Leiden community detection&lt;/a&gt;. This is how a codebase splits into the subsystems you see in every graph.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/SYSTRAN/faster-whisper" rel="noopener noreferrer"&gt;faster-whisper&lt;/a&gt; and &lt;a href="https://github.com/yt-dlp/yt-dlp" rel="noopener noreferrer"&gt;yt-dlp&lt;/a&gt;. They let Graphify pull videos, talks, and recordings into the same graph as your code, transcribed locally.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://modelcontextprotocol.io" rel="noopener noreferrer"&gt;Model Context Protocol&lt;/a&gt;. MCP turned Graphify from a report you read into a set of tools any assistant can call.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/astral-sh/uv" rel="noopener noreferrer"&gt;uv&lt;/a&gt;. The reason install takes thirty seconds instead of thirty minutes.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And thank you to the teams behind Claude Code, Cursor, Codex, Gemini CLI, Copilot, and every other assistant we plug into. You built the place where developers now work. We just try to give it a better map.&lt;/p&gt;

&lt;h2&gt;
  
  
  The community
&lt;/h2&gt;

&lt;p&gt;The numbers that matter most to me are not the stars. More than 130 people have contributed code, and we have shipped more than 150 releases. Nearly every fix that went out this month came from an issue or a pull request someone in the community opened. People have written tutorials, recorded videos, and posted reels about Graphify that we only found out about afterwards. This month we hit #3 on GitHub's global trending list.&lt;/p&gt;

&lt;p&gt;To everyone who starred the repo, opened an issue, sent a pull request, answered a question in Discord, or wrote about Graphify somewhere: thank you. And thank you to Andrej for the post that started all of this.&lt;/p&gt;

&lt;h2&gt;
  
  
  We are not done
&lt;/h2&gt;

&lt;p&gt;Graphify the open-source project stays open source. That is not changing.&lt;/p&gt;

&lt;p&gt;The thing you have asked for most is the always-on version: your code, docs, and meetings mapped continuously in the background, updated as you work, and queryable from anywhere instead of only on demand. That is what we have been building at &lt;a href="https://graphify.com" rel="noopener noreferrer"&gt;graphify.com&lt;/a&gt;, and as of today early access is open at &lt;a href="https://app.graphify.com" rel="noopener noreferrer"&gt;app.graphify.com&lt;/a&gt;, ahead of the public v1 launch.&lt;/p&gt;

&lt;p&gt;We think every AI assistant should work from a real map of your world, not a guess. We are going to keep building until that is the default.&lt;/p&gt;

&lt;p&gt;Thanks for all the stars.&lt;/p&gt;

&lt;p&gt;Safi and the Graphify team&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>github</category>
      <category>ai</category>
      <category>startup</category>
    </item>
    <item>
      <title>Graphify is now a ChatGPT plugin</title>
      <dc:creator>Syed Fahad</dc:creator>
      <pubDate>Wed, 28 Oct 2026 12:25:18 +0000</pubDate>
      <link>https://dev.to/graphify/graphify-is-now-a-chatgpt-plugin-6la</link>
      <guid>https://dev.to/graphify/graphify-is-now-a-chatgpt-plugin-6la</guid>
      <description>&lt;p&gt;Graphify is now a ChatGPT plugin. The same plugin works in Codex and in Dots. It connects them to the repositories you have already indexed in Graphify Cloud, through the hosted server at &lt;code&gt;https://api.graphify.com/mcp&lt;/code&gt;. You install it from the plugin directory, sign in, and ask about a repository you are allowed to see. There is no API key to paste, and neither ChatGPT, Codex, nor a Dot builds the graph on your computer.&lt;/p&gt;

&lt;h2&gt;
  
  
  What does the ChatGPT plugin do?
&lt;/h2&gt;

&lt;p&gt;The &lt;a href="https://chatgpt.com/plugins/plugin_asdk_app_6abe89f7f5d88191b9422522bb8562a4" rel="noopener noreferrer"&gt;listing&lt;/a&gt; is Graphify, by Graphify Labs, under Developer Tools. The server it connects is named &lt;code&gt;graphify&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Once you are signed in, ChatGPT, Codex, and a Dot can explore the indexed repositories your account is allowed to open. It can trace call paths and dependencies, assess the static impact of a change, find tests linked to that code, and keep workspace-specific engineering knowledge for later questions. A &lt;a href="https://graphify.com/blog/what-is-a-code-knowledge-graph" rel="noopener noreferrer"&gt;code knowledge graph&lt;/a&gt; is the map underneath: functions, calls, and imports, with a file and a line on each hop.&lt;/p&gt;

&lt;p&gt;The same hosted server is what the &lt;a href="https://graphify.com/mcp" rel="noopener noreferrer"&gt;VS Code and JetBrains installs&lt;/a&gt; use. The plugin is the install package ChatGPT, Codex, and Dots understand. MCP is the connection.&lt;/p&gt;

&lt;h2&gt;
  
  
  How do you install the ChatGPT plugin?
&lt;/h2&gt;

&lt;p&gt;You need a repository whose status in &lt;a href="https://app.graphify.com" rel="noopener noreferrer"&gt;Graphify Cloud&lt;/a&gt; is Indexed. Use ChatGPT on the web or in the desktop app, Codex in the desktop app, or a Dot. On a work workspace, an admin may have to allow the plugin before Connect is available.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Open &lt;a href="https://chatgpt.com/plugins/plugin_asdk_app_6abe89f7f5d88191b9422522bb8562a4" rel="noopener noreferrer"&gt;Graphify in the ChatGPT plugin directory&lt;/a&gt;. You can also go to Settings, then Plugins, and choose Graphify by Graphify Labs. The sidebar has a Plugins entry too.&lt;/li&gt;
&lt;li&gt;Select Install plugin if ChatGPT shows it, then Connect.&lt;/li&gt;
&lt;li&gt;Your browser opens so you can sign in to Graphify and choose the workspace that holds the repository. Read the access ChatGPT asks for before you approve it.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Codex uses that same listing. In the desktop app, switch to Codex, open Plugins, and install Graphify. Connect and sign in the same way, then start a new chat and mention Graphify.&lt;/p&gt;

&lt;p&gt;Installing the plugin does not sign you in. The connection is ready only after that Graphify sign-in finishes.&lt;/p&gt;

&lt;h2&gt;
  
  
  How does a Dot use the plugin?
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://openai.com/index/introducing-dots/" rel="noopener noreferrer"&gt;Dots&lt;/a&gt; are OpenAI's always-on agents in ChatGPT. They use the plugins you have already connected. You choose which apps a Dot can open, and which actions it may run on its own.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Create the Dot in the ChatGPT desktop app, or on chatgpt.com in a desktop browser.&lt;/li&gt;
&lt;li&gt;Open Settings, then Customize, then Plugins, and choose Graphify.&lt;/li&gt;
&lt;li&gt;Decide which Graphify actions the Dot may run on its own, and which ones it has to ask you about.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Ask it the same questions you would ask in ChatGPT. When a Dot is researching in the background, OpenAI keeps connected apps read-only. It will not save a note or switch workspace until you ask it to, and you approve that request.&lt;/p&gt;

&lt;h2&gt;
  
  
  What should you ask first?
&lt;/h2&gt;

&lt;p&gt;In ChatGPT, mention Graphify in the message, or choose it from +, then More, before you send. In Codex, and when you talk to a Dot, mention it the same way.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@Graphify Show my indexed repositories and help me choose one to explore.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Pick a repository from that answer, then ask one of the questions on the listing:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@Graphify Explain how authentication works in my selected repository, with supporting code locations.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@Graphify Help me assess the likely impact of a code change and find linked tests in my selected repository.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Open the file and line an answer cites before you change code. The graph tags each edge EXTRACTED, INFERRED, or AMBIGUOUS, which is what &lt;a href="https://graphify.com/blog/grounded-answers-confidence-tags" rel="noopener noreferrer"&gt;Grounded answers&lt;/a&gt; is about. Some tools save a note for the workspace or change which workspace is selected. Read the tool request and approve it only when that is what you meant.&lt;/p&gt;

&lt;h2&gt;
  
  
  What this plugin does not do
&lt;/h2&gt;

&lt;p&gt;It does not search the public web, run SQL, or deploy anything. It answers from repositories indexed in your workspace. A repository that is still building, or that sits in another workspace, comes back empty. Check its status, then ask Graphify to list repositories again.&lt;/p&gt;

&lt;p&gt;The open-source engine is a different setup. &lt;code&gt;uv tool install graphifyy&lt;/code&gt; and &lt;code&gt;graphify install&lt;/code&gt; register a skill with an editor on your machine. The ChatGPT plugin does not replace that, and that install does not connect ChatGPT, Codex, or a Dot. The package name on PyPI is &lt;code&gt;graphifyy&lt;/code&gt;, with two y's.&lt;/p&gt;

&lt;p&gt;If Graphify is missing under Settings, then Plugins, it may be unavailable on this plan, region, or workspace. If you cannot create a Dot, OpenAI is still rolling them out by plan and region, and a work workspace admin may have to turn them on. An admin turns plugins on under Workspace settings, then Plugins. If Connect says an admin disabled it, ask them to enable Graphify for your role and connect again. If ChatGPT never asked you to sign in, open Settings, then Plugins, select Graphify, and choose Connect.&lt;/p&gt;

&lt;p&gt;Privacy and terms for the app are on &lt;a href="https://graphify.com/privacy" rel="noopener noreferrer"&gt;graphify.com/privacy&lt;/a&gt; and &lt;a href="https://graphify.com/terms" rel="noopener noreferrer"&gt;graphify.com/terms&lt;/a&gt;. ChatGPT tells you, on the listing, that connecting may share relevant chats with the app. That use is covered by those pages.&lt;/p&gt;

</description>
      <category>chatgpt</category>
      <category>openai</category>
      <category>ai</category>
      <category>mcp</category>
    </item>
    <item>
      <title>OpenClaw MCP: how to connect Graphify</title>
      <dc:creator>Syed Fahad</dc:creator>
      <pubDate>Wed, 28 Oct 2026 12:25:09 +0000</pubDate>
      <link>https://dev.to/graphify/openclaw-mcp-how-to-connect-graphify-4ajg</link>
      <guid>https://dev.to/graphify/openclaw-mcp-how-to-connect-graphify-4ajg</guid>
      <description>&lt;p&gt;OpenClaw MCP is the Graphify plugin you install from ClawHub. It connects OpenClaw to the repositories you have already indexed in Graphify Cloud, through the hosted server at &lt;code&gt;https://api.graphify.com/mcp&lt;/code&gt;. You sign in through the browser, then ask about a repository you are allowed to see. There is no API key to paste. OpenClaw does not build the graph on your computer.&lt;/p&gt;

&lt;h2&gt;
  
  
  What does the OpenClaw MCP plugin do?
&lt;/h2&gt;

&lt;p&gt;Graphify Labs publishes &lt;code&gt;@graphify-labs/graphify-mcp&lt;/code&gt;. The listing is &lt;a href="https://clawhub.ai/graphify-labs/plugins/graphify-mcp" rel="noopener noreferrer"&gt;Graphify MCP on ClawHub&lt;/a&gt;. The steps below match &lt;a href="https://docs.graphify.com/integrations/openclaw" rel="noopener noreferrer"&gt;Graphify MCP for OpenClaw&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Once you are signed in, OpenClaw can search those indexed repositories, follow callers and dependencies, and judge what a change reaches. The map underneath is a &lt;a href="https://graphify.com/blog/what-is-a-code-knowledge-graph" rel="noopener noreferrer"&gt;code knowledge graph&lt;/a&gt;: functions, calls, and imports, with a file and a line on each hop.&lt;/p&gt;

&lt;p&gt;The same hosted server is what &lt;a href="https://graphify.com/mcp" rel="noopener noreferrer"&gt;Graphify MCP&lt;/a&gt; uses for VS Code and JetBrains, and what the &lt;a href="https://graphify.com/blog/graphify-chatgpt-plugin" rel="noopener noreferrer"&gt;ChatGPT plugin&lt;/a&gt; uses. The plugin is the package OpenClaw installs. MCP is the connection.&lt;/p&gt;

&lt;h2&gt;
  
  
  What do you need before you install?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;OpenClaw with remote MCP, OAuth, and Claude-format bundle support. The package was prepared for OpenClaw 2026.9.8. Older releases may differ. The install flags are in &lt;a href="https://docs.openclaw.ai/cli/plugins/install" rel="noopener noreferrer"&gt;OpenClaw's plugin install guide&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;A model enabled in OpenClaw, with permission to call tools. That access is separate from your Graphify plan.&lt;/li&gt;
&lt;li&gt;A repository indexed in your Graphify workspace. Sign in at &lt;a href="https://app.graphify.com" rel="noopener noreferrer"&gt;Graphify Cloud&lt;/a&gt;, connect a repository, and wait until its status is Indexed. Status lives on &lt;a href="https://docs.graphify.com/platform/repositories" rel="noopener noreferrer"&gt;Repositories and builds&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How do you install the OpenClaw plugin?
&lt;/h2&gt;

&lt;p&gt;Open &lt;a href="https://clawhub.ai/graphify-labs/plugins/graphify-mcp" rel="noopener noreferrer"&gt;Graphify MCP on ClawHub&lt;/a&gt;, then install the published package and confirm OpenClaw sees it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;openclaw plugins &lt;span class="nb"&gt;install &lt;/span&gt;clawhub:@graphify-labs/graphify-mcp
openclaw plugins inspect graphify-mcp
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you already cloned &lt;a href="https://github.com/Graphify-Labs/graphify-mcp" rel="noopener noreferrer"&gt;graphify-mcp&lt;/a&gt;, the same bundle is in &lt;code&gt;integrations/openclaw&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;openclaw plugins &lt;span class="nb"&gt;install&lt;/span&gt; ./integrations/openclaw
openclaw plugins inspect graphify-mcp
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Installing the plugin does not sign you in. If the install stops and asks you to accept capabilities, review the Graphify MCP server on that screen and accept it. On a noninteractive install, add &lt;code&gt;--accept-capabilities&lt;/code&gt; to the same command.&lt;/p&gt;

&lt;h2&gt;
  
  
  How do you sign in to Graphify?
&lt;/h2&gt;

&lt;p&gt;Register the hosted server, then finish Graphify sign-in in the browser:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;openclaw mcp &lt;span class="nb"&gt;set &lt;/span&gt;graphify &lt;span class="s1"&gt;'{"url":"https://api.graphify.com/mcp","transport":"streamable-http","auth":"oauth"}'&lt;/span&gt;
openclaw mcp login graphify
openclaw mcp doctor graphify &lt;span class="nt"&gt;--probe&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If a server named &lt;code&gt;graphify&lt;/code&gt; already exists, run &lt;code&gt;openclaw mcp show graphify&lt;/code&gt; first and keep any settings you meant to keep.&lt;/p&gt;

&lt;p&gt;The same connection, merged into your OpenClaw configuration:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mcp"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"servers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"graphify"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"url"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://api.graphify.com/mcp"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"transport"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"streamable-http"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"auth"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"oauth"&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Use one connection named &lt;code&gt;graphify&lt;/code&gt;. A second name for the same URL shows the tools twice. Do not put a password or token in the configuration. OpenClaw stores the OAuth credentials.&lt;/p&gt;

&lt;p&gt;Start a new agent session after this. If OpenClaw prints a restart instruction, follow that instruction.&lt;/p&gt;

&lt;h2&gt;
  
  
  What should you ask first?
&lt;/h2&gt;

&lt;p&gt;Ask OpenClaw to list what the connection can see:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;List my Graphify workspaces and repositories.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Pick a repository from that answer, then ask:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;In my selected repository, find the function that handles authentication.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Show its callers and the linked tests, with file paths as evidence.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A connection check includes a repository lookup. Tool discovery alone does not show that the index is reachable.&lt;/p&gt;

&lt;p&gt;Open the file and line an answer cites before you change code. These results are static. They do not run the code or the tests. Some tools save a repository note or change the selected workspace. Read each tool request and approve it only when that is what you meant.&lt;/p&gt;

&lt;h2&gt;
  
  
  What if the OpenClaw connection fails?
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;What you see&lt;/th&gt;
&lt;th&gt;What to do&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;The install stops and asks you to accept capabilities&lt;/td&gt;
&lt;td&gt;Review the Graphify MCP server on that screen and accept it. On a noninteractive install, run the same install command again with &lt;code&gt;--accept-capabilities&lt;/code&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Graphify tools are hidden&lt;/td&gt;
&lt;td&gt;Check that the plugin is enabled and that your tool policy allows it. A &lt;code&gt;bundle-mcp&lt;/code&gt; denial hides these tools.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sign-in fails&lt;/td&gt;
&lt;td&gt;Run &lt;code&gt;openclaw mcp doctor graphify --probe&lt;/code&gt;, then &lt;code&gt;openclaw mcp login graphify&lt;/code&gt; again.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;No repositories, or empty answers&lt;/td&gt;
&lt;td&gt;That repository is not indexed yet, or it is in a different workspace. Check its status on &lt;a href="https://docs.graphify.com/platform/repositories" rel="noopener noreferrer"&gt;Repositories and builds&lt;/a&gt;, then ask OpenClaw to list repositories again.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Two copies of the Graphify tools&lt;/td&gt;
&lt;td&gt;Keep a single server named &lt;code&gt;graphify&lt;/code&gt;. Remove the extra connection to the same URL.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  What this plugin does not do
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;graphify install --platform claw&lt;/code&gt; installs the local skill for a graph on your machine. That path is on &lt;a href="https://docs.graphify.com/integrations/other-assistants" rel="noopener noreferrer"&gt;Other coding assistants&lt;/a&gt;. The OpenClaw plugin on this page connects OpenClaw to Graphify Cloud. The local command does not install the ClawHub plugin. The ClawHub plugin does not build the graph on your machine.&lt;/p&gt;

&lt;p&gt;The package name on PyPI, for the local engine, is &lt;code&gt;graphifyy&lt;/code&gt;, with two y's.&lt;/p&gt;

</description>
      <category>mcp</category>
      <category>agents</category>
      <category>ai</category>
      <category>opensource</category>
    </item>
    <item>
      <title>JetBrains MCP: how to connect Graphify</title>
      <dc:creator>Syed Fahad</dc:creator>
      <pubDate>Wed, 28 Oct 2026 12:24:59 +0000</pubDate>
      <link>https://dev.to/graphify/jetbrains-mcp-how-to-connect-graphify-2l05</link>
      <guid>https://dev.to/graphify/jetbrains-mcp-how-to-connect-graphify-2l05</guid>
      <description>&lt;p&gt;Graphify MCP is on the JetBrains Marketplace. JetBrains AI Assistant can ask about a repository you have already indexed in Graphify Cloud. You install the plugin, copy a connection from a tool window, paste it into AI Assistant, and sign in through the browser. There is no API key. The plugin does not build the graph on your computer.&lt;/p&gt;

&lt;p&gt;The connection uses &lt;code&gt;https://api.graphify.com/mcp&lt;/code&gt;, the same hosted server as &lt;a href="https://graphify.com/mcp" rel="noopener noreferrer"&gt;Graphify MCP&lt;/a&gt;. Graphify Labs publishes the plugin as &lt;a href="https://plugins.jetbrains.com/plugin/34740-graphify-mcp" rel="noopener noreferrer"&gt;Graphify MCP&lt;/a&gt;. The id is &lt;code&gt;com.graphify.graphify-mcp&lt;/code&gt;. The walkthrough below follows &lt;a href="https://docs.graphify.com/integrations/jetbrains" rel="noopener noreferrer"&gt;Graphify MCP for JetBrains&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  AI Assistant gets a map of the code
&lt;/h2&gt;

&lt;p&gt;AI Assistant can search the project you have open. With this connection it can also follow a &lt;a href="https://graphify.com/blog/what-is-a-code-knowledge-graph" rel="noopener noreferrer"&gt;code knowledge graph&lt;/a&gt;: which function calls which, and which file and line each hop sits on. Graphify MCP is how you give AI Assistant that map.&lt;/p&gt;

&lt;p&gt;The Marketplace lists the plugin as free. AI Assistant is still the chat. The plugin does not upload the project you have open, and it does not keep a password of its own. Your Graphify plan is separate from Assistant access.&lt;/p&gt;

&lt;h2&gt;
  
  
  What you need first
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;A JetBrains IDE on the 2025.3 release. The published plugin accepts platform build 253 through 253.*, so it does not install on 2025.2 or on a later release.&lt;/li&gt;
&lt;li&gt;JetBrains AI Assistant, with access to MCP.&lt;/li&gt;
&lt;li&gt;A repository indexed in &lt;a href="https://app.graphify.com" rel="noopener noreferrer"&gt;Graphify Cloud&lt;/a&gt;. Wait until its status is Indexed. That status is on &lt;a href="https://docs.graphify.com/platform/repositories" rel="noopener noreferrer"&gt;Repositories and builds&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Node.js and npm on the IDE's PATH, only for the browser sign-in below. The direct connection does not need them.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Install the JetBrains MCP plugin
&lt;/h2&gt;

&lt;p&gt;Install &lt;a href="https://plugins.jetbrains.com/plugin/34740-graphify-mcp" rel="noopener noreferrer"&gt;Graphify MCP&lt;/a&gt; from the Marketplace, or search for Graphify MCP by Graphify Labs under Settings, then Plugins. Restart the IDE if it asks.&lt;/p&gt;

&lt;p&gt;Open View, then Tool Windows, then Graphify. From that window you copy the connection, open IDE settings, open your workspace, or open the setup guide.&lt;/p&gt;

&lt;h2&gt;
  
  
  Choose how AI Assistant signs in
&lt;/h2&gt;

&lt;p&gt;Pick a method in the tool window and click Copy configuration. If a later release changes the text, copy it from the window.&lt;/p&gt;

&lt;h3&gt;
  
  
  Browser sign-in
&lt;/h3&gt;

&lt;p&gt;Use this when AI Assistant cannot sign in to a remote server on its own. The configuration runs &lt;code&gt;mcp-remote@0.14.3&lt;/code&gt;. That package opens a browser for Graphify sign-in and stores the credentials on your machine. Turning the configuration on is what downloads the bridge, so Node.js and npm have to be on the IDE's PATH.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mcpServers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"graphify"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"npx"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"args"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"-y"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"mcp-remote@0.14.3"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"https://api.graphify.com/mcp"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"--transport"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"http-only"&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Direct connection
&lt;/h3&gt;

&lt;p&gt;Use this when the client can finish Graphify's sign-in itself. If the browser never opens, switch back to the bridge above and paste that configuration instead.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mcpServers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"graphify"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"url"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://api.graphify.com/mcp"&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Paste it into AI Assistant
&lt;/h2&gt;

&lt;p&gt;Open Settings, then Tools, then AI Assistant, then Model Context Protocol (MCP). On macOS the menu is Settings or Preferences, then the same path. Open Settings in the tool window opens the IDE settings dialog. You still have to open the MCP page yourself.&lt;/p&gt;

&lt;p&gt;Click Add, paste the JSON, and choose this project or every project. Click OK, then Apply.&lt;/p&gt;

&lt;p&gt;Settings, then Tools, then MCP Server is a different page. That page lets other applications use the IDE. This configuration goes on the AI Assistant MCP page.&lt;/p&gt;

&lt;h2&gt;
  
  
  Ask about an indexed repository
&lt;/h2&gt;

&lt;p&gt;Sign in when the browser opens. The MCP settings should show the server connected. Ask:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;List my Graphify repositories.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Pick a repository from the answer, then try one of these:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Find the implementation of this function.&lt;/li&gt;
&lt;li&gt;What calls this symbol, and which tests are linked to it?&lt;/li&gt;
&lt;li&gt;Find this function and show its callers.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Open the file an answer cites before you rely on it. Some tools save notes on a repository or change the workspace you have selected. Read the request, and approve it only when that is what you meant.&lt;/p&gt;

&lt;h2&gt;
  
  
  If the connection fails
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;The plugin will not install unless the IDE is on the 2025.3 release.&lt;/li&gt;
&lt;li&gt;If &lt;code&gt;npx&lt;/code&gt; or Node.js is missing, install both, put them on the IDE's PATH, and restart the IDE. The browser sign-in needs them.&lt;/li&gt;
&lt;li&gt;If the direct connection never signs in, switch the tool window to the OAuth bridge, copy that configuration, and replace the server entry.&lt;/li&gt;
&lt;li&gt;If the answer lists no repositories, the repository is not indexed yet, or it is in another workspace. Check &lt;a href="https://docs.graphify.com/platform/repositories" rel="noopener noreferrer"&gt;Repositories and builds&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;If you cannot find an MCP page under AI Assistant, confirm AI Assistant is installed and that your JetBrains account can use it.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A graph that stays on your own machine is a separate setup, on &lt;a href="https://graphify.com/mcp" rel="noopener noreferrer"&gt;Graphify MCP&lt;/a&gt;. This plugin talks to the hosted server, and only to repositories already indexed in Graphify Cloud.&lt;/p&gt;

</description>
      <category>jetbrains</category>
      <category>mcp</category>
      <category>ai</category>
      <category>devtools</category>
    </item>
  </channel>
</rss>
