<?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: Krish kumar Chhabra</title>
    <description>The latest articles on DEV Community by Krish kumar Chhabra (@krishchhabra25).</description>
    <link>https://dev.to/krishchhabra25</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%2F4191071%2F40126038-02e9-4f8b-809d-4534e341d4fb.jpg</url>
      <title>DEV Community: Krish kumar Chhabra</title>
      <link>https://dev.to/krishchhabra25</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/krishchhabra25"/>
    <language>en</language>
    <item>
      <title>Building GraphOps Brain: How FalkorDB Gives AI Agents a True Memory</title>
      <dc:creator>Krish kumar Chhabra</dc:creator>
      <pubDate>Sat, 17 Oct 2026 19:55:54 +0000</pubDate>
      <link>https://dev.to/krishchhabra25/building-graphops-brain-how-falkordb-gives-ai-agents-a-true-memory-471a</link>
      <guid>https://dev.to/krishchhabra25/building-graphops-brain-how-falkordb-gives-ai-agents-a-true-memory-471a</guid>
      <description>&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%2Fsoxnvzpxxmj69ejdmv3m.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%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fsoxnvzpxxmj69ejdmv3m.png" alt=" " width="799" height="372"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;GraphOps Brain dashboard showing service health, active incidents, and the main application interface.&lt;/p&gt;

&lt;p&gt;When a production system goes down at 3 AM, the difficult part isn't just finding the error. It's figuring out what caused it.&lt;/p&gt;

&lt;p&gt;Which service is responsible? What changed recently? Is another service affected? Have we dealt with the same issue before, and did we find a fix?&lt;/p&gt;

&lt;p&gt;These questions are connected. But an AI agent working with isolated documents or information from a single session can easily miss those connections. It might have the right information somewhere in its context, but that doesn't mean it understands how everything fits together.&lt;/p&gt;

&lt;p&gt;That was one of the problems I wanted to explore while building GraphOps Brain for the FalkorDB Hackathon.&lt;/p&gt;

&lt;p&gt;GraphOps Brain is an AI-powered reliability platform built around FalkorDB. The idea is to bring service relationships, incident history, company knowledge, and agent memory into one connected graph. Instead of relying only on an LLM to figure things out, the agent can query that graph, follow relationships, and use the results to investigate an incident.&lt;/p&gt;

&lt;p&gt;Here's how I approached the three hackathon tracks and where FalkorDB fits into the system.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Track 01: Agents That Act on Connected Data&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Incident response rarely happens in isolation. A problem in one service can affect several others, and the cause might be a deployment that happened somewhere else in the system.&lt;/p&gt;

&lt;p&gt;To represent those relationships, I modeled services, dependencies, deployments, and incidents as nodes in FalkorDB. Relationships such as DEPENDS_ON, CHANGED, and AFFECTED connect the relevant parts of the system.&lt;/p&gt;

&lt;p&gt;This gives the agent something more useful than a collection of logs or documents: a way to explore how different events and services relate to each other.&lt;/p&gt;

&lt;p&gt;When checkout-api goes down, for example, the agent can query the graph to look for recent deployments and trace the services involved. I use Cypher queries to retrieve this information and build an evidence path that connects the relevant entities.&lt;/p&gt;

&lt;p&gt;One example looks like this:&lt;/p&gt;

&lt;p&gt;Deploy-42 → Payment-Gateway → Checkout-API → Incident-2481&lt;/p&gt;

&lt;p&gt;The actual graph relationships show how these entities are connected, helping the agent investigate a problem using information it can retrieve from FalkorDB.&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%2Frlo4u6vza8xkni3xlocf.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%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Frlo4u6vza8xkni3xlocf.png" alt=" " width="800" height="268"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The Graph Explorer showing the path between the deployment, payment gateway, checkout service, and incident.&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%2F1e41j7sylqwzizds6tj2.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%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1e41j7sylqwzizds6tj2.png" alt=" " width="800" height="368"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The Run Detail page showing the investigation findings and the human approval step.&lt;/p&gt;

