<?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: Tirumalesh</title>
    <description>The latest articles on DEV Community by Tirumalesh (@tiru_120).</description>
    <link>https://dev.to/tiru_120</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%2F4169965%2Fa321b47a-3422-4aeb-a82c-79499a64b2f1.png</url>
      <title>DEV Community: Tirumalesh</title>
      <link>https://dev.to/tiru_120</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/tiru_120"/>
    <language>en</language>
    <item>
      <title>Understanding SentinelOps: Building an AI Security Agent with Organizational Memory</title>
      <dc:creator>Tirumalesh</dc:creator>
      <pubDate>Sat, 07 Nov 2026 13:50:24 +0000</pubDate>
      <link>https://dev.to/tiru_120/understanding-sentinelops-building-an-ai-security-agent-with-organizational-memory-4k74</link>
      <guid>https://dev.to/tiru_120/understanding-sentinelops-building-an-ai-security-agent-with-organizational-memory-4k74</guid>
      <description>&lt;h2&gt;
  
  
  Understanding SentinelOps: Building an AI Security Agent with Organizational Memory
&lt;/h2&gt;

&lt;p&gt;What if a security investigation could benefit from the lessons learned during previous incidents?&lt;/p&gt;

&lt;p&gt;Security teams regularly deal with alerts involving suspicious processes, unusual network activity, malware, and potential system compromises. Investigating each alert requires time, technical knowledge, and careful analysis. When a similar incident occurs again, information from previous investigations can be extremely valuable.&lt;/p&gt;

&lt;p&gt;This idea inspired &lt;strong&gt;SentinelOps&lt;/strong&gt;, an AI-powered security incident investigation system designed to make security investigations more context-aware by using historical incident knowledge.&lt;/p&gt;

&lt;p&gt;While exploring this project, I became particularly interested in how AI agents can use information from previous investigations instead of treating every new alert as an isolated problem.&lt;/p&gt;

&lt;p&gt;In this article, I'll explain the problem SentinelOps addresses, its architecture, how its AI and memory components work together, and what I learned while researching the project and understanding its implementation.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. The Problem: Investigating Every Alert from Scratch
&lt;/h2&gt;

&lt;p&gt;Imagine a security operations team investigating suspicious PowerShell activity on a financial server.&lt;/p&gt;

&lt;p&gt;An analyst investigates the alert, identifies the suspicious behavior, determines the root cause, and records the remediation steps.&lt;/p&gt;

&lt;p&gt;A few days later, a similar alert appears on another server.&lt;/p&gt;

&lt;p&gt;The team may already have useful information from the earlier investigation. However, if that information is not available during the new investigation, the analyst may need to repeat much of the previous work.&lt;/p&gt;

&lt;p&gt;This raises an interesting question:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How can an AI security assistant make useful historical investigation knowledge available when a new alert arrives?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;SentinelOps explores this problem by combining AI-powered investigation with persistent organizational memory.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Introducing SentinelOps
&lt;/h2&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%2Fhhyzgvdknr0tl6z9oxra.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%2Fhhyzgvdknr0tl6z9oxra.png" alt=" " width="800" height="415"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;SentinelOps is an AI-assisted security incident response application.&lt;/p&gt;

&lt;p&gt;Its purpose is to help security analysts investigate alerts using both current incident information and relevant historical knowledge.&lt;/p&gt;

&lt;p&gt;The application includes several major sections:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Overview:&lt;/strong&gt; Displays incident statistics, severity levels, and recent security activity.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Incident Center:&lt;/strong&gt; Provides access to security incidents and their details.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI Investigation:&lt;/strong&gt; Supports AI-assisted analysis of security alerts.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Organizational Memory:&lt;/strong&gt; Provides access to retained incident knowledge.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Learning Analytics:&lt;/strong&gt; Presents information related to historical memory and investigation activity.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The main idea is to connect previous investigation outcomes with new security alerts.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Understanding the System Architecture
&lt;/h2&gt;

