<?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: Vivek Onkarnath Bharati</title>
    <description>The latest articles on DEV Community by Vivek Onkarnath Bharati (@vivekonkarnathbharati).</description>
    <link>https://dev.to/vivekonkarnathbharati</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%2F4190258%2Fa0425349-4d18-4383-be27-0e61c0fce53f.png</url>
      <title>DEV Community: Vivek Onkarnath Bharati</title>
      <link>https://dev.to/vivekonkarnathbharati</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/vivekonkarnathbharati"/>
    <language>en</language>
    <item>
      <title>How a 1st Year Student Built an Autonomous Incident Response Agent Using FalkorDB Graph Theory and AI Agents</title>
      <dc:creator>Vivek Onkarnath Bharati</dc:creator>
      <pubDate>Sat, 17 Oct 2026 10:10:19 +0000</pubDate>
      <link>https://dev.to/vivekonkarnathbharati/how-a-1st-year-student-built-an-autonomous-incident-response-agent-using-falkordb-graph-theory-and-4im4</link>
      <guid>https://dev.to/vivekonkarnathbharati/how-a-1st-year-student-built-an-autonomous-incident-response-agent-using-falkordb-graph-theory-and-4im4</guid>
      <description>&lt;p&gt;&lt;em&gt;By a 1st-Year Computer Science Student | Built for Graph Hacks: Context for AI Agents (WeMakeDevs &amp;amp; FalkorDB)&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  1. The 3:00 AM Cybersecurity Nightmare
&lt;/h2&gt;

&lt;p&gt;Picture this real-world scenario:&lt;/p&gt;

&lt;p&gt;At 3:14 AM on a Saturday, an automated alert fires in a bank’s Security Operations Center (SOC):&lt;br&gt;&lt;br&gt;
&lt;code&gt;🚨 Trojan.Generic reverse-shell detected on Web-Server-Public.&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;In 99% of enterprise environments today, two bad things happen:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;The Passive Trap:&lt;/strong&gt; The cloud security scanner logs a ticket in Jira and sends a Slack notification. But according to the &lt;em&gt;2024 CrowdStrike Global Threat Report&lt;/em&gt;, the average time for an adversary to move laterally from an initial breach to critical data (the "Breakout Time") is &lt;strong&gt;84 minutes&lt;/strong&gt;. The on-call security engineer is asleep. By the time they wake up and log in, 250,000 customer credit card records have already been exfiltrated.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Blunt-Force Outage:&lt;/strong&gt; A legacy automated script attempts to contain the threat by shutting down the internal network gateway. The attacker is blocked—but so is the company's online checkout system, causing &lt;strong&gt;$500,000 per hour in self-inflicted business downtime&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;When I read the challenge prompt for &lt;strong&gt;Track 01 ("Agents That Act on Connected Data")&lt;/strong&gt; in the WeMakeDevs &amp;amp; FalkorDB Graph Hacks, I asked myself:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Can we build an autonomous AI agent that traces multi-hop lateral movement in real time and surgically neutralizes the attack with **zero collateral business downtime&lt;/em&gt;&lt;em&gt;?&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The answer is &lt;strong&gt;BreachGraph&lt;/strong&gt;, and here is how I built it using &lt;strong&gt;FalkorDB&lt;/strong&gt; and &lt;strong&gt;Google Gemini&lt;/strong&gt;.&lt;/p&gt;

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




&lt;h2&gt;
  
  
  2. Why Relational SQL and Vector Databases Fail
&lt;/h2&gt;

