<?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: Pranav</title>
    <description>The latest articles on DEV Community by Pranav (@pranavsinghpatil).</description>
    <link>https://dev.to/pranavsinghpatil</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%2F2312160%2F87cdd734-605c-40e7-be56-bf553f2a7ffb.jpg</url>
      <title>DEV Community: Pranav</title>
      <link>https://dev.to/pranavsinghpatil</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/pranavsinghpatil"/>
    <language>en</language>
    <item>
      <title>Building Context-Aware Multilingual AI Agents with Cognee and Crowdin</title>
      <dc:creator>Pranav</dc:creator>
      <pubDate>Sun, 25 Oct 2026 10:48:18 +0000</pubDate>
      <link>https://dev.to/pranavsinghpatil/building-context-aware-multilingual-ai-agents-with-cognee-and-crowdin-j0m</link>
      <guid>https://dev.to/pranavsinghpatil/building-context-aware-multilingual-ai-agents-with-cognee-and-crowdin-j0m</guid>
      <description>&lt;p&gt;In the era of autonomous AI applications, LLMs are increasingly deployed to interact with global audiences across dozens of languages. From multilingual customer support agents to automated documentation generators, modern systems must communicate fluently and accurately in the target dialect.&lt;/p&gt;

&lt;p&gt;However, LLMs possess a well-known vulnerability: &lt;strong&gt;terminology drift&lt;/strong&gt;. When asked to translate domain-specific software concepts, models frequently invent literal, inconsistent, or prohibited translations rather than adhering to officially approved glossaries.&lt;/p&gt;

&lt;p&gt;Enter &lt;strong&gt;&lt;a href="https://crowdin.com/" rel="noopener noreferrer"&gt;Crowdin&lt;/a&gt;&lt;/strong&gt;: the enterprise localization platform trusted by GitHub, GitLab, Discord, and Microsoft open source to orchestrate translations, brand glossaries, and string catalogs.&lt;/p&gt;

&lt;p&gt;With the release of the &lt;strong&gt;Crowdin Connector for &lt;a href="https://github.com/topoteretes/cognee" rel="noopener noreferrer"&gt;Cognee&lt;/a&gt;&lt;/strong&gt;, engineering teams can now stream localization repositories, approved terminology glossaries, and translation memory directly into Cognee's AI-native knowledge graph.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why Connect Crowdin to Cognee?
&lt;/h2&gt;

&lt;p&gt;Integrating Crowdin into Cognee's memory engine empowers autonomous agents with:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Deterministic Terminology Grounding&lt;/strong&gt;: When an AI agent responds in German, French, or Japanese, it queries Cognee's memory graph to ensure it uses the approved glossary term (e.g., using "Passkey" instead of a mistranslated "Passwort").&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Context-Aware Translation&lt;/strong&gt;: LLMs can inspect string keys, UI context descriptions, and character limits stored in Cognee memory before generating localized copy.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Automated Localization Audits&lt;/strong&gt;: Autonomous agents can inspect translation completion metrics across branches, flagging missing translations or out-of-date strings.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Orphan Cleanup&lt;/strong&gt;: When outdated strings or deprecated terms are removed from Crowdin, Cognee's &lt;code&gt;write_disposition="replace"&lt;/code&gt; ensures they are automatically forgotten from graph memory.&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  Architectural Deep Dive
&lt;/h2&gt;

&lt;p&gt;The Crowdin connector is designed for production reliability:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Full Data Ingestion&lt;/strong&gt;:

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Projects&lt;/strong&gt;: Ingests project identifiers, source languages, target locales, and web dashboard links.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Glossaries&lt;/strong&gt;: Maps approved terminology, prohibited synonyms, parts of speech, and linguistic definitions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Localization Strings&lt;/strong&gt;: Ingests developer context comments, string keys, English source text, and target translations.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cognee Pipeline Integration&lt;/strong&gt;:

&lt;ul&gt;
&lt;li&gt;Sets &lt;code&gt;DOCUMENT_SOURCE_ATTR = "crowdin"&lt;/code&gt; on all emitted documents, ensuring seamless processing through Cognee's &lt;code&gt;cognify()&lt;/code&gt; pipeline.&lt;/li&gt;
&lt;li&gt;Employs &lt;code&gt;write_disposition="replace"&lt;/code&gt; on the &lt;code&gt;crowdin_localization&lt;/code&gt; table to clean up deleted or deprecated terms.&lt;/li&gt;
&lt;li&gt;Generates deterministic &lt;code&gt;uuid5&lt;/code&gt; document IDs based on project IDs and report types, preventing duplicate nodes in the knowledge graph.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Enterprise-Grade Resilience&lt;/strong&gt;:

&lt;ul&gt;
&lt;li&gt;Exponential backoff with jitter on HTTP 429 rate limits and 5xx transient server errors.&lt;/li&gt;
&lt;li&gt;Automatic credential and token sanitization (&lt;code&gt;[REDACTED_CROWDIN_TOKEN]&lt;/code&gt;) in all logs and exception messages.&lt;/li&gt;
&lt;li&gt;Clean Markdown document generation structured for optimal chunking and embedding retrieval.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Quickstart Guide
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Installation
&lt;/h3&gt;