&lt;p&gt;The important part here is that the agent isn't expected to invent a root cause based on a text description alone. It can retrieve connected evidence from the graph and use that evidence during its investigation.&lt;/p&gt;

&lt;p&gt;Once it has enough context, it can look for a relevant past fix and propose a rollback for an engineer to review. The final decision remains with the human, rather than giving the agent unrestricted control over production.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Track 02: Agent Memory and Coordination&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I also wanted to address a limitation that comes up when building agents: what happens to everything the agent learns after a session ends?&lt;/p&gt;

&lt;p&gt;A conversation history can preserve what was said, but it doesn't necessarily give the agent a useful way to connect previous incidents with the services and fixes involved.&lt;/p&gt;

&lt;p&gt;In GraphOps Brain, I use FalkorDB to store two kinds of memory.&lt;/p&gt;

&lt;p&gt;Episodic memory records what happened during an incident. Procedural memory records how a problem was resolved or how a particular issue can be handled.&lt;/p&gt;

&lt;p&gt;These memories are connected to the relevant services through ABOUT relationships, so they aren't just standalone text entries. The graph can also show which entities a memory relates to.&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%2F12vxm6xqvmtm40ik6rsx.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%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F12vxm6xqvmtm40ik6rsx.png" alt=" " width="800" height="375"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The Agent Memory page showing a selected memory, its confidence score, and its linked entities.&lt;/p&gt;

&lt;p&gt;When another incident occurs, the agent can query the graph for relevant memories and use the results when deciding what to investigate or recommend next.&lt;/p&gt;

&lt;p&gt;I also implemented a simple confidence adjustment for verified successful fixes:&lt;/p&gt;

&lt;p&gt;confidence += (1 - confidence) * 0.2&lt;/p&gt;

&lt;p&gt;The intention is to increase confidence when a proposed fix is verified as successful, while making each subsequent increase smaller as the score gets higher. This is a simple heuristic, not a guarantee that the agent is correct, but it provides a starting point for recording successful outcomes and improving future recommendations.&lt;/p&gt;

&lt;p&gt;For me, this is where graph-based memory becomes particularly useful. The system can retain not only what happened, but also how that experience relates to the services it may need to investigate again.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Track 03: The Company Brain and Permission-Aware RAG&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The third part of GraphOps Brain focuses on company knowledge.&lt;/p&gt;

&lt;p&gt;Imagine an engineer asking, “What is the payment SDK migration policy?” A conventional retrieval pipeline might find a relevant document and pass it to the LLM. But finding a document is only part of the job. The system also needs to understand the context around it and whether the person asking the question should be allowed to see it.&lt;/p&gt;

&lt;p&gt;For this, I built a GraphRAG pipeline using FalkorDB.&lt;/p&gt;

&lt;p&gt;The retrieval process combines two steps. First, a full-text search finds relevant Document nodes. Then, the system expands through the graph to retrieve related context, such as the owner of the service described in a document.&lt;/p&gt;

&lt;p&gt;That additional context can make the answer more useful because the agent isn't working with the document alone.&lt;/p&gt;

&lt;p&gt;There is another requirement that matters just as much: access control.&lt;/p&gt;

&lt;p&gt;In GraphOps Brain, documents have visibility properties, such as workspace or team:payments. The retrieval query takes the user's permissions into account and filters out documents they aren't allowed to access before the retrieved context reaches the LLM.&lt;/p&gt;

&lt;p&gt;For example, when Krish, a member of the Core Platform team, asks about the payment SDK migration policy, the interface can show the answer alongside a warning that says “1 matching item hidden by permission.”&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%2Fipdfhsnfn8naki5y0n44.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%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fipdfhsnfn8naki5y0n44.png" alt=" " width="800" height="369"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The Knowledge Base showing the answer and the permission warning when Krish asks about the payment SDK migration policy.&lt;/p&gt;