&lt;p&gt;One of the most interesting parts of exploring SentinelOps was understanding how its different technologies work together.&lt;/p&gt;

&lt;p&gt;The project uses:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;React:&lt;/strong&gt; Builds the interactive frontend.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;TypeScript:&lt;/strong&gt; Provides type-safe application development.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Node.js and Express:&lt;/strong&gt; Handle backend logic and API requests.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Google Gemini:&lt;/strong&gt; Supports AI-powered incident analysis.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hindsight:&lt;/strong&gt; Provides persistent memory capabilities.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Vite:&lt;/strong&gt; Supports frontend development and building.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tailwind CSS:&lt;/strong&gt; Helps style the user interface.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The backend coordinates communication between the incident store, Gemini, and Hindsight.&lt;/p&gt;

&lt;p&gt;At a high level, the workflow looks like this:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;A security alert enters the application.&lt;/li&gt;
&lt;li&gt;The backend validates and stores the incident.&lt;/li&gt;
&lt;li&gt;The application searches for relevant historical memories.&lt;/li&gt;
&lt;li&gt;Retrieved information is provided to Gemini along with the current alert.&lt;/li&gt;
&lt;li&gt;Gemini generates an investigation result.&lt;/li&gt;
&lt;li&gt;An analyst reviews the findings and submits feedback.&lt;/li&gt;
&lt;li&gt;The investigation outcome can be retained for future use.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This separation is important because the memory system provides historical context, while the AI model analyzes the current incident.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Why Persistent Memory Matters
&lt;/h2&gt;

&lt;p&gt;A normal AI conversation does not automatically provide an application with access to every previous investigation.&lt;/p&gt;

&lt;p&gt;If an AI assistant receives only the latest alert, it may lack important information about earlier incidents.&lt;/p&gt;

&lt;p&gt;This is where &lt;strong&gt;Hindsight&lt;/strong&gt;, developed by Vectorize, becomes important in SentinelOps.&lt;/p&gt;

&lt;p&gt;Hindsight provides a memory layer that allows an AI application to retain information, retrieve relevant memories, and synthesize information across stored memories.&lt;/p&gt;

&lt;p&gt;The three operations I explored are:&lt;/p&gt;

&lt;h3&gt;
  
  
  Retain
&lt;/h3&gt;

&lt;p&gt;Retain stores useful information from a completed investigation.&lt;/p&gt;

&lt;p&gt;In SentinelOps, the application prepares incident information such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Incident description&lt;/li&gt;
&lt;li&gt;Analyst verdict&lt;/li&gt;
&lt;li&gt;Root cause&lt;/li&gt;
&lt;li&gt;Remediation actions&lt;/li&gt;
&lt;li&gt;Analyst notes&lt;/li&gt;
&lt;li&gt;Relevant process information&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The backend then sends this information to Hindsight.&lt;/p&gt;

&lt;h3&gt;
  
  
  Recall
&lt;/h3&gt;

&lt;p&gt;Recall retrieves relevant historical information when a new investigation begins.&lt;/p&gt;

&lt;p&gt;For example, if a new alert contains suspicious PowerShell activity, the application can search for previous incidents involving similar behavior.&lt;/p&gt;

&lt;p&gt;The retrieved memories can then provide additional context for Gemini's investigation.&lt;/p&gt;

&lt;h3&gt;
  
  
  Reflect
&lt;/h3&gt;

&lt;p&gt;Reflect supports broader questions that require synthesizing information across stored memories.&lt;/p&gt;

&lt;p&gt;For example, an analyst might ask:&lt;/p&gt;

&lt;p&gt;"What recurring attack techniques and service account compromises have appeared in previous incidents?"&lt;/p&gt;

&lt;p&gt;This is different from simply retrieving one similar incident. It aims to identify broader patterns across organizational knowledge.&lt;/p&gt;

