<?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: Chethan Vasthaw Tippani</title>
    <description>The latest articles on DEV Community by Chethan Vasthaw Tippani (@chethan_vasthaw).</description>
    <link>https://dev.to/chethan_vasthaw</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%2Fuser%2Fprofile_image%2F4191873%2F45796531-f3a3-46c3-b43a-ac00cc9cf236.png</url>
      <title>DEV Community: Chethan Vasthaw Tippani</title>
      <link>https://dev.to/chethan_vasthaw</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/chethan_vasthaw"/>
    <language>en</language>
    <item>
      <title>We built FalkorDB a company brain from its own GitHub. It knew things they may not.</title>
      <dc:creator>Chethan Vasthaw Tippani</dc:creator>
      <pubDate>Sun, 18 Oct 2026 14:12:08 +0000</pubDate>
      <link>https://dev.to/chethan_vasthaw/we-built-falkordb-a-company-brain-from-its-own-github-it-knew-things-they-may-not-47h8</link>
      <guid>https://dev.to/chethan_vasthaw/we-built-falkordb-a-company-brain-from-its-own-github-it-knew-things-they-may-not-47h8</guid>
      <description>&lt;p&gt;&lt;em&gt;Why was the SQL Server loader documentation reverted in QueryWeaver, and who decided?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Commit &lt;a href="https://github.com/FalkorDB/QueryWeaver/commit/819b96a940d235a1a555f00795f1d282d6f01a82" rel="noopener noreferrer"&gt;&lt;code&gt;819b96a&lt;/code&gt;&lt;/a&gt; reverts &lt;a href="https://github.com/FalkorDB/QueryWeaver/commit/6cc5a6770378d94cde2baadf843b4d6a6d1d47ce" rel="noopener noreferrer"&gt;&lt;code&gt;6cc5a67&lt;/code&gt;&lt;/a&gt;. Anchel135 reverted it, inside &lt;a href="https://github.com/FalkorDB/QueryWeaver/pull/719" rel="noopener noreferrer"&gt;PR #719&lt;/a&gt;, which Gal Shubeli merged. The reason, pulled from the revert message: the file belonged on the SQL Server branch, and on this branch it broke spellcheck.&lt;/p&gt;

&lt;p&gt;That is a real answer about a real repository in FalkorDB's own GitHub organisation. The graph work took &lt;strong&gt;tens of milliseconds&lt;/strong&gt;. You can open the links and check every word.&lt;/p&gt;

&lt;p&gt;Nobody wrote that down in a doc. The answer existed only as a path: a file, a commit that touched it, a commit that reverted that commit, the PR each commit belonged to, the people who authored and merged them, and a message two hops away from the file you asked about. That path is what we built HandsOnRepo to walk.&lt;/p&gt;

&lt;h2&gt;
  
  
  The problem: who knows what is not written anywhere
&lt;/h2&gt;

&lt;p&gt;Every engineering organisation has the same unwritten knowledge. Who really owns the vector index code: not who is listed in CODEOWNERS, but who actually touches it. Who should review this PR. Why was that change undone, and who signed off. What breaks if one specific person leaves next month.&lt;/p&gt;

&lt;p&gt;None of that lives in documentation. It lives in &lt;strong&gt;commit history, review threads, merge events and revert messages&lt;/strong&gt;, spread across dozens of repositories. A new team member learns it by asking around for six months. An AI agent does not get six months.&lt;/p&gt;

&lt;p&gt;Retrieval over documents does not fix this. The questions are multi-hop: file to commits to people to reviews to PRs to comments to who merged to what reverted it. A chunk of text does not hold a path. A graph does.&lt;/p&gt;

&lt;h2&gt;
  
  
  The idea
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;HandsOnRepo&lt;/strong&gt; takes a public GitHub organisation name, builds that organisation's company brain as a graph inside FalkorDB, and lets you ask it questions that only a graph can answer. Every answer shows the tool it called, the graph time, the sources as real GitHub links, the exact subgraph it traversed, and the Cypher that ran.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fidsl3rn3kw9ybwt2urb0.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fidsl3rn3kw9ybwt2urb0.gif" alt="Opening the FalkorDB organisation: the overview graph of repositories and people appears before you type anything" width="760" height="428"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We built it for &lt;strong&gt;Graph Hacks: Context for AI Agents&lt;/strong&gt;, the WeMakeDevs and FalkorDB hackathon, for three tracks: Company Brain, Agents That Act on Connected Data, and Agent Memory and Coordination.&lt;/p&gt;

&lt;p&gt;One decision shaped everything else: &lt;strong&gt;no fictional company&lt;/strong&gt;. Many demos run on an invented company with a few dozen hand-written nodes, so nobody watching can verify an answer. So the demo brain is FalkorDB's own organisation: 8 repositories, 21k nodes, 73k edges, every person real, every PR number clickable.&lt;/p&gt;