&lt;p&gt;Before writing a single line of Cypher, I realized that conventional database paradigms fundamentally break down when solving this problem:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Why Relational SQL Fails:&lt;/strong&gt; In enterprise infrastructure, an attacker doesn't jump directly to a database. They move across servers, API gateways, configuration files, and credential keys:
&lt;code&gt;Server -&amp;gt; NETWORK -&amp;gt; Gateway -&amp;gt; STORES -&amp;gt; UserKey -&amp;gt; AUTHS -&amp;gt; Database&lt;/code&gt;
In SQL, answering &lt;em&gt;"Can host A reach database B within N arbitrary hops?"&lt;/em&gt; requires complex recursive Common Table Expressions (CTEs) or multiple nested &lt;code&gt;JOIN&lt;/code&gt;s that degrade rapidly in performance as the network expands.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Why Vector Databases (RAG) Fail:&lt;/strong&gt; Vector embeddings find &lt;em&gt;semantic textual similarity&lt;/em&gt;. A vector search can tell you that a Trojan is a type of malware, but it &lt;strong&gt;cannot calculate physical topological reachability&lt;/strong&gt;. It cannot verify whether a network socket can establish a TCP handshake across a security group.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Enter FalkorDB: Relationships as First-Class Citizens
&lt;/h3&gt;

&lt;p&gt;FalkorDB is an in-memory graph database built in C and Redis. Graph traversals execute in &lt;strong&gt;microseconds&lt;/strong&gt;, allowing an AI agent loop to query, simulate, and mutate network state on every single turn of its reasoning loop.&lt;/p&gt;




&lt;h2&gt;
  
  
  3. The Graph Data Model
&lt;/h2&gt;

&lt;p&gt;We modeled our enterprise infrastructure using a heterogeneous directed property graph:&lt;br&gt;
&lt;/p&gt;

&lt;pre data-lang="mermaid"&gt;&lt;code&gt;graph LR
    A["Server: Web-Server-Public&amp;lt;br/&amp;gt;(Infected)"] --&amp;gt;|CAN_NETWORK_ACCESS| B["Server: Internal-API-Gateway"]
    B --&amp;gt;|STORES_CREDENTIAL| K["UserKey: DB-Admin-Key"]
    K --&amp;gt;|AUTHENTICATES_TO| DB[("Database: Customer-CreditCard-DB&amp;lt;br/&amp;gt;(PCI-DSS Vault)")]

    SVC["Service: Checkout-Billing-Service&amp;lt;br/&amp;gt;($500k/hr Revenue)"] --&amp;gt;|DEPENDS_ON| B&lt;/code&gt;&lt;/pre&gt;



&lt;h3&gt;
  
  
  Nodes:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;(:Server {name, ip, tier, status})&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;(:Database {name, classification, records, status})&lt;/code&gt; — Tagged with &lt;code&gt;PCI-DSS&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;(:UserKey {name, role, permissions, status})&lt;/code&gt; — IAM credentials and API keys.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;(:Service {name, revenue_impact_per_hr, status})&lt;/code&gt; — Operational business services.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;(:Vulnerability {cve, severity, cvss})&lt;/code&gt; — CVE security metadata.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Relationships:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;(:Server)-[:CAN_NETWORK_ACCESS]-&amp;gt;(:Server)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;(:Server)-[:STORES_CREDENTIAL]-&amp;gt;(:UserKey)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;(:UserKey)-[:AUTHENTICATES_TO]-&amp;gt;(:Database)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;(:Service)-[:DEPENDS_ON {revenue_impact_per_hr}]-&amp;gt;(:Server)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Notice the key architectural innovation: &lt;strong&gt;We unified the Threat Graph with the Business Dependency Graph in the same database.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  4. The Algorithm: Formulating Remediation as a Minimum-Weight Cut (Min-Cut)
&lt;/h2&gt;