&lt;p&gt;Together, Retain, Recall, and Reflect make historical information useful throughout the investigation workflow.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Understanding the Implementation Through Code
&lt;/h2&gt;

&lt;p&gt;While exploring the repository, I found it useful to follow the backend workflow to understand where memory retrieval happens.&lt;/p&gt;

&lt;p&gt;The following examples are shortened excerpts from the project's &lt;code&gt;server.ts&lt;/code&gt; file.&lt;/p&gt;

&lt;h3&gt;
  
  
  Retrieving historical memories
&lt;/h3&gt;

&lt;p&gt;When an investigation starts, the backend first creates a recall query and requests relevant memories from Hindsight.&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%2Fykp1rmht6zqo5r4v725h.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%2Fykp1rmht6zqo5r4v725h.png" alt=" " width="799" height="399"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;recallQuery&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;buildMemoryRecallQuery&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;incident&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;alert&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;hindsightResult&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;
  &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;hindsightService&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;recall&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;recallQuery&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;recalledMemories&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;hindsightResult&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;memories&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The application also includes a local-memory fallback when Hindsight does not return memories:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;recalledMemories&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;recalledMemories&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;incidentStore&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;searchLocalMemories&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="nx"&gt;incident&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;alert&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="nx"&gt;incident&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;
  &lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is an important implementation detail. The application can continue with locally stored historical information when the Hindsight retrieval does not provide results.&lt;/p&gt;

&lt;h3&gt;
  
  
  Passing memory into Gemini
&lt;/h3&gt;

&lt;p&gt;After retrieving historical information, the application provides it to Gemini during incident analysis.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;analysis&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;geminiService&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;analyzeIncident&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
  &lt;span class="nx"&gt;incident&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;alert&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nx"&gt;recalledMemories&lt;/span&gt;
&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This demonstrates the central idea behind SentinelOps: the AI investigation receives both the current alert and available historical context.&lt;/p&gt;

&lt;h3&gt;
  
  
  Retaining analyst feedback
&lt;/h3&gt;

&lt;p&gt;Once an analyst submits feedback, the application prepares an incident summary and sends it to the memory service.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;hindsightRetainResult&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;
  &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;hindsightService&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;retain&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;memoryContent&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;metadata&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This creates a feedback loop:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Investigate → Review → Retain → Recall → Investigate again.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;These examples helped me understand how the different components connect, even though the implementation of these integrations was handled by my teammate.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. A Practical Example: FIN-SRV-04 and FIN-SRV-07
&lt;/h2&gt;

&lt;p&gt;The project demonstrates the memory workflow using two related security incidents.&lt;/p&gt;

&lt;p&gt;The first incident involves suspicious PowerShell execution on &lt;strong&gt;FIN-SRV-04&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;After investigation, the outcome and remediation information are retained in Hindsight.&lt;/p&gt;

&lt;p&gt;Later, another suspicious PowerShell incident appears on &lt;strong&gt;FIN-SRV-07&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Instead of analyzing the new alert without historical context, SentinelOps attempts to retrieve relevant information from the earlier investigation.&lt;/p&gt;

&lt;p&gt;That information can help Gemini understand what the team previously observed and what actions were taken.&lt;/p&gt;

&lt;p&gt;However, historical similarity does not automatically prove that two incidents have the same root cause. The current evidence still needs to be investigated, and the analyst remains responsible for reviewing the findings.&lt;/p&gt;

&lt;p&gt;This example helped me understand why persistent memory can be useful in security operations.&lt;/p&gt;

&lt;h2&gt;
  
  
  7. Keeping Human Analysts in the Loop
&lt;/h2&gt;

&lt;p&gt;AI assistance should not mean removing human responsibility from security investigations.&lt;/p&gt;

&lt;p&gt;SentinelOps is designed to support analysts by providing investigation findings and response recommendations.&lt;/p&gt;