&lt;h2&gt;
  
  
  Watch the demo
&lt;/h2&gt;

&lt;p&gt;Under five minutes: FalkorDB's org, a live build on a repository we had never opened, and the MCP side.&lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/kDNr_3gpCQU" width="710" height="399"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  What is in the graph
&lt;/h2&gt;

&lt;p&gt;Ingestion pulls from two places: the GitHub GraphQL API for PRs, issues, reviews, comments and releases, and bare git clones for commit history and the files each commit touched. Repositories are fetched in parallel, so a mid-sized organisation takes about three minutes on a laptop, a little longer on free hosting.&lt;/p&gt;

&lt;p&gt;Then FalkorDB does the second half of the work. After ingestion, Cypher derives the relationships the questions actually need. This is the real model, drawn from the schema the backend creates:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2Fmithuna2357%2FFalkorDB%2Fmain%2Fdocs%2Fimages%2Fgraph-model-lr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2Fmithuna2357%2FFalkorDB%2Fmain%2Fdocs%2Fimages%2Fgraph-model-lr.png" alt="The HandsOnRepo graph model: nodes read from GitHub, edges derived inside FalkorDB, and the Episode and Action nodes written by agents" width="799" height="387"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;REVERTS&lt;/code&gt; edges are parsed from commit messages and PR bodies. &lt;code&gt;TOUCHES&lt;/code&gt; aggregates every commit a person made to a file. &lt;code&gt;REVIEWED_FOR&lt;/code&gt; points from reviewer to author and is the input to PageRank. Owner &lt;code&gt;Fact&lt;/code&gt; nodes carry &lt;code&gt;SUPERSEDES&lt;/code&gt; history, so when ownership changes the old answer is kept, not overwritten.&lt;/p&gt;

&lt;p&gt;Two labels belong to the agents rather than GitHub. An &lt;strong&gt;Episode&lt;/strong&gt; is a remembered answer, with edges to the sources it cited. An &lt;strong&gt;Action&lt;/strong&gt; is something an agent did, for example a triage comment posted on a new issue, linked to the issue, the people it suggested and the evidence it used.&lt;/p&gt;

&lt;p&gt;One graph per organisation, &lt;code&gt;brain_&amp;lt;org&amp;gt;&lt;/code&gt;, in a single FalkorDB instance. Switching tenant is &lt;code&gt;select_graph&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  How an answer is produced
&lt;/h2&gt;

&lt;p&gt;The chat agent is a tool-calling loop over &lt;strong&gt;18 graph tools&lt;/strong&gt;, with OpenAI &lt;code&gt;gpt-5-mini&lt;/code&gt; as the model. The model does not answer questions. It picks a tool, and the tool runs Cypher or a FalkorDB algorithm. The model only phrases what comes back. A question costs about half a cent, and the graph part takes 2 to 90 milliseconds.&lt;/p&gt;