&lt;p&gt;Install Cognee and the community Crowdin connector:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install &lt;/span&gt;cognee cognee-community-connector-crowdin
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or using &lt;code&gt;uv&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;uv add cognee cognee-community-connector-crowdin
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2. Ingesting Localization Knowledge
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;asyncio&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;cognee&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;cognee_community_connector_crowdin&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;CrowdinConfig&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;crowdin_connector&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
    &lt;span class="c1"&gt;# Configure the connector
&lt;/span&gt;    &lt;span class="n"&gt;config&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;CrowdinConfig&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="n"&gt;api_token&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getenv&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;CROWDIN_PERSONAL_TOKEN&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;your-crowdin-token&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
        &lt;span class="n"&gt;include_glossaries&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;include_strings&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Fetching Crowdin localization knowledge...&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;documents&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;crowdin_connector&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;config&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Retrieved &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nf"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;documents&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt; localization documents.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="c1"&gt;# Ingest into Cognee Memory
&lt;/span&gt;    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Ingesting into Cognee...&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;cognee&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;add&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;documents&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;dataset_name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;localization_knowledge&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;cognee&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;cognify&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;dataset_name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;localization_knowledge&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="c1"&gt;# Natural Language Terminology Reasoning
&lt;/span&gt;    &lt;span class="n"&gt;query&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;What is the approved German translation for Passkey?&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;Querying Cognee: &lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;query&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;'"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;results&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;cognee&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;search&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;query&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;dataset_name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;localization_knowledge&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;r&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;results&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;Memory Result: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;__name__&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;__main__&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;asyncio&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;run&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  What Does Ingested Memory Look Like?
&lt;/h2&gt;

&lt;p&gt;The connector parses Crowdin REST API v2 JSON into structured Markdown reports optimized for graph extraction:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gh"&gt;# Terminology Glossary: Acme Technical Lexicon (ID: 501)&lt;/span&gt;

&lt;span class="gs"&gt;**Total Terms Recorded**&lt;/span&gt;: 2

&lt;span class="gu"&gt;## Approved Terms &amp;amp; Conceptual Definitions&lt;/span&gt;
&lt;span class="gu"&gt;### Term: `Passkey` (EN)&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="gs"&gt;**Term ID**&lt;/span&gt;: 9001
&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="gs"&gt;**Part of Speech**&lt;/span&gt;: noun
&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="gs"&gt;**Status**&lt;/span&gt;: approved
&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="gs"&gt;**Definition / Context**&lt;/span&gt;: FIDO2 WebAuthn cryptographic credential.