&lt;p&gt;An analyst can review the result, provide feedback, and record the final investigation outcome.&lt;/p&gt;

&lt;p&gt;This is important because security decisions can have serious consequences. Recommendations involving account access, network isolation, or other operational actions should be reviewed by authorized people.&lt;/p&gt;

&lt;p&gt;The objective is to make investigations more informed, not to replace security professionals.&lt;/p&gt;

&lt;h2&gt;
  
  
  8. What I Learned from This Project
&lt;/h2&gt;

&lt;p&gt;My contribution to SentinelOps focused on project research, understanding the system architecture and implementation, coordinating with my teammate, and presenting a demonstration of the website.&lt;/p&gt;

&lt;p&gt;After my teammate completed the Hindsight integration, I explored how its Retain, Recall, and Reflect operations worked within the application.&lt;/p&gt;

&lt;p&gt;This experience helped me understand several concepts:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;First, an AI application needs more than a language model.&lt;/strong&gt; The surrounding architecture, data flow, and memory layer are important parts of building a useful AI agent.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Second, historical context can change how an AI system approaches a problem.&lt;/strong&gt; Providing relevant information from previous investigations gives the model additional context instead of asking it to work only with the latest alert.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Third, different components need clear responsibilities.&lt;/strong&gt; Gemini handles AI-powered analysis, while Hindsight provides the memory capabilities used by the application.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Finally, understanding a project is just as important as presenting its features.&lt;/strong&gt; Exploring the architecture and following the workflow helped me explain what happens behind the interface during the demonstration.&lt;/p&gt;

&lt;h2&gt;
  
  
  9. What Could Be Improved?
&lt;/h2&gt;

&lt;p&gt;SentinelOps is a prototype, and there are several areas that could be improved in future development.&lt;/p&gt;

&lt;p&gt;Some important areas include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Moving beyond local JSON incident storage to a database suitable for concurrent access.&lt;/li&gt;
&lt;li&gt;Improving authentication and authorization.&lt;/li&gt;
&lt;li&gt;Expanding error handling and integration testing.&lt;/li&gt;
&lt;li&gt;Making the source of retrieved information more visible to analysts.&lt;/li&gt;
&lt;li&gt;Testing memory retrieval across a wider range of security incidents.&lt;/li&gt;
&lt;li&gt;Evaluating whether historical context consistently improves investigation quality.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These improvements would help make the system more reliable and suitable for more demanding security environments.&lt;/p&gt;

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

&lt;p&gt;SentinelOps explores an interesting direction for AI-powered security operations: building an assistant that can use knowledge from previous investigations.&lt;/p&gt;

&lt;p&gt;The most important idea I took away from this project is that an AI agent should not always have to start from zero. Previous investigations can provide useful context for future decisions when that information is stored and retrieved appropriately.&lt;/p&gt;

&lt;p&gt;Exploring the architecture, understanding the Hindsight integration, coordinating with my teammate, and presenting the application gave me a better understanding of how AI, backend services, and persistent memory can work together.&lt;/p&gt;

&lt;p&gt;The goal is simple: make security investigations more context-aware by allowing useful organizational knowledge to carry forward.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Project:&lt;/strong&gt; SentinelOps&lt;br&gt;&lt;br&gt;
&lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/Mani-king/SentinelOps" rel="noopener noreferrer"&gt;SentinelOps Repository&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Explore Hindsight
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/vectorize-io/hindsight" rel="noopener noreferrer"&gt;Hindsight GitHub Repository&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://hindsight.vectorize.io/" rel="noopener noreferrer"&gt;Hindsight Documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://vectorize.io/what-is-agent-memory" rel="noopener noreferrer"&gt;What Is Agent Memory? – Vectorize&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>ai</category>
      <category>cybersecurity</category>
      <category>github</category>
      <category>privacy</category>
    </item>
  </channel>
</rss>