&lt;p&gt;Take &lt;em&gt;"Who should review a change under lib in falkordb-browser, and why them?"&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fqn2nn56lyjrqr36o5hnw.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fqn2nn56lyjrqr36o5hnw.gif" alt="Asking who should review a change under lib in falkordb-browser: the ranked people, their sources and the graph path appear" width="760" height="428"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The agent calls &lt;code&gt;who_knows&lt;/code&gt;. It matches the files, follows &lt;code&gt;TOUCHES&lt;/code&gt; and &lt;code&gt;REVIEWED&lt;/code&gt; edges to people, and ranks:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight cypher"&gt;&lt;code&gt;&lt;span class="k"&gt;MATCH&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="py"&gt;p:&lt;/span&gt;&lt;span class="n"&gt;Person&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="ss"&gt;[&lt;/span&gt;&lt;span class="py"&gt;t:&lt;/span&gt;&lt;span class="n"&gt;TOUCHES&lt;/span&gt;&lt;span class="ss"&gt;]&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="py"&gt;f:&lt;/span&gt;&lt;span class="n"&gt;File&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;f.key&lt;/span&gt; &lt;span class="ow"&gt;IN&lt;/span&gt; &lt;span class="n"&gt;$files&lt;/span&gt; &lt;span class="ow"&gt;AND&lt;/span&gt; &lt;span class="ow"&gt;NOT&lt;/span&gt; &lt;span class="nf"&gt;coalesce&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="n"&gt;p.is_bot&lt;/span&gt;&lt;span class="ss"&gt;,&lt;/span&gt; &lt;span class="k"&gt;false&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;WITH&lt;/span&gt; &lt;span class="n"&gt;p&lt;/span&gt;&lt;span class="ss"&gt;,&lt;/span&gt; &lt;span class="nf"&gt;sum&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="n"&gt;t.count&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;commits&lt;/span&gt;&lt;span class="ss"&gt;,&lt;/span&gt; &lt;span class="nf"&gt;count&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="k"&gt;DISTINCT&lt;/span&gt; &lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;files&lt;/span&gt;&lt;span class="ss"&gt;,&lt;/span&gt; &lt;span class="nf"&gt;max&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="n"&gt;t.last&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;last&lt;/span&gt;
&lt;span class="k"&gt;OPTIONAL&lt;/span&gt; &lt;span class="k"&gt;MATCH&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="n"&gt;p&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="ss"&gt;[&lt;/span&gt;&lt;span class="nc"&gt;:REVIEWED&lt;/span&gt;&lt;span class="ss"&gt;]&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="py"&gt;pr:&lt;/span&gt;&lt;span class="n"&gt;PR&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="ss"&gt;[&lt;/span&gt;&lt;span class="nc"&gt;:TOUCHED&lt;/span&gt;&lt;span class="ss"&gt;]&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="py"&gt;f2:&lt;/span&gt;&lt;span class="n"&gt;File&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;f2.key&lt;/span&gt; &lt;span class="ow"&gt;IN&lt;/span&gt; &lt;span class="n"&gt;$files&lt;/span&gt;
&lt;span class="k"&gt;WITH&lt;/span&gt; &lt;span class="n"&gt;p&lt;/span&gt;&lt;span class="ss"&gt;,&lt;/span&gt; &lt;span class="n"&gt;commits&lt;/span&gt;&lt;span class="ss"&gt;,&lt;/span&gt; &lt;span class="n"&gt;files&lt;/span&gt;&lt;span class="ss"&gt;,&lt;/span&gt; &lt;span class="n"&gt;last&lt;/span&gt;&lt;span class="ss"&gt;,&lt;/span&gt; &lt;span class="nf"&gt;count&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="k"&gt;DISTINCT&lt;/span&gt; &lt;span class="n"&gt;pr&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;reviews&lt;/span&gt;
&lt;span class="k"&gt;RETURN&lt;/span&gt; &lt;span class="n"&gt;p&lt;/span&gt;&lt;span class="ss"&gt;,&lt;/span&gt; &lt;span class="n"&gt;commits&lt;/span&gt;&lt;span class="ss"&gt;,&lt;/span&gt; &lt;span class="n"&gt;files&lt;/span&gt;&lt;span class="ss"&gt;,&lt;/span&gt; &lt;span class="n"&gt;last&lt;/span&gt;&lt;span class="ss"&gt;,&lt;/span&gt; &lt;span class="n"&gt;reviews&lt;/span&gt;
&lt;span class="k"&gt;ORDER&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="n"&gt;commits&lt;/span&gt; &lt;span class="k"&gt;DESC&lt;/span&gt;&lt;span class="ss"&gt;,&lt;/span&gt; &lt;span class="n"&gt;reviews&lt;/span&gt; &lt;span class="k"&gt;DESC&lt;/span&gt; &lt;span class="k"&gt;LIMIT&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Then it breaks ties with a global score:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight cypher"&gt;&lt;code&gt;&lt;span class="k"&gt;CALL&lt;/span&gt; &lt;span class="n"&gt;algo.pageRank&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'Person'&lt;/span&gt;&lt;span class="ss"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'REVIEWED_FOR'&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt; &lt;span class="k"&gt;YIELD&lt;/span&gt; &lt;span class="n"&gt;node&lt;/span&gt;&lt;span class="ss"&gt;,&lt;/span&gt; &lt;span class="n"&gt;score&lt;/span&gt;
&lt;span class="k"&gt;RETURN&lt;/span&gt; &lt;span class="n"&gt;node.key&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;key&lt;/span&gt;&lt;span class="ss"&gt;,&lt;/span&gt; &lt;span class="n"&gt;score&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;The final ranking is &lt;code&gt;commits_on_topic + 2 * reviews_on_topic + 40 * PageRank(reviewer -&amp;gt; author)&lt;/code&gt;. For this question it puts &lt;strong&gt;Anchel135&lt;/strong&gt; first: 210 commits touching 64 files under &lt;code&gt;lib&lt;/code&gt;, 26 reviews on PRs that touched those files. The ranking is the graph's, not the model's guess.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1zrf16124y46r912nwa0.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1zrf16124y46r912nwa0.jpg" alt="The same reviewer question in the app: answer and sources on the left, Cypher below, the traversed path on the right" width="800" height="371"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The revert question from the top of this post runs &lt;code&gt;reverts&lt;/code&gt; and &lt;code&gt;decision_trail&lt;/code&gt;. One &lt;code&gt;MATCH (a)-[:REVERTS]-&amp;gt;(b)&lt;/code&gt; plus optional hops to authors, parent PRs, closed issues and comment threads, ordered by time.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fi1i4d5rl4kfra727tcao.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fi1i4d5rl4kfra727tcao.gif" alt="Asking why the SQL Server loader documentation was reverted in QueryWeaver, with the Cypher that ran expanded" width="600" height="338"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And the one every maintainer dreads. &lt;em&gt;"What happens if Guy Korland leaves? Who could cover?"&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F554rxkrw7kgfnouq968v.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F554rxkrw7kgfnouq968v.gif" alt="Asking what happens if Guy Korland leaves: sole-owned files, dominated directories, open work, and who could cover each area" width="600" height="338"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;283 files touched, 145 that nobody else has ever touched, 10 open PRs, 18 assigned issues&lt;/strong&gt;, and for each area, the collaborators who could cover it. That is a bus factor with names. It comes from a negative existence check over the person-to-file graph (files with exactly one human &lt;code&gt;TOUCHES&lt;/code&gt; edge) plus nearest neighbours in the &lt;code&gt;COLLABORATES&lt;/code&gt; projection. Neither exists in a document store.&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;What the graph does&lt;/th&gt;
&lt;th&gt;Why not SQL or vectors&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Who should review X?&lt;/td&gt;
&lt;td&gt;3-hop join across files, commits, reviews, then PageRank&lt;/td&gt;
&lt;td&gt;PageRank is iterative and global; vectors do not know who touched what&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Why was this reverted?&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;REVERTS&lt;/code&gt; edge, then authors, PRs, mergers, comments, in time order&lt;/td&gt;
&lt;td&gt;The reason sits on a comment two hops away from what you asked about&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;What if this person leaves?&lt;/td&gt;
&lt;td&gt;Files with one &lt;code&gt;TOUCHES&lt;/code&gt; edge, &lt;code&gt;COLLABORATES&lt;/code&gt; neighbours as successors&lt;/td&gt;
&lt;td&gt;A negative existence check over a bipartite graph&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Who are the trusted reviewers?&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;algo.pageRank&lt;/code&gt; over &lt;code&gt;REVIEWED_FOR&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;A count of reviews is GROUP BY; who reviews the reviewers is PageRank&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;If you remove FalkorDB, nothing works. There is no cache and no fallback store. The graph is the product.&lt;/p&gt;
&lt;h2&gt;
  
  
  An org we had never touched