&lt;p&gt;When Ananya, who belongs to the Payments team, asks the same question, the system can retrieve the relevant RFC that her permissions allow her to access.&lt;/p&gt;

&lt;p&gt;The important distinction is that retrieval isn't based only on which document matches the question. It also takes the user's access into account. That helps prevent restricted information from being included in the context sent to the model.&lt;/p&gt;

&lt;p&gt;The Guardrail: No LLM-Written Cypher&lt;/p&gt;

&lt;p&gt;Giving an AI agent access to a database introduces another challenge: how do you stop it from generating a query that performs an unintended or destructive operation?&lt;/p&gt;

&lt;p&gt;For example, a query such as MATCH (n) DETACH DELETE n could delete every node and its relationships in the selected graph. You don't want an LLM improvising database commands without proper controls.&lt;/p&gt;

&lt;p&gt;In GraphOps Brain, the LLM doesn't write Cypher queries directly.&lt;/p&gt;

&lt;p&gt;Instead, it interprets the user's request and selects from predefined, parameterized query templates. The project includes more than 40 query files, including templates such as Q01_blast_radius.cypher.&lt;/p&gt;

&lt;p&gt;A Cypher query template or the Python code that loads and executes predefined queries.&lt;/p&gt;

&lt;p&gt;This approach keeps query execution within a controlled set of operations. It also makes the database interactions easier to review and maintain because the query logic lives in the codebase rather than being generated from scratch for each request.&lt;/p&gt;

&lt;p&gt;It doesn't remove every security risk on its own, but it provides a clear boundary between the model's interpretation of a request and the database operations the application permits.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What I Learned Building GraphOps Brain&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Building GraphOps Brain gave me a practical way to explore how FalkorDB can support AI agents beyond basic retrieval.&lt;/p&gt;

&lt;p&gt;The same graph can represent service dependencies, connect incidents to past fixes, preserve memories across sessions, and help retrieve company knowledge with access controls.&lt;/p&gt;

&lt;p&gt;What I find most interesting is how these pieces work together. A graph isn't just a place to store relationships. Those relationships can become part of the information an agent uses to investigate a problem, explain its findings, and make a recommendation.&lt;/p&gt;

&lt;p&gt;There's still plenty of room to improve how these systems evaluate confidence, validate proposed fixes, and handle failures. But this project has been a valuable step toward building agents that work with connected, retrievable evidence rather than relying entirely on what an LLM generates.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Project Links&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Live Demo&lt;/strong&gt;: &lt;a href="https://graphops.krishchhabra.com" rel="noopener noreferrer"&gt;https://graphops.krishchhabra.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GitHub Repository&lt;/strong&gt;: &lt;a href="https://github.com/Krishkumarchhabra25/grapghops-hackathon" rel="noopener noreferrer"&gt;https://github.com/Krishkumarchhabra25/grapghops-hackathon&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;API Documentation&lt;/strong&gt;: &lt;a href="https://api.graphops.krishchhabra.com/docs" rel="noopener noreferrer"&gt;https://api.graphops.krishchhabra.com/docs&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Health Checks&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Live Health Check&lt;/strong&gt;: &lt;a href="https://api.graphops.krishchhabra.com/api/v1/health/live" rel="noopener noreferrer"&gt;https://api.graphops.krishchhabra.com/api/v1/health/live&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Readiness Health Check&lt;/strong&gt;: &lt;a href="https://api.graphops.krishchhabra.com/api/v1/health/ready" rel="noopener noreferrer"&gt;https://api.graphops.krishchhabra.com/api/v1/health/ready&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;My Portfolio&lt;/strong&gt;: &lt;a href="https://krishchhabra.com/" rel="noopener noreferrer"&gt;https://krishchhabra.com/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Thanks to the FalkorDB team and wemakedevs and  the Discord community for the support during the hackathon!&lt;/strong&gt;&lt;/p&gt;

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