&lt;span class="gu"&gt;### Term: `Passkey` (DE)&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="gs"&gt;**Term ID**&lt;/span&gt;: 9002
&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="gs"&gt;**Part of Speech**&lt;/span&gt;: noun
&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="gs"&gt;**Status**&lt;/span&gt;: approved
&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="gs"&gt;**Definition / Context**&lt;/span&gt;: Do not translate as Passwort. Keep as Passkey.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;When Cognee processes this markdown through &lt;code&gt;cognify()&lt;/code&gt;, it constructs knowledge graph nodes representing:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Terms&lt;/strong&gt; (e.g., &lt;code&gt;Passkey&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Languages&lt;/strong&gt; (e.g., &lt;code&gt;EN&lt;/code&gt;, &lt;code&gt;DE&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Concepts &amp;amp; Guidelines&lt;/strong&gt; (e.g., &lt;code&gt;Do not translate as Passwort&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Relationships&lt;/strong&gt; (e.g., &lt;code&gt;Acme Technical Lexicon&lt;/code&gt; -&amp;gt; &lt;code&gt;CONTAINS&lt;/code&gt; -&amp;gt; &lt;code&gt;Passkey&lt;/code&gt;, &lt;code&gt;Passkey&lt;/code&gt; -&amp;gt; &lt;code&gt;HAS_RESTRICTION&lt;/code&gt; -&amp;gt; &lt;code&gt;Do not translate as Passwort&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Open Source &amp;amp; Community
&lt;/h2&gt;

&lt;p&gt;The Crowdin connector is an open-source contribution to the &lt;a href="https://github.com/topoteretes/cognee-community" rel="noopener noreferrer"&gt;Cognee Community&lt;/a&gt; ecosystem.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Cognee Core&lt;/strong&gt;: &lt;a href="https://github.com/topoteretes/cognee" rel="noopener noreferrer"&gt;https://github.com/topoteretes/cognee&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Community Connectors&lt;/strong&gt;: &lt;a href="https://github.com/topoteretes/cognee-community" rel="noopener noreferrer"&gt;https://github.com/topoteretes/cognee-community&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Crowdin&lt;/strong&gt;: &lt;a href="https://crowdin.com/" rel="noopener noreferrer"&gt;https://crowdin.com/&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Empower your AI agents with reliable, multilingual memory today!&lt;/p&gt;

</description>
      <category>agents</category>
      <category>ai</category>
      <category>llm</category>
      <category>softwaredevelopment</category>
    </item>
    <item>
      <title>Bridging Container Orchestration and Autonomous AI: The Cognee Portainer Connector</title>
      <dc:creator>Pranav</dc:creator>
      <pubDate>Sun, 25 Oct 2026 10:47:52 +0000</pubDate>
      <link>https://dev.to/pranavsinghpatil/bridging-container-orchestration-and-autonomous-ai-the-cognee-portainer-connector-21mo</link>
      <guid>https://dev.to/pranavsinghpatil/bridging-container-orchestration-and-autonomous-ai-the-cognee-portainer-connector-21mo</guid>
      <description>&lt;p&gt;Managing modern cloud-native architectures is fraught with container sprawl. Across distributed development teams, thousands of microservice containers, Swarm stacks, and Kubernetes deployments run simultaneously across local workstations, staging clusters, and remote edge gateways.&lt;/p&gt;

&lt;p&gt;While &lt;a href="https://github.com/portainer/portainer" rel="noopener noreferrer"&gt;Portainer&lt;/a&gt; (boasting over 33,000+ GitHub stars) provides a premier GUI and management plane for containerized infrastructure, the rich architectural context inside those containers—such as exposed ports, volume mount topologies, restart policies, and Docker Compose definitions—remains siloed inside dashboards and daemon sockets.&lt;/p&gt;

&lt;p&gt;With the release of the &lt;strong&gt;Portainer Connector for Cognee&lt;/strong&gt;, developers can now seamlessly stream their live container infrastructure directly into &lt;strong&gt;&lt;a href="https://github.com/topoteretes/cognee" rel="noopener noreferrer"&gt;Cognee&lt;/a&gt;&lt;/strong&gt;, transforming raw DevOps telemetry into an AI-queryable knowledge graph and memory layer.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why Portainer + Cognee?
&lt;/h2&gt;

&lt;p&gt;Autonomous AI coding agents, DevOps assistants, and Site Reliability Engineers (SREs) frequently require real-time infrastructure answers that static codebases cannot provide:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;em&gt;"Which containers in our staging cluster have port 6379 open without authentication?"&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;"Show me the compose definition and volume mounts for the caching stack."&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;"Are any edge nodes running outdated container base images?"&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;"What microservices depend on the internal messaging broker?"&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;By connecting Portainer to Cognee:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Semantic Container Discovery&lt;/strong&gt;: Natural language searches across container names, image tags, network ports, and storage volumes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Topology Synthesis&lt;/strong&gt;: Cognee's &lt;code&gt;cognify()&lt;/code&gt; pipeline automatically extracts graph relationships between environments, stacks, and containers.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Orphan Cleanup&lt;/strong&gt;: Decommissioned containers or deleted stacks are automatically forgotten thanks to Cognee's &lt;code&gt;write_disposition="replace"&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Idempotent Synchronization&lt;/strong&gt;: Deterministic document hashing ensures re-running the connector updates existing graph nodes without duplicate entities.&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  Architectural Deep Dive
&lt;/h2&gt;

&lt;p&gt;The Portainer Cognee connector is built to production standards:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Cluster &amp;amp; Environment Discovery&lt;/strong&gt;: Maps all registered Docker standalone engines, Swarm managers, Kubernetes clusters, and remote Edge agents.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Stack &amp;amp; Compose Ingestion&lt;/strong&gt;: Extracts stack names, deployment statuses, and raw docker-compose YAML definitions into memory.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Container Catalog&lt;/strong&gt;: Ingests container names, image digests, running states, health statuses, port forwardings, and volume mounts.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Resilient HTTP Communication&lt;/strong&gt;: Built-in exponential backoff with jitter on HTTP 429 rate limits and 5xx transient server errors.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Credential Sanitization&lt;/strong&gt;: The connector automatically masks tokens, passwords, and API keys (&lt;code&gt;[REDACTED_PORTAINER_CREDENTIAL]&lt;/code&gt;) in logs and exception traces.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Quickstart Guide
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Installation
&lt;/h3&gt;

&lt;p&gt;Install Cognee and the community Portainer connector:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install &lt;/span&gt;cognee cognee-community-connector-portainer
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or using &lt;code&gt;uv&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;uv add cognee cognee-community-connector-portainer
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2. Ingesting Infrastructure into Memory
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;asyncio&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;cognee&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;cognee_community_connector_portainer&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;PortainerConfig&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;portainer_connector&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
    &lt;span class="c1"&gt;# 1. Configure the connector
&lt;/span&gt;    &lt;span class="n"&gt;config&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;PortainerConfig&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="n"&gt;api_url&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getenv&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;PORTAINER_URL&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://portainer.local:9443&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
        &lt;span class="n"&gt;api_key&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getenv&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;PORTAINER_API_KEY&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;ptr_your_api_key&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
        &lt;span class="n"&gt;include_containers&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;include_stacks&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Fetching Portainer environment &amp;amp; container telemetry...&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;documents&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;portainer_connector&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;config&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Retrieved &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nf"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;documents&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt; infrastructure documents.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="c1"&gt;# 2. Ingest into Cognee memory
&lt;/span&gt;    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Ingesting into Cognee...&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;cognee&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;add&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;documents&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;dataset_name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;infrastructure_topology&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;cognee&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;cognify&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;dataset_name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;infrastructure_topology&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="c1"&gt;# 3. Query container and cluster topology with natural language
&lt;/span&gt;    &lt;span class="n"&gt;query&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;What containers are currently running with exposed ports?&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;Querying Cognee: &lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;query&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;'"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;results&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;cognee&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;search&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;query&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;dataset_name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;infrastructure_topology&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;r&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;results&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;Memory Result: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;__name__&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;__main__&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;asyncio&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;run&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  What Does Ingested Memory Look Like?
&lt;/h2&gt;

&lt;p&gt;The connector parses complex Docker daemon JSON into clean, structured Markdown reports optimized for embedding and graph extraction:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gh"&gt;# Container Runtime State: Primary Docker Cluster (ID: 1)&lt;/span&gt;

&lt;span class="gs"&gt;**Total Containers**&lt;/span&gt;: 2

&lt;span class="gu"&gt;## Container Catalog&lt;/span&gt;
&lt;span class="gu"&gt;### Container: /redis-master&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="gs"&gt;**Container ID**&lt;/span&gt;: &lt;span class="sb"&gt;`abc123456789`&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="gs"&gt;**Image**&lt;/span&gt;: &lt;span class="sb"&gt;`redis:7-alpine`&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="gs"&gt;**State / Status**&lt;/span&gt;: &lt;span class="sb"&gt;`running`&lt;/span&gt; (Up 4 days, healthy)
&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="gs"&gt;**Port Forwarding**&lt;/span&gt;: 6379-&amp;gt;6379/tcp
&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="gs"&gt;**Volume Mounts**&lt;/span&gt;: &lt;span class="sb"&gt;`/var/lib/redis`&lt;/span&gt; -&amp;gt; &lt;span class="sb"&gt;`/data`&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;When Cognee processes this markdown through &lt;code&gt;cognify()&lt;/code&gt;, it constructs knowledge graph nodes representing:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Environments&lt;/strong&gt; (e.g., &lt;code&gt;Primary Docker Cluster&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Containers&lt;/strong&gt; (e.g., &lt;code&gt;/redis-master&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Images&lt;/strong&gt; (e.g., &lt;code&gt;redis:7-alpine&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Relationships&lt;/strong&gt; (e.g., &lt;code&gt;Primary Docker Cluster&lt;/code&gt; -&amp;gt; &lt;code&gt;RUNS&lt;/code&gt; -&amp;gt; &lt;code&gt;/redis-master&lt;/code&gt;, &lt;code&gt;/redis-master&lt;/code&gt; -&amp;gt; &lt;code&gt;MOUNTS&lt;/code&gt; -&amp;gt; &lt;code&gt;/data&lt;/code&gt;, &lt;code&gt;/redis-master&lt;/code&gt; -&amp;gt; &lt;code&gt;EXPOSES&lt;/code&gt; -&amp;gt; &lt;code&gt;6379&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Summary &amp;amp; Open Source
&lt;/h2&gt;

&lt;p&gt;The Portainer connector is an open-source contribution to the &lt;a href="https://github.com/topoteretes/cognee-community" rel="noopener noreferrer"&gt;Cognee Community&lt;/a&gt; ecosystem.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Cognee Core&lt;/strong&gt;: &lt;a href="https://github.com/topoteretes/cognee" rel="noopener noreferrer"&gt;https://github.com/topoteretes/cognee&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Community Connectors&lt;/strong&gt;: &lt;a href="https://github.com/topoteretes/cognee-community" rel="noopener noreferrer"&gt;https://github.com/topoteretes/cognee-community&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Portainer&lt;/strong&gt;: &lt;a href="https://github.com/portainer/portainer" rel="noopener noreferrer"&gt;https://github.com/portainer/portainer&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Try it out today to bring intelligent container topology memory to your DevOps workflows!&lt;/p&gt;

</description>
      <category>opensource</category>
    </item>
    <item>
      <title>Building an Autonomous AI Incident Knowledge Engine with Cognee and Uptime Kuma</title>
      <dc:creator>Pranav</dc:creator>
      <pubDate>Sun, 25 Oct 2026 10:45:52 +0000</pubDate>
      <link>https://dev.to/pranavsinghpatil/building-an-autonomous-ai-incident-knowledge-engine-with-cognee-and-uptime-kuma-45hi</link>
      <guid>https://dev.to/pranavsinghpatil/building-an-autonomous-ai-incident-knowledge-engine-with-cognee-and-uptime-kuma-45hi</guid>
      <description>&lt;p&gt;In modern infrastructure management, keeping services online is only half the battle. When downtime, degraded performance, or cascading outages occur, engineering teams scramble across alert histories, heartbeat charts, and incident post-mortems to understand what failed, when, and why. &lt;/p&gt;

&lt;p&gt;While monitoring tools like &lt;a href="https://github.com/louislam/uptime-kuma" rel="noopener noreferrer"&gt;Uptime Kuma&lt;/a&gt; (with over 65,000+ GitHub stars) excel at real-time alerting, health-checking, and status-page communication, their historical telemetry often remains locked in transient time-series logs and relational tables.&lt;/p&gt;

&lt;p&gt;Enter &lt;strong&gt;&lt;a href="https://github.com/topoteretes/cognee" rel="noopener noreferrer"&gt;Cognee&lt;/a&gt;&lt;/strong&gt;: an open-source, AI-native memory engine that transforms unstructured text, logs, and relational data into interconnected knowledge graphs and vector databases.&lt;/p&gt;

&lt;p&gt;In this guide, we introduce the &lt;strong&gt;Uptime Kuma Cognee Community Connector&lt;/strong&gt;, enabling autonomous LLMs, triage agents, and site reliability engineers (SREs) to query, reason over, and correlate infrastructure incidents using natural language.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why Connect Uptime Kuma to Cognee?
&lt;/h2&gt;

&lt;p&gt;Integrating Uptime Kuma telemetry into Cognee's memory graph unlocks several high-leverage capabilities:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Incident Post-Mortem &amp;amp; Timeline Synthesis&lt;/strong&gt;: Automatically generate root-cause summaries by correlating heartbeat latency spikes, HTTP error codes, and maintenance windows.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Context-Aware Alert Triage&lt;/strong&gt;: When a critical service degrades, LLM agents can query Cognee memory to determine: &lt;em&gt;"Has this endpoint timed out before during scheduled maintenance, or did it coincide with a specific deployment?"&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Automated Status Page Summaries&lt;/strong&gt;: Ingest public status pages and incident announcements into conversational AI assistants for customer support and engineering teams.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Self-Healing Infrastructure&lt;/strong&gt;: Power autonomous troubleshooting agents that inspect monitor topologies, analyze failure trends, and suggest remediation steps before incidents escalate.&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  Architectural Deep Dive
&lt;/h2&gt;

&lt;p&gt;The Uptime Kuma connector is designed to be resilient, modular, and privacy-first:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Full Data Ingestion&lt;/strong&gt;:

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Monitors&lt;/strong&gt;: Health check types (&lt;code&gt;http&lt;/code&gt;, &lt;code&gt;ping&lt;/code&gt;, &lt;code&gt;port&lt;/code&gt;, &lt;code&gt;dns&lt;/code&gt;, &lt;code&gt;keyword&lt;/code&gt;), target URLs/hosts, check intervals, retry strategies, and active tags.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Heartbeats&lt;/strong&gt;: Ping latency metrics, response codes, downtime durations, and error descriptions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Incidents &amp;amp; Status Pages&lt;/strong&gt;: Published incident timelines, maintenance windows, and status-page service groups.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cognee Pipeline Integration&lt;/strong&gt;:

&lt;ul&gt;
&lt;li&gt;Sets &lt;code&gt;DOCUMENT_SOURCE_ATTR = "uptime_kuma"&lt;/code&gt; on all emitted documents, ensuring seamless processing through Cognee's &lt;code&gt;cognify()&lt;/code&gt; pipeline.&lt;/li&gt;
&lt;li&gt;Employs &lt;code&gt;write_disposition="replace"&lt;/code&gt;, ensuring orphan records are cleaned up when monitors are reconfigured or resolved.&lt;/li&gt;
&lt;li&gt;Generates deterministic &lt;code&gt;uuid5&lt;/code&gt; document IDs based on monitor IDs and slug identifiers, preventing duplicate nodes in the knowledge graph.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Enterprise-Grade Reliability&lt;/strong&gt;:

&lt;ul&gt;
&lt;li&gt;Exponential backoff with jitter on HTTP 429 and 5xx responses.&lt;/li&gt;
&lt;li&gt;Automatic credential and token sanitization in all debug log outputs.&lt;/li&gt;
&lt;li&gt;Clean Markdown document generation structured for optimal chunking and embedding retrieval.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Quickstart Guide
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Installation
&lt;/h3&gt;

&lt;p&gt;Install Cognee and the community Uptime Kuma connector:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install &lt;/span&gt;cognee cognee-community-connector-uptime-kuma
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or using &lt;code&gt;uv&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;uv add cognee cognee-community-connector-uptime-kuma
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2. Basic Usage
&lt;/h3&gt;

&lt;p&gt;Run the connector to ingest your monitors and status pages into Cognee memory:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;asyncio&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;cognee&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;cognee_community_connector_uptime_kuma&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;UptimeKumaConfig&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;uptime_kuma_connector&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
    &lt;span class="c1"&gt;# Configure your Uptime Kuma instance
&lt;/span&gt;    &lt;span class="n"&gt;config&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;UptimeKumaConfig&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="n"&gt;api_url&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getenv&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;UPTIME_KUMA_URL&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://uptime.example.com&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
        &lt;span class="n"&gt;api_key&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getenv&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;UPTIME_KUMA_API_KEY&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;your-api-key&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
        &lt;span class="n"&gt;slug&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;main-status&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;# Optional status page slug
&lt;/span&gt;        &lt;span class="n"&gt;heartbeat_limit&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Fetching Uptime Kuma telemetry...&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;documents&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;uptime_kuma_connector&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;config&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Generated &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nf"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;documents&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt; incident &amp;amp; monitor reports.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="c1"&gt;# Ingest into Cognee Memory
&lt;/span&gt;    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Ingesting into Cognee...&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;cognee&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;add&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;documents&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;dataset_name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;infrastructure_telemetry&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;cognee&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;cognify&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;dataset_name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;infrastructure_telemetry&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="c1"&gt;# Natural Language Incident Reasoning
&lt;/span&gt;    &lt;span class="n"&gt;query&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Which services experienced downtime or high latency in the last 24 hours?&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;Querying Cognee: &lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;query&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;'"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;results&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;cognee&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;search&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;query&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;dataset_name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;infrastructure_telemetry&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;results&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;Memory Result: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;__name__&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;__main__&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;asyncio&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;run&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  What Does Ingested Memory Look Like?
&lt;/h2&gt;

&lt;p&gt;The connector parses complex JSON telemetry into structured markdown documents tailored for vector similarity and graph extraction:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gh"&gt;# Uptime Kuma Status Page: Production Infrastructure (main-status)&lt;/span&gt;

&lt;span class="gs"&gt;**Description**&lt;/span&gt;: Live public status for core APIs, auth services, and databases.

&lt;span class="gu"&gt;## Services &amp;amp; Monitors&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="gs"&gt;**Primary API Gateway**&lt;/span&gt; (HTTP Monitor)
&lt;span class="p"&gt;  -&lt;/span&gt; Target: &lt;span class="sb"&gt;`https://api.internal.network/health`&lt;/span&gt;
&lt;span class="p"&gt;  -&lt;/span&gt; Current Status: UP
&lt;span class="p"&gt;  -&lt;/span&gt; Interval: 60s
&lt;span class="p"&gt;  -&lt;/span&gt; Average Latency: 42ms

&lt;span class="gu"&gt;## Recent Incident Log&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="gs"&gt;**2026-10-23 14:15 UTC**&lt;/span&gt;: Elevated Latency on Auth Cluster
&lt;span class="p"&gt;  -&lt;/span&gt; Status: Resolved
&lt;span class="p"&gt;  -&lt;/span&gt; Impact: Response times peaked at 1,450ms before auto-scaling engaged.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;When Cognee processes this markdown through &lt;code&gt;cognify()&lt;/code&gt;, it constructs knowledge graph nodes representing:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Services&lt;/strong&gt; (e.g., &lt;code&gt;Primary API Gateway&lt;/code&gt;, &lt;code&gt;Auth Cluster&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Incidents&lt;/strong&gt; (e.g., &lt;code&gt;Elevated Latency on Auth Cluster&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Relationships&lt;/strong&gt; (e.g., &lt;code&gt;Auth Cluster&lt;/code&gt; -&amp;gt; &lt;code&gt;EXPERIENCED&lt;/code&gt; -&amp;gt; &lt;code&gt;Elevated Latency&lt;/code&gt;, &lt;code&gt;Auth Cluster&lt;/code&gt; -&amp;gt; &lt;code&gt;RESOLVED_BY&lt;/code&gt; -&amp;gt; &lt;code&gt;Auto-scaling&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This enables downstream AI agents to uncover hidden failure patterns across distinct services and cloud providers.&lt;/p&gt;




&lt;h2&gt;
  
  
  Open Source &amp;amp; Community
&lt;/h2&gt;

&lt;p&gt;The Uptime Kuma connector is an open-source contribution to the &lt;a href="https://github.com/topoteretes/cognee-community" rel="noopener noreferrer"&gt;Cognee Community&lt;/a&gt; ecosystem.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Cognee Core&lt;/strong&gt;: &lt;a href="https://github.com/topoteretes/cognee" rel="noopener noreferrer"&gt;https://github.com/topoteretes/cognee&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Community Connectors&lt;/strong&gt;: &lt;a href="https://github.com/topoteretes/cognee-community" rel="noopener noreferrer"&gt;https://github.com/topoteretes/cognee-community&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Uptime Kuma&lt;/strong&gt;: &lt;a href="https://github.com/louislam/uptime-kuma" rel="noopener noreferrer"&gt;https://github.com/louislam/uptime-kuma&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Try it out today to bring intelligent incident memory to your observability stack!&lt;/p&gt;

</description>
      <category>ai</category>
      <category>automation</category>
      <category>devops</category>
      <category>monitoring</category>
    </item>
    <item>
      <title>Giving AI Agents Website &amp; Conversion Memory: Building a Plausible Analytics Connector for Cognee</title>
      <dc:creator>Pranav</dc:creator>
      <pubDate>Sun, 25 Oct 2026 10:43:13 +0000</pubDate>
      <link>https://dev.to/pranavsinghpatil/giving-ai-agents-website-conversion-memory-building-a-plausible-analytics-connector-for-cognee-57cl</link>
      <guid>https://dev.to/pranavsinghpatil/giving-ai-agents-website-conversion-memory-building-a-plausible-analytics-connector-for-cognee-57cl</guid>
      <description>&lt;p&gt;&lt;em&gt;How connecting privacy-first web analytics with Cognee's open-source memory layer lets AI agents answer operational questions about traffic, top content, and conversions without dashboard fatigue.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Problem: AI Agents Have Traffic Amnesia
&lt;/h2&gt;

&lt;p&gt;Modern AI agents and LLM companions are great at writing code, drafting emails, and summarizing documents. But when you ask them basic questions about your business or open-source project:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"How did our new release blog post perform this week?"&lt;/em&gt;&lt;br&gt;
&lt;em&gt;"Which referrer drove the most signups yesterday?"&lt;/em&gt;&lt;br&gt;
&lt;em&gt;"What are our top 5 most visited documentation pages right now?"&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The agent has no idea.&lt;/p&gt;

&lt;p&gt;Every API call to an LLM starts from scratch. For web and product metrics, developers are forced to manually export CSVs, copy-paste numbers, or switch back and forth between analytics dashboards. The knowledge of how users discover and interact with your product remains trapped in isolated analytics silos.&lt;/p&gt;

&lt;p&gt;For &lt;strong&gt;Mergetober&lt;/strong&gt; (the open-source contribution sprint hosted by &lt;strong&gt;WeMakeDevs&lt;/strong&gt; and &lt;strong&gt;Cognee&lt;/strong&gt;), I set out to solve this by building a dedicated &lt;strong&gt;Plausible Analytics connector&lt;/strong&gt; for Cognee.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why Plausible Analytics?
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://plausible.io" rel="noopener noreferrer"&gt;Plausible Analytics&lt;/a&gt; is one of the most popular open-source, privacy-focused web analytics platforms. It delivers lightweight, cookie-free web metrics without tracking personal data. Tech startups, open-source maintainers, and developer tools around the world rely on Plausible for real-time visibility into traffic and conversions.&lt;/p&gt;

&lt;p&gt;By connecting Plausible to Cognee, AI agents gain continuous memory of site traffic, visitor trends, page engagement, and conversion goals.&lt;/p&gt;




&lt;h2&gt;
  
  
  How Cognee Powers Memory: From Metrics to a Knowledge Graph
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/topoteretes/cognee" rel="noopener noreferrer"&gt;Cognee&lt;/a&gt; is the open-source memory engine for AI agents. Instead of treating data as disconnected text chunks, Cognee uses a multi-stage cognitive pipeline:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;add()&lt;/code&gt; / &lt;code&gt;remember()&lt;/code&gt;&lt;/strong&gt;: Ingests raw data through data-source connectors.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;cognify()&lt;/code&gt;&lt;/strong&gt;: Uses LLMs and entity extractors to build a rich knowledge graph of entities and semantic relationships.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;recall()&lt;/code&gt; / &lt;code&gt;search()&lt;/code&gt;&lt;/strong&gt;: Lets agents traverse the graph to answer questions with verifiable context.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  The Document-Mode Architecture
&lt;/h3&gt;

&lt;p&gt;Relational database connectors in Cognee typically yield tabular schemas. But web performance insights are most useful to agents when formatted with high-signal context.&lt;/p&gt;

&lt;p&gt;The Plausible connector utilizes Cognee's &lt;strong&gt;document-mode&lt;/strong&gt; (&lt;code&gt;DOCUMENT_SOURCE_ATTR = "plausible"&lt;/code&gt;). Rather than dumping raw JSON numbers, the connector normalizes metrics into structured Markdown documents:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Site Traffic &amp;amp; Performance Overview&lt;/strong&gt;: High-level visitor counts, pageviews, bounce rate, and average session duration.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Top Content &amp;amp; Pages&lt;/strong&gt;: URL paths ranked by visitor volume.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Acquisition Channels&lt;/strong&gt;: Referral sources (GitHub, Google, Twitter, Hacker News, direct).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Audience Demographics&lt;/strong&gt;: Top visitor countries and device distribution (Desktop vs Mobile).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Custom Goals &amp;amp; Events&lt;/strong&gt;: Conversion triggers (signups, button clicks, downloads).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When &lt;code&gt;cognify()&lt;/code&gt; processes these documents, it establishes graph nodes such as &lt;code&gt;WebSite&lt;/code&gt;, &lt;code&gt;WebPage&lt;/code&gt;, &lt;code&gt;ReferralSource&lt;/code&gt;, and &lt;code&gt;Goal&lt;/code&gt;, linking them through relationships like &lt;code&gt;(:WebSite)-[:HAS_TOP_PAGE]-&amp;gt;(:WebPage)&lt;/code&gt; and &lt;code&gt;(:WebSite)-[:RECEIVES_TRAFFIC_FROM]-&amp;gt;(:ReferralSource)&lt;/code&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Building the Connector
&lt;/h2&gt;

&lt;p&gt;The connector is implemented as a standalone package under &lt;code&gt;packages/connector/plausible/&lt;/code&gt; in the &lt;code&gt;cognee-community&lt;/code&gt; repository, powered by &lt;code&gt;dlt&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;packages/connector/plausible/
├── README.md
├── pyproject.toml
├── cognee_community_connector_plausible/
│   ├── __init__.py
│   └── plausible.py
├── examples/
│   └── example.py
└── tests/
    └── test_plausible.py
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Key Engineering Features:
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Robust Resilience &amp;amp; Rate Limiting&lt;/strong&gt;: The client automatically catches HTTP &lt;code&gt;429&lt;/code&gt; responses and applies exponential backoff honoring the &lt;code&gt;Retry-After&lt;/code&gt; header.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pre-Ingestion Redaction&lt;/strong&gt;: Tokens and secrets are sanitized before logging or raising exceptions, preventing API key leakage.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Full Snapshot Sync &amp;amp; Forget-on-Delete&lt;/strong&gt;: Configured with &lt;code&gt;write_disposition="replace"&lt;/code&gt;. Deterministic document IDs (&lt;code&gt;plausible:&amp;lt;site_id&amp;gt;:&amp;lt;period&amp;gt;:&amp;lt;report_type&amp;gt;&lt;/code&gt;) ensure unchanged reports aren't re-processed, while obsolete periods are purged through Cognee's automated orphan cleanup.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Self-Hosted Support&lt;/strong&gt;: Works with Plausible Cloud (&lt;code&gt;https://plausible.io&lt;/code&gt;) and self-hosted Plausible Community Edition instances by supplying a custom &lt;code&gt;base_url&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  Running It in 6 Lines of Code
&lt;/h2&gt;

&lt;p&gt;Using the connector in any Cognee project is straightforward:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;asyncio&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;cognee&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;cognee_community_connector_plausible&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;plausible_source&lt;/span&gt;

&lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
    &lt;span class="c1"&gt;# 1. Instantiate the connector source
&lt;/span&gt;    &lt;span class="n"&gt;source&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;plausible_source&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="n"&gt;site_id&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;myproject.com&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;api_key&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;environ&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;PLAUSIBLE_API_KEY&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
        &lt;span class="n"&gt;period&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;30d&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="c1"&gt;# 2. Ingest into Cognee memory
&lt;/span&gt;    &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;cognee&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;remember&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;source&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;dataset_name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;web_traffic&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="c1"&gt;# 3. Ask your AI agent anything about your site performance
&lt;/span&gt;    &lt;span class="n"&gt;answer&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;cognee&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;search&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="n"&gt;query_text&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;What were our top 3 referral sources and what was our bounce rate?&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;query_type&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;cognee&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;SearchType&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;GRAPH_COMPLETION&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;datasets&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;web_traffic&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
    &lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;answer&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;__name__&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;__main__&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;asyncio&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;run&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Real-World Use Cases
&lt;/h2&gt;

&lt;p&gt;Here is where this integration shines for development teams:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;DevRel &amp;amp; Community AI Assistants&lt;/strong&gt;: &lt;em&gt;"Which docs page had the highest traffic spike after our v2 launch?"&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Founder &amp;amp; Product Briefings&lt;/strong&gt;: Daily standup bots that summarize weekly visitor acquisition and signup conversion rates without checking dashboards.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Incident &amp;amp; Traffic Correlation&lt;/strong&gt;: Correlating sudden server load spikes with specific referral campaigns or viral articles stored in the graph.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  100% Offline Testing
&lt;/h2&gt;

&lt;p&gt;To ensure reliability in CI and prevent test flakes, the test suite (&lt;code&gt;tests/test_plausible.py&lt;/code&gt;) features 18 offline unit tests covering:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Aggregate traffic parsing &amp;amp; formatting&lt;/li&gt;
&lt;li&gt;Top page &amp;amp; referral markdown compilation&lt;/li&gt;
&lt;li&gt;Rate limit 429 exponential backoff &amp;amp; token scrubbing&lt;/li&gt;
&lt;li&gt;Deterministic ID stability across syncs&lt;/li&gt;
&lt;li&gt;Document-mode invariant verification (&lt;code&gt;DOCUMENT_SOURCE_ATTR&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All 18 tests pass in under 2 seconds:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;uv run &lt;span class="nt"&gt;--project&lt;/span&gt; packages/connector/plausible &lt;span class="nt"&gt;--with&lt;/span&gt; pytest pytest packages/connector/plausible/tests &lt;span class="nt"&gt;-v&lt;/span&gt;
&lt;span class="c"&gt;# 18 passed in 1.25s&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Conclusion &amp;amp; Links
&lt;/h2&gt;

&lt;p&gt;Bringing Plausible Analytics into Cognee gives AI agents situational awareness of the metrics that matter most to growing products.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GitHub PR / Community Repo&lt;/strong&gt;: &lt;a href="https://github.com/topoteretes/cognee-community" rel="noopener noreferrer"&gt;topoteretes/cognee-community&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cognee Core&lt;/strong&gt;: &lt;a href="https://github.com/topoteretes/cognee" rel="noopener noreferrer"&gt;topoteretes/cognee&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Mergetober&lt;/strong&gt;: &lt;a href="https://www.wemakedevs.org/hackathons/mergetober" rel="noopener noreferrer"&gt;WeMakeDevs Mergetober Hackathon&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Built as part of Mergetober 2026. Happy building!&lt;/em&gt;&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