&lt;/h2&gt;

&lt;p&gt;A fair question for any demo: does it only work on data you prepared? So we typed &lt;code&gt;google-ai-edge&lt;/code&gt;, an organisation we had never opened, and clicked Build brain.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fu37vm0qlyd0xgycjx0g4.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fu37vm0qlyd0xgycjx0g4.gif" alt="Pasting a repository link and building its brain live on the site, with the ingestion log" width="760" height="428"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;212 seconds later: 36,514 nodes, 112,095 edges&lt;/strong&gt;, all eight of its most active repositories. The suggested questions on the empty chat were generated from that org's own graph, not canned: its busiest area, its most active person, a real PR to trace. (The live site runs on FalkorDB Cloud's 100 MB free tier, which already holds the FalkorDB org, so in the video we build just the Gallery repository there: paste a repository link instead of an org name and HandsOnRepo builds only that repo.)&lt;/p&gt;

&lt;p&gt;&lt;em&gt;"Who should review a change to the Gallery app?"&lt;/em&gt; Kangning Chen, 382 commits on 104 Gallery files, last touched two days earlier. Then Zichuan Wei, 311 commits on 84 files.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;"What happens if Sebastian Schmidt leaves?"&lt;/em&gt; 877 files touched, 695 that only he has touched. On an org we had opened four minutes earlier.&lt;/p&gt;
&lt;h2&gt;
  
  
  Four things the graph told us about FalkorDB
&lt;/h2&gt;