&lt;p&gt;In classical computer science, separating two nodes (an infected origin s and a sensitive target t) while minimizing the cost of severed edges is known as the &lt;strong&gt;Minimum-Weight Cut (Min-Cut) Problem&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Instead of guessing, our agent lets FalkorDB calculate the optimal cut dynamically:&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="n"&gt;path&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;shortestPath&lt;/span&gt;&lt;span class="ss"&gt;((&lt;/span&gt;&lt;span class="py"&gt;origin:&lt;/span&gt;&lt;span class="n"&gt;Server&lt;/span&gt; &lt;span class="ss"&gt;{&lt;/span&gt;&lt;span class="py"&gt;name:&lt;/span&gt; &lt;span class="n"&gt;$comp&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="o"&gt;*&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="o"&gt;..&lt;/span&gt;&lt;span class="m"&gt;5&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;vault:&lt;/span&gt;&lt;span class="n"&gt;Database&lt;/span&gt; &lt;span class="ss"&gt;{&lt;/span&gt;&lt;span class="py"&gt;name:&lt;/span&gt; &lt;span class="n"&gt;$db&lt;/span&gt;&lt;span class="ss"&gt;}))&lt;/span&gt;
&lt;span class="k"&gt;UNWIND&lt;/span&gt; &lt;span class="nf"&gt;nodes&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="n"&gt;path&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;candidate&lt;/span&gt;
&lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="nf"&gt;labels&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="n"&gt;candidate&lt;/span&gt;&lt;span class="ss"&gt;)[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="ss"&gt;]&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'Database'&lt;/span&gt; &lt;span class="ow"&gt;AND&lt;/span&gt; &lt;span class="n"&gt;candidate.name&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;$comp&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;dependent&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;:DEPENDS_ON&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="n"&gt;candidate&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;RETURN&lt;/span&gt; &lt;span class="n"&gt;candidate.name&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;cut_target&lt;/span&gt;&lt;span class="ss"&gt;,&lt;/span&gt;
       &lt;span class="nf"&gt;labels&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="n"&gt;candidate&lt;/span&gt;&lt;span class="ss"&gt;)[&lt;/span&gt;&lt;span class="mi"&gt;0&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;target_type&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="nf"&gt;coalesce&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="n"&gt;dependent.revenue_impact_per_hr&lt;/span&gt;&lt;span class="ss"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;0&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;collateral_damage_per_hr&lt;/span&gt;&lt;span class="ss"&gt;,&lt;/span&gt;
       &lt;span class="nf"&gt;collect&lt;/span&gt;&lt;span class="ss"&gt;(&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;dependent.name&lt;/span&gt;&lt;span class="ss"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'None'&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;disrupted_services&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;collateral_damage_per_hr&lt;/span&gt; &lt;span class="k"&gt;ASC&lt;/span&gt;
&lt;span class="k"&gt;LIMIT&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  What FalkorDB Evaluates in Real Time:
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Option A (Blunt Force):&lt;/strong&gt; Cut &lt;code&gt;Internal-API-Gateway&lt;/code&gt;.

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;Incoming operational dependencies:&lt;/em&gt; &lt;code&gt;Checkout-Billing-Service&lt;/code&gt; ($500,000/hr).&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Collateral Damage:&lt;/em&gt; &lt;strong&gt;$500,000.00/hr&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Option B (Surgical Cut):&lt;/strong&gt; Revoke &lt;code&gt;DB-Admin-Key&lt;/code&gt;.

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;Incoming operational dependencies:&lt;/em&gt; None ($0/hr).&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Collateral Damage:&lt;/em&gt; &lt;strong&gt;$0.00/hr&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;FalkorDB’s query engine returns Candidate B as the mathematically minimal cut. The agent autonomously selects Candidate B, revoking the credential key in FalkorDB:&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;k:&lt;/span&gt;&lt;span class="n"&gt;UserKey&lt;/span&gt; &lt;span class="ss"&gt;{&lt;/span&gt;&lt;span class="py"&gt;name:&lt;/span&gt; &lt;span class="n"&gt;$name&lt;/span&gt;&lt;span class="ss"&gt;})&lt;/span&gt;
&lt;span class="k"&gt;SET&lt;/span&gt; &lt;span class="n"&gt;k.status&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'REVOKED'&lt;/span&gt;
&lt;span class="k"&gt;WITH&lt;/span&gt; &lt;span class="n"&gt;k&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;k&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;r:&lt;/span&gt;&lt;span class="n"&gt;AUTHENTICATES_TO&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;d:&lt;/span&gt;&lt;span class="n"&gt;Database&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;DELETE&lt;/span&gt; &lt;span class="n"&gt;r&lt;/span&gt;
&lt;span class="k"&gt;RETURN&lt;/span&gt; &lt;span class="n"&gt;k.name&lt;/span&gt;&lt;span class="ss"&gt;,&lt;/span&gt; &lt;span class="n"&gt;k.status&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Result:&lt;/strong&gt; The attack vector is completely severed in 0.4 seconds, while checkout operations experience &lt;strong&gt;zero seconds of downtime&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  5. Architectural Lessons from the Hackathon Organizers
&lt;/h2&gt;

&lt;p&gt;Building this project taught me several invaluable software engineering lessons recommended directly in WeMakeDevs &amp;amp; FalkorDB's technical resources:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;A Fixed Tool Catalogue Beats Hallucinated Cypher:&lt;/strong&gt; Never let an LLM generate freeform database queries at runtime. It hallucinates syntax and introduces injection risks. Instead, write parameterized Cypher inside typed tool contracts and let the LLM select tools and fill validated parameters.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Validate Names Against the Graph First:&lt;/strong&gt; A model trained on millions of generic docs loves to assume an API gateway is named &lt;code&gt;api-gateway-service&lt;/code&gt;. By resolving names against FalkorDB before executing traversals, we eliminate hallucinations completely.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Power of the Contrast Test:&lt;/strong&gt; In our demo, we first triggered an alert on an isolated worker (&lt;code&gt;Analytics-Worker&lt;/code&gt;). The agent traversed the graph, discovered 0 paths to high-value assets, and &lt;strong&gt;actively chose restraint&lt;/strong&gt; (zero destructive mutations). Showing that the agent knows when &lt;em&gt;not&lt;/em&gt; to act proves it is genuinely reasoning over connected data.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Always Return the Path:&lt;/strong&gt; Never just return a conclusion. By querying &lt;code&gt;[n IN nodes(path) | n.name]&lt;/code&gt;, every answer displays the exact sequence of hops (&lt;code&gt;Web-Server-Public ➔ Internal-API-Gateway ➔ DB-Admin-Key ➔ Customer-CreditCard-DB&lt;/code&gt;).&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  6. Verification &amp;amp; What You See Live
&lt;/h2&gt;

&lt;p&gt;When running BreachGraph, you see the system working in real time across two interfaces:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Cinematic Terminal:&lt;/strong&gt; Powered by Python’s &lt;code&gt;rich&lt;/code&gt; library, showing animated spinners, blast radius comparison tables (Depth 1 vs. Depth 4), and dynamic trade-off matrices.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;FalkorDB Browser:&lt;/strong&gt; Watching the visual graph canvas live as the &lt;code&gt;[:AUTHENTICATES_TO]&lt;/code&gt; edge is severed and vanishes from the screen!&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Finally, the agent automatically exports a compliant digital forensic artifact (&lt;code&gt;forensic_incident_report.json&lt;/code&gt;) documenting the breached path, the nanosecond timestamp of the graph cut, and the calculation of &lt;strong&gt;$500,000/hr in preserved revenue&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;As a first-year CS student, building &lt;strong&gt;BreachGraph&lt;/strong&gt; showed me that the hardest questions in AI agents aren't about single records—they are about &lt;strong&gt;connections&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;By placing FalkorDB at the heart of our agent's decision loop, we turned what used to be a 4-hour human scramble into a 3-second autonomous response.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GitHub Repository:&lt;/strong&gt; &lt;a href="https://github.com/vivekonkarnathbharati/BreachGraph" rel="noopener noreferrer"&gt;https://github.com/vivekonkarnathbharati/BreachGraph&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;2-Minute Demo Video:&lt;/strong&gt; &lt;a href="https://youtu.be/EEV6qgF1sv4" rel="noopener noreferrer"&gt;https://youtu.be/EEV6qgF1sv4&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Built with ❤️ for &lt;strong&gt;WeMakeDevs &amp;amp; FalkorDB Graph Hacks 2026&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>falkordb</category>
      <category>ai</category>
      <category>cybersecurity</category>
      <category>python</category>
    </item>
  </channel>
</rss>