&lt;p&gt;All of this comes from public data, and every line links to the evidence. It is the kind of thing a team knows in fragments and rarely sees in one place.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. One person holds 145 files nobody else has touched.&lt;/strong&gt; &lt;a href="https://github.com/gkorland" rel="noopener noreferrer"&gt;Guy Korland&lt;/a&gt; has touched 283 files across the organisation, 145 of them with no other human commit ever, plus 10 open PRs and 18 assigned issues. The graph also names who could cover each directory, so this is a to-do list, not a scare.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. A revert whose reason lived three hops away.&lt;/strong&gt; Commit &lt;a href="https://github.com/FalkorDB/QueryWeaver/commit/819b96a940d235a1a555f00795f1d282d6f01a82" rel="noopener noreferrer"&gt;&lt;code&gt;819b96a&lt;/code&gt;&lt;/a&gt; in QueryWeaver reverted the SQL Server loader docs. The commit message explains it; the context (the SQL Server branch, the spellcheck failures, who merged &lt;a href="https://github.com/FalkorDB/QueryWeaver/pull/719" rel="noopener noreferrer"&gt;PR #719&lt;/a&gt;) is spread over the commit, the PR and its comment thread. No single page on GitHub shows that path.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. The vector index has a clear owner and a clear backup.&lt;/strong&gt; For &lt;code&gt;graph/src/index&lt;/code&gt;, &lt;a href="https://github.com/DvirDukhan" rel="noopener noreferrer"&gt;Dvir Dukhan&lt;/a&gt; has 186 commits on 30 matching files and 22 reviews on PRs touching them; &lt;a href="https://github.com/AviAvni" rel="noopener noreferrer"&gt;Avi Avni&lt;/a&gt; has 93 commits on 51 files. Codex reached the same pair through MCP without being told.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Bots would top every ranking if you let them.&lt;/strong&gt; Of the accounts the ingestion saw in the FalkorDB organisation, 225 were bots or shared automation identities. Dependabot, Copilot, CodeRabbit and release bots author and comment more than most humans. Flagging them is the difference between a credible answer and a silly one.&lt;/p&gt;
&lt;h2&gt;
  
  
  Memory and coordination: three agents, one graph
&lt;/h2&gt;

&lt;p&gt;Every answer is stored back into FalkorDB as an &lt;strong&gt;Episode&lt;/strong&gt; citing its sources. Before the next question the agent runs a full-text query over memory and shows matches as "Remembered from earlier". Memory survives restarts because it is in the graph, not in a process.&lt;/p&gt;

&lt;p&gt;Three agents share that memory with no message passing between them: the &lt;strong&gt;chat agent&lt;/strong&gt; in the web app, a &lt;strong&gt;triage agent&lt;/strong&gt; that fires on a GitHub webhook when an issue is opened, finds the likely owner through the graph, posts a comment with the evidence and leaves an &lt;code&gt;Action&lt;/code&gt; node behind, and &lt;strong&gt;any MCP client&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The MCP server exposes the same 18 tools and works in Claude Desktop, Claude Code, Cursor, Codex, Antigravity, VS Code, Gemini CLI and Cline:&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;"handsonrepo"&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;"/path/to/.venv/bin/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;"/path/to/mcp/server.py"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"env"&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;"BRAIN_DEFAULT_ORG"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"FalkorDB"&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;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fcv1ju9yxnupr0oxgrdcz.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fcv1ju9yxnupr0oxgrdcz.jpg" alt="The Connect MCP dialog with per-client instructions and the generated config" width="800" height="371"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The first real task we gave it, from Codex: &lt;em&gt;"Use the handsonrepo MCP tools. I am about to change the vector index code under graph/src/index in FalkorDB/FalkorDB."&lt;/em&gt; Codex called &lt;code&gt;who_knows&lt;/code&gt;, &lt;code&gt;reverts&lt;/code&gt;, &lt;code&gt;decision_trail&lt;/code&gt; and &lt;code&gt;remember&lt;/code&gt;, then wrote a &lt;code&gt;PR_NOTES.md&lt;/code&gt; naming &lt;strong&gt;Dvir Dukhan&lt;/strong&gt; as primary reviewer (he approved and merged the vector fix, PR #3087) and &lt;strong&gt;Avi Avni&lt;/strong&gt; as backup (owner of &lt;code&gt;graph/src/index/mod.rs&lt;/code&gt;). It stored the decision as an Episode tagged &lt;code&gt;mcp&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fl7vmqnma8ab88xv3sqdi.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fl7vmqnma8ab88xv3sqdi.gif" alt="Codex working through the HandsOnRepo MCP tools and writing PR_NOTES.md" width="600" height="338"&gt;&lt;/a&gt;&lt;br&gt;
 We opened the web app and the chat agent showed it as "Remembered from earlier". One graph, two clients, shared state, no glue code.&lt;/p&gt;
&lt;h2&gt;
  
  
  What broke, and what we learned
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Free text-to-Cypher was not trustworthy enough for the key questions.&lt;/strong&gt; Early on we let the model write Cypher from scratch. It invented relationship names, forgot the bot filter, and produced a different query for the same question on every run. So the 18 tools are tested Cypher with parameters, the model only chooses and phrases, and a read-only &lt;code&gt;run_cypher&lt;/code&gt; is kept as a last resort with a guard that refuses writes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;FalkorDB has no undirected &lt;code&gt;shortestPath&lt;/code&gt;.&lt;/strong&gt; &lt;code&gt;find_path&lt;/code&gt; needed to connect a person to a PR through edges that point both ways. We used &lt;code&gt;algo.SPpaths&lt;/code&gt; with &lt;code&gt;relDirection: 'both'&lt;/code&gt; over 15 relationship types instead.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;EXISTS&lt;/code&gt; subqueries are not supported.&lt;/strong&gt; Our first "files only this person touched" query used one. We rewrote it as &lt;code&gt;WITH f, collect(p) AS ps WHERE size(ps) = 1&lt;/code&gt;, which turned out to be clearer anyway.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A 100 MB free-tier instance holds a 21k-node org at about 83 MB.&lt;/strong&gt; Indexes and comment bodies are the memory hogs, not nodes and edges. Trim comment text and be deliberate about full-text indexes if you want two orgs on one small instance.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Git identities are not GitHub users.&lt;/strong&gt; Commit authors arrive as names and emails, often GitHub's noreply addresses. We fold them into GitHub logins by email, name and noreply pattern. The ones we cannot fold stay as names without handles and are never shown as mentions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Bots are 10 to 30 percent of accounts.&lt;/strong&gt; dependabot, copilot, coderabbit and friends would top every ranking. Every ownership, review and trail query excludes &lt;code&gt;is_bot&lt;/code&gt;.&lt;/p&gt;
&lt;h2&gt;
  
  
  By the numbers
&lt;/h2&gt;

&lt;p&gt;Measured on the FalkorDB organisation, on a laptop.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Graph&lt;/td&gt;
&lt;td&gt;21,181 nodes, 73,700 edges, 8 repositories&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Comment threads, reviews, merges&lt;/td&gt;
&lt;td&gt;8,903 threads, 2,722 reviews, 1,238 merged-by edges&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Full ingestion&lt;/td&gt;
&lt;td&gt;about 3 minutes, repos fetched in parallel&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Incremental sync&lt;/td&gt;
&lt;td&gt;about 7 seconds&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Graph time per tool call&lt;/td&gt;
&lt;td&gt;2 to 90 ms&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cost per answer&lt;/td&gt;
&lt;td&gt;about half a cent with gpt-5-mini&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GitHub API budget per org&lt;/td&gt;
&lt;td&gt;under 100 of 5,000 hourly points&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;h2&gt;
  
  
  Run it in three commands
&lt;/h2&gt;

&lt;p&gt;You need Docker, Python 3.12+, Node 20+, a GitHub token with &lt;code&gt;public_repo&lt;/code&gt; scope and an OpenAI key in &lt;code&gt;backend/.env&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;&lt;span class="c"&gt;# 1. FalkorDB, with its browser on :3000&lt;/span&gt;
docker run &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="nt"&gt;--name&lt;/span&gt; falkordb &lt;span class="nt"&gt;-p&lt;/span&gt; 6379:6379 &lt;span class="nt"&gt;-p&lt;/span&gt; 3000:3000 falkordb/falkordb:latest

&lt;span class="c"&gt;# 2. Backend, then build a brain&lt;/span&gt;
pip &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-r&lt;/span&gt; backend/requirements.txt &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;cd &lt;/span&gt;backend &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; python &lt;span class="nt"&gt;-m&lt;/span&gt; app.ingest FalkorDB &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; python &lt;span class="nt"&gt;-m&lt;/span&gt; uvicorn app.main:app &lt;span class="nt"&gt;--port&lt;/span&gt; 8000

&lt;span class="c"&gt;# 3. Frontend&lt;/span&gt;
&lt;span class="nb"&gt;cd &lt;/span&gt;frontend &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;echo &lt;/span&gt;&lt;span class="nv"&gt;BACKEND_URL&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;http://localhost:8000 &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; .env.local &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; npm run dev &lt;span class="nt"&gt;--&lt;/span&gt; &lt;span class="nt"&gt;-p&lt;/span&gt; 3001
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Open &lt;a href="http://localhost:3001" rel="noopener noreferrer"&gt;http://localhost:3001&lt;/a&gt;, type an organisation name, click Build brain.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F6tceizkig6ji2y5p3r4y.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F6tceizkig6ji2y5p3r4y.jpg" alt="The HandsOnRepo landing page with existing brains and the Build brain input" width="800" height="371"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Stack: FalkorDB (Cypher, PageRank, betweenness, label propagation, full-text indexes, one graph per org), Python FastAPI, Next.js with a force graph, an MCP server, deployed on FalkorDB Cloud, Render and Vercel.&lt;/p&gt;
&lt;h2&gt;
  
  
  Try it on your own org
&lt;/h2&gt;

&lt;p&gt;The live app is at &lt;strong&gt;&lt;a href="https://handsonrepo.vercel.app" rel="noopener noreferrer"&gt;handsonrepo.vercel.app&lt;/a&gt;&lt;/strong&gt;. Open the FalkorDB brain and ask the questions above, or build your own and ask it something only you know the answer to. That is the whole point: if the answer is wrong, you will know, and so will we.&lt;/p&gt;

&lt;p&gt;Two practical notes. The free FalkorDB Cloud instance behind the demo is 100 MB and the two brains already fill about 95 percent of it, so to build a new one live, pick a small organisation or paste a single repository link (github.com/owner/repo). And the public demo is capped at 150 questions a day so the OpenAI bill stays sane. For unlimited use, run it locally with the three commands above.&lt;/p&gt;

&lt;p&gt;The code is at &lt;strong&gt;&lt;a href="https://github.com/mithuna2357/FalkorDB" rel="noopener noreferrer"&gt;github.com/mithuna2357/FalkorDB&lt;/a&gt;&lt;/strong&gt;, MIT licensed. If it earned it, a star helps other people find it.&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/mithuna2357" rel="noopener noreferrer"&gt;
        mithuna2357
      &lt;/a&gt; / &lt;a href="https://github.com/mithuna2357/FalkorDB" rel="noopener noreferrer"&gt;
        FalkorDB
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Turn any public GitHub org into a company brain in FalkorDB. Ask who owns what, who should review, why a change was reverted, what breaks if someone leaves. Every answer shows its sources, graph path and Cypher. Chat UI, MCP server, memory across sessions. Built for Graph Hacks 2026.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;p&gt;
  &lt;a rel="noopener noreferrer" href="https://github.com/mithuna2357/FalkorDB/frontend/public/logo-mark.png"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2Fmithuna2357%2FFalkorDB%2FHEAD%2Ffrontend%2Fpublic%2Flogo-mark.png" alt="HandsOnRepo" width="96"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;HandsOnRepo&lt;/h1&gt;
&lt;/div&gt;

&lt;p&gt;
  Point it at any public GitHub organisation. It builds that organisation's company brain as a graph inside FalkorDB
  then you ask it who owns what, who knows what, and why things were decided. Every answer shows its sources
  the path through the graph that produced it, and the Cypher that ran.
&lt;/p&gt;

&lt;p&gt;
  Built for &lt;b&gt;Graph Hacks: Context for AI Agents&lt;/b&gt;, a WeMakeDevs x FalkorDB hackathon, October 2026.&lt;br&gt;
  Tracks entered: &lt;b&gt;Company Brain&lt;/b&gt;, &lt;b&gt;Agents That Act on Connected Data&lt;/b&gt;, &lt;b&gt;Agent Memory and Coordination&lt;/b&gt;.
&lt;/p&gt;

&lt;p&gt;
  &lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/1358519f3e175b463e7f9675c8d82235dbd86dffbe5eb4035b51838020b4f631/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f677261706825323064617461626173652d46616c6b6f7244422d4646363642333f7374796c653d666c61742d737175617265"&gt;&lt;img alt="FalkorDB" src="https://camo.githubusercontent.com/1358519f3e175b463e7f9675c8d82235dbd86dffbe5eb4035b51838020b4f631/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f677261706825323064617461626173652d46616c6b6f7244422d4646363642333f7374796c653d666c61742d737175617265"&gt;&lt;/a&gt;
  &lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/f4e91a10cdc5e55dac57c06fcc324f0e593283f5f9f8a6af3ab4c530b9ec1f0f/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f646174612d7265616c2532307075626c69632532304769744875622532306f7267732d3339643335333f7374796c653d666c61742d737175617265"&gt;&lt;img alt="Real data" src="https://camo.githubusercontent.com/f4e91a10cdc5e55dac57c06fcc324f0e593283f5f9f8a6af3ab4c530b9ec1f0f/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f646174612d7265616c2532307075626c69632532304769744875622532306f7267732d3339643335333f7374796c653d666c61742d737175617265"&gt;&lt;/a&gt;
  &lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/e9f2bdad2924d1bc85956d3afa644c8b9aa42e2491f5b01fc17c4e35cb420f5c/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6261636b656e642d507974686f6e253230332e3132253230253242253230466173744150492d3337373641423f7374796c653d666c61742d737175617265"&gt;&lt;img alt="Python" src="https://camo.githubusercontent.com/e9f2bdad2924d1bc85956d3afa644c8b9aa42e2491f5b01fc17c4e35cb420f5c/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6261636b656e642d507974686f6e253230332e3132253230253242253230466173744150492d3337373641423f7374796c653d666c61742d737175617265"&gt;&lt;/a&gt;
  &lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/94df1a4a66baa7684a73d11be0a019d735a57c80875fc33320fec2fb9ac15846/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f66726f6e74656e642d4e6578742e6a7325323031352d3030303030303f7374796c653d666c61742d737175617265"&gt;&lt;img alt="Next.js" src="https://camo.githubusercontent.com/94df1a4a66baa7684a73d11be0a019d735a57c80875fc33320fec2fb9ac15846/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f66726f6e74656e642d4e6578742e6a7325323031352d3030303030303f7374796c653d666c61742d737175617265"&gt;&lt;/a&gt;
  &lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/fe6bd07c8661f0b34546d4cf5100117a7c9d5aef1de910380debecb7d6674644/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4d43502d3138253230746f6f6c732d3763396366663f7374796c653d666c61742d737175617265"&gt;&lt;img alt="MCP" src="https://camo.githubusercontent.com/fe6bd07c8661f0b34546d4cf5100117a7c9d5aef1de910380debecb7d6674644/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4d43502d3138253230746f6f6c732d3763396366663f7374796c653d666c61742d737175617265"&gt;&lt;/a&gt;
  &lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/28b92ce3d7f2d6984cabfabc120bcc3fda2fcccc9bd6b7fbed24902bb7fef3f9/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4d49542d6c69676874677265793f7374796c653d666c61742d737175617265"&gt;&lt;img alt="License" src="https://camo.githubusercontent.com/28b92ce3d7f2d6984cabfabc120bcc3fda2fcccc9bd6b7fbed24902bb7fef3f9/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4d49542d6c69676874677265793f7374796c653d666c61742d737175617265"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
  &lt;a rel="noopener noreferrer" href="https://github.com/mithuna2357/FalkorDB/docs/images/answer-reviewers.jpg"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2Fmithuna2357%2FFalkorDB%2FHEAD%2Fdocs%2Fimages%2Fanswer-reviewers.jpg" alt="HandsOnRepo answering who should review the vector index code, with sources and the graph path" width="920"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;A real question against FalkorDB's own organisation. Left: the answer, its sources and the Cypher that ran. Right: the path through the graph. Graph time 171 ms; the rest is the language model.&lt;/p&gt;




&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Demo&lt;/h2&gt;

&lt;/div&gt;

&lt;p&gt;
  &lt;a href="https://youtu.be/kDNr_3gpCQU" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2Fmithuna2357%2FFalkorDB%2FHEAD%2Fdocs%2Fimages%2Fdemo-video.jpg" alt="Watch the HandsOnRepo demo video on YouTube" width="820"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;&lt;div class="table-wrapper-paragraph"&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;table&gt;

&lt;thead&gt;

&lt;tr&gt;


&lt;/tr&gt;

&lt;/thead&gt;

&lt;tbody&gt;

&lt;tr&gt;

&lt;td&gt;Demo video&lt;/td&gt;

&lt;td&gt;
&lt;br&gt;
&lt;a href="https://youtu.be/kDNr_3gpCQU" rel="nofollow noopener noreferrer"&gt;youtu.be/kDNr_3gpCQU&lt;/a&gt; (4 min 46 s)&lt;/td&gt;

&lt;/tr&gt;

&lt;tr&gt;

&lt;td&gt;Live app&lt;/td&gt;

&lt;td&gt;
&lt;br&gt;
&lt;a href="https://handsonrepo.vercel.app" rel="nofollow noopener noreferrer"&gt;handsonrepo.vercel.app&lt;/a&gt;, with the FalkorDB and google-ai-edge/gallery brains already built&lt;/td&gt;

&lt;/tr&gt;

&lt;tr&gt;

&lt;td&gt;Live API&lt;/td&gt;

&lt;td&gt;&lt;a href="https://handsonrepo-api.onrender.com/health" rel="nofollow noopener noreferrer"&gt;handsonrepo-api.onrender.com/health&lt;/a&gt;&lt;/td&gt;

&lt;/tr&gt;

&lt;tr&gt;

&lt;td&gt;Write-up&lt;/td&gt;

&lt;td&gt;&lt;a href="https://dev.to/chethan_vasthaw" rel="nofollow"&gt;dev.to post&lt;/a&gt;&lt;/td&gt;

&lt;/tr&gt;

&lt;/tbody&gt;

&lt;/table&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;

&lt;p&gt;The public demo is capped at…&lt;/p&gt;&lt;/div&gt;


&lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/mithuna2357/FalkorDB" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;


&lt;p&gt;HandsOnRepo is by team OrByte: &lt;strong&gt;Chethan Vasthaw Tippani&lt;/strong&gt; (&lt;a href="https://github.com/Chethan-4255" rel="noopener noreferrer"&gt;Chethan-4255&lt;/a&gt;) built the backend engine, the ingestion, the graph model, the agent and the MCP server. &lt;strong&gt;Mithuna Somireddy&lt;/strong&gt; (&lt;a href="https://github.com/mithuna2357" rel="noopener noreferrer"&gt;mithuna2357&lt;/a&gt;) built the frontend, the deployment and the docs. Built for Graph Hacks: Context for AI Agents, October 2026.&lt;/p&gt;

</description>
      <category>falkordb</category>
      <category>graphdatabase</category>
      <category>ai</category>
      <category>hackathon</category>
    </item>
  </channel>
</rss>
