Metadata-Version: 2.4
Name: cognee
Version: 1.0.4
Summary: Cognee - is a library for enriching LLM context with a semantic layer for better understanding and reasoning.
Project-URL: Homepage, https://www.cognee.ai
Project-URL: Repository, https://github.com/topoteretes/cognee
Author: Vasilije Markovic, Boris Arzentar
License-Expression: Apache-2.0
License-File: LICENSE
License-File: NOTICE.md
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Operating System :: MacOS :: MacOS X
Classifier: Operating System :: Microsoft :: Windows
Classifier: Operating System :: POSIX :: Linux
Classifier: Topic :: Software Development :: Libraries
Requires-Python: <3.15,>=3.10
Requires-Dist: aiofiles>=23.2.1
Requires-Dist: aiohttp<4.0.0,>=3.13.3
Requires-Dist: aiolimiter>=1.2.1
Requires-Dist: aiosqlite<1.0.0,>=0.20.0
Requires-Dist: alembic<2,>=1.13.3
Requires-Dist: cbor2>=5.8.0
Requires-Dist: datamodel-code-generator>=0.54.0
Requires-Dist: diskcache>=5.6.3
Requires-Dist: fakeredis[lua]>=2.32.0
Requires-Dist: fastapi-users[sqlalchemy]>=15.0.2
Requires-Dist: fastapi<1.0.0,>=0.116.2
Requires-Dist: filetype<2.0.0,>=1.2.0
Requires-Dist: gunicorn<24,>=20.1.0
Requires-Dist: instructor<2.0.0,>=1.9.1
Requires-Dist: jinja2<4,>=3.1.3
Requires-Dist: ladybug==0.16.0
Requires-Dist: lancedb<1.0.0,>=0.24.0
Requires-Dist: langdetect>=1.0.9
Requires-Dist: limits<5,>=4.4.1
Requires-Dist: litellm>=1.83.7
Requires-Dist: nbformat<6.0.0,>=5.7.0
Requires-Dist: networkx<4,>=3.4.2
Requires-Dist: numpy<=4.0.0,>=1.26.4
Requires-Dist: openai>=1.80.1
Requires-Dist: pydantic-settings<3,>=2.2.1
Requires-Dist: pydantic>=2.10.5
Requires-Dist: pylance<=0.36.0,>=0.22.0
Requires-Dist: pympler<2.0.0,>=1.1
Requires-Dist: pypdf<7.0.0,>=6.6.2
Requires-Dist: python-dotenv<2.0.0,>=1.0.1
Requires-Dist: python-magic-bin<0.5; platform_system == 'Windows'
Requires-Dist: python-multipart<1.0.0,>=0.0.22
Requires-Dist: rdflib<7.2.0,>=7.1.4
Requires-Dist: sqlalchemy<3.0.0,>=2.0.39
Requires-Dist: structlog<26,>=25.2.0
Requires-Dist: tenacity>=9.0.0
Requires-Dist: tiktoken<1.0.0,>=0.8.0
Requires-Dist: typing-extensions<5.0.0,>=4.12.2
Requires-Dist: urllib3>=2.6.0
Requires-Dist: uvicorn<1.0.0,>=0.34.0
Requires-Dist: websockets<16.0.0,>=15.0.1
Provides-Extra: anthropic
Requires-Dist: anthropic>=0.27; extra == 'anthropic'
Provides-Extra: api
Provides-Extra: aws
Requires-Dist: s3fs[boto3]==2025.3.2; extra == 'aws'
Provides-Extra: azure
Requires-Dist: azure-identity<2,>=1.15.0; extra == 'azure'
Provides-Extra: baml
Requires-Dist: baml-py==0.206.0; extra == 'baml'
Provides-Extra: chromadb
Requires-Dist: chromadb<0.7,>=0.6; extra == 'chromadb'
Requires-Dist: pypika==0.48.9; (python_version < '3.14') and extra == 'chromadb'
Requires-Dist: pypika>=0.50.0; (python_version >= '3.14') and extra == 'chromadb'
Provides-Extra: codegraph
Requires-Dist: fastembed<=0.8.0; (python_version < '3.14') and extra == 'codegraph'
Requires-Dist: transformers<5,>=4.46.3; extra == 'codegraph'
Requires-Dist: tree-sitter-python<0.24,>=0.23.6; extra == 'codegraph'
Requires-Dist: tree-sitter<0.25,>=0.24.0; extra == 'codegraph'
Provides-Extra: debug
Requires-Dist: debugpy<2.0.0,>=1.8.9; extra == 'debug'
Provides-Extra: deepeval
Requires-Dist: deepeval<4,>=3.0.1; extra == 'deepeval'
Provides-Extra: dev
Requires-Dist: coverage<8,>=7.3.2; extra == 'dev'
Requires-Dist: deptry<0.21,>=0.20.0; extra == 'dev'
Requires-Dist: gitpython<4,>=3.1.43; extra == 'dev'
Requires-Dist: mkdocs-material<10,>=9.5.42; extra == 'dev'
Requires-Dist: mkdocs-minify-plugin<0.9,>=0.8.0; extra == 'dev'
Requires-Dist: mkdocstrings[python]<0.27,>=0.26.2; extra == 'dev'
Requires-Dist: notebook<8,>=7.1.0; extra == 'dev'
Requires-Dist: pre-commit<5,>=4.0.1; extra == 'dev'
Requires-Dist: pytest-asyncio<0.22,>=0.21.1; extra == 'dev'
Requires-Dist: pytest-cov<7.0.0,>=6.1.1; extra == 'dev'
Requires-Dist: pytest<8,>=7.4.0; extra == 'dev'
Requires-Dist: ruff<=0.16.0,>=0.9.2; extra == 'dev'
Requires-Dist: tweepy<5.0.0,>=4.14.0; extra == 'dev'
Requires-Dist: ty<0.1.0,>=0.0.31; extra == 'dev'
Provides-Extra: distributed
Requires-Dist: modal<2.0.0,>=1.0.5; extra == 'distributed'
Provides-Extra: dlt
Requires-Dist: dlt[sqlalchemy]<2,>=1.9.0; extra == 'dlt'
Provides-Extra: docling
Requires-Dist: docling>=2.54; extra == 'docling'
Requires-Dist: transformers>=4.55; extra == 'docling'
Provides-Extra: docs
Requires-Dist: lxml<5,>=4.9.3; (python_version < '3.13') and extra == 'docs'
Requires-Dist: lxml<6,>=5; (python_version >= '3.13' and python_version < '3.14') and extra == 'docs'
Requires-Dist: lxml<7,>=6.0.1; (python_version >= '3.14') and extra == 'docs'
Requires-Dist: nltk<4,>=3.9.3; extra == 'docs'
Requires-Dist: unstructured[csv,doc,docx,epub,md,odt,org,pdf,ppt,pptx,rst,rtf,tsv,xlsx]<19,>=0.18.1; extra == 'docs'
Provides-Extra: evals
Requires-Dist: gdown<6,>=5.2.0; extra == 'evals'
Requires-Dist: matplotlib<4,>=3.8.3; extra == 'evals'
Requires-Dist: pandas<3.0.0,>=2.2.2; extra == 'evals'
Requires-Dist: plotly<7,>=6.0.0; extra == 'evals'
Requires-Dist: scikit-learn<2,>=1.6.1; extra == 'evals'
Provides-Extra: fastembed
Requires-Dist: fastembed<=0.8.0; extra == 'fastembed'
Requires-Dist: onnxruntime<=1.23.2; (python_version < '3.14') and extra == 'fastembed'
Requires-Dist: onnxruntime>=1.24.1; (python_version >= '3.14') and extra == 'fastembed'
Provides-Extra: graphiti
Requires-Dist: graphiti-core>=0.28.0; extra == 'graphiti'
Provides-Extra: groq
Requires-Dist: groq<1.0.0,>=0.8.0; extra == 'groq'
Provides-Extra: huggingface
Requires-Dist: transformers<5,>=4.46.3; extra == 'huggingface'
Provides-Extra: langchain
Requires-Dist: langchain-core>=1.2.5; extra == 'langchain'
Requires-Dist: langchain-text-splitters<1.0.0,>=0.3.2; extra == 'langchain'
Requires-Dist: langsmith<1.0.0,>=0.2.3; extra == 'langchain'
Provides-Extra: llama-cpp
Requires-Dist: llama-cpp-python[server]<1.0.0,>=0.3.0; extra == 'llama-cpp'
Provides-Extra: llama-index
Requires-Dist: llama-index-core<0.15,>=0.14.20; extra == 'llama-index'
Provides-Extra: mistral
Requires-Dist: mistral-common<2,>=1.5.2; extra == 'mistral'
Requires-Dist: mistralai<2,>=1.9.10; extra == 'mistral'
Provides-Extra: monitoring
Requires-Dist: langfuse<3,>=2.32.0; extra == 'monitoring'
Requires-Dist: opentelemetry-api<2,>=1.20.0; extra == 'monitoring'
Requires-Dist: opentelemetry-exporter-otlp-proto-grpc<2,>=1.20.0; extra == 'monitoring'
Requires-Dist: opentelemetry-exporter-otlp-proto-http<2,>=1.20.0; extra == 'monitoring'
Requires-Dist: opentelemetry-sdk<2,>=1.20.0; extra == 'monitoring'
Requires-Dist: sentry-sdk[fastapi]<3,>=2.9.0; extra == 'monitoring'
Provides-Extra: neo4j
Requires-Dist: neo4j<6,>=5.28.0; extra == 'neo4j'
Provides-Extra: neptune
Requires-Dist: langchain-aws>=0.2.22; extra == 'neptune'
Provides-Extra: notebook
Requires-Dist: notebook<8,>=7.1.0; extra == 'notebook'
Provides-Extra: ollama
Requires-Dist: transformers<5,>=4.46.3; extra == 'ollama'
Provides-Extra: postgres
Requires-Dist: asyncpg<1.0.0,>=0.30.0; extra == 'postgres'
Requires-Dist: pgvector<0.4,>=0.3.5; extra == 'postgres'
Requires-Dist: psycopg2<3,>=2.9.10; extra == 'postgres'
Provides-Extra: postgres-binary
Requires-Dist: asyncpg<1.0.0,>=0.30.0; extra == 'postgres-binary'
Requires-Dist: pgvector<0.4,>=0.3.5; extra == 'postgres-binary'
Requires-Dist: psycopg2-binary<3.0.0,>=2.9.10; extra == 'postgres-binary'
Provides-Extra: posthog
Requires-Dist: posthog<4,>=3.5.0; extra == 'posthog'
Provides-Extra: redis
Requires-Dist: redis<6.0.0,>=5.0.3; extra == 'redis'
Provides-Extra: scraping
Requires-Dist: apscheduler<=3.11.0,>=3.10.0; extra == 'scraping'
Requires-Dist: beautifulsoup4>=4.13.1; extra == 'scraping'
Requires-Dist: lxml<5,>=4.9.3; (python_version < '3.13') and extra == 'scraping'
Requires-Dist: lxml<6,>=5; (python_version >= '3.13' and python_version < '3.14') and extra == 'scraping'
Requires-Dist: lxml<7,>=6.0.1; (python_version >= '3.14') and extra == 'scraping'
Requires-Dist: playwright>=1.9.0; extra == 'scraping'
Requires-Dist: protego>=0.1; extra == 'scraping'
Requires-Dist: tavily-python>=0.7.12; extra == 'scraping'
Provides-Extra: tracing
Requires-Dist: opentelemetry-api<2,>=1.20.0; extra == 'tracing'
Requires-Dist: opentelemetry-exporter-otlp-proto-grpc<2,>=1.20.0; extra == 'tracing'
Requires-Dist: opentelemetry-exporter-otlp-proto-http<2,>=1.20.0; extra == 'tracing'
Requires-Dist: opentelemetry-sdk<2,>=1.20.0; extra == 'tracing'
Description-Content-Type: text/markdown

<div align="center">
  <a href="https://github.com/topoteretes/cognee">
    <img src="https://raw.githubusercontent.com/topoteretes/cognee/refs/heads/dev/assets/cognee-logo-transparent.png" alt="Cognee Logo" height="60">
  </a>

  <br />

  Cognee - Build AI memory with a Knowledge Engine that learns

  <p align="center">
  <a href="https://www.youtube.com/watch?v=8hmqS2Y5RVQ&t=13s">Demo</a>
  .
  <a href="https://docs.cognee.ai/">Docs</a>
  .
  <a href="https://cognee.ai">Learn More</a>
  ·
  <a href="https://discord.gg/NQPKmU5CCg">Join Discord</a>
  ·
  <a href="https://www.reddit.com/r/AIMemory/">Join r/AIMemory</a>
  .
  <a href="https://github.com/topoteretes/cognee-community">Community Plugins & Add-ons</a>
  </p>


  [![GitHub forks](https://img.shields.io/github/forks/topoteretes/cognee.svg?style=social&label=Fork&maxAge=2592000)](https://GitHub.com/topoteretes/cognee/network/)
  [![GitHub stars](https://img.shields.io/github/stars/topoteretes/cognee.svg?style=social&label=Star&maxAge=2592000)](https://GitHub.com/topoteretes/cognee/stargazers/)
  [![GitHub commits](https://badgen.net/github/commits/topoteretes/cognee)](https://GitHub.com/topoteretes/cognee/commit/)
  [![GitHub tag](https://badgen.net/github/tag/topoteretes/cognee)](https://github.com/topoteretes/cognee/tags/)
  [![Downloads](https://static.pepy.tech/badge/cognee)](https://pepy.tech/project/cognee)
  [![License](https://img.shields.io/github/license/topoteretes/cognee?colorA=00C586&colorB=000000)](https://github.com/topoteretes/cognee/blob/main/LICENSE)
  [![Contributors](https://img.shields.io/github/contributors/topoteretes/cognee?colorA=00C586&colorB=000000)](https://github.com/topoteretes/cognee/graphs/contributors)
  <a href="https://github.com/sponsors/topoteretes"><img src="https://img.shields.io/badge/Sponsor-❤️-ff69b4.svg" alt="Sponsor"></a>

<p>
  <a href="https://trendshift.io/repositories/13955" target="_blank" style="display:inline-block;">
    <img src="https://trendshift.io/api/badge/repositories/13955" alt="topoteretes%2Fcognee | Trendshift" width="250" height="55" />
  </a>
</p>

Use our knowledge engine to build personalized and dynamic memory for AI Agents.

  <p align="center">
  🌐 Available Languages
  :
  <!-- Keep these links. Translations will automatically update with the README. -->
  <a href="https://www.readme-i18n.com/topoteretes/cognee?lang=de">Deutsch</a> |
  <a href="https://www.readme-i18n.com/topoteretes/cognee?lang=es">Español</a> |
  <a href="https://www.readme-i18n.com/topoteretes/cognee?lang=fr">Français</a> |
  <a href="https://www.readme-i18n.com/topoteretes/cognee?lang=ja">日本語</a> |
  <a href="README_ko.md">한국어</a> |
  <a href="https://www.readme-i18n.com/topoteretes/cognee?lang=pt">Português</a> |
  <a href="https://www.readme-i18n.com/topoteretes/cognee?lang=ru">Русский</a> |
  <a href="https://www.readme-i18n.com/topoteretes/cognee?lang=zh">中文</a>
  </p>


<div style="text-align: center">
  <img src="https://raw.githubusercontent.com/topoteretes/cognee/refs/heads/main/assets/cognee_benefits.png" alt="Why cognee?" width="80%" />
</div>
</div>




## About Cognee

Cognee is an open-source knowledge engine that lets you ingest data in any format or structure and continuously learns to provide the right context for AI agents. It combines vector search, graph databases and cognitive science approaches to make your documents both searchable by meaning and connected by relationships as they change and evolve.



:star: _Help us reach more developers and grow the cognee community. Star this repo!_

:books: _Check our detailed [documentation](https://docs.cognee.ai/getting-started/installation#environment-configuration) for setup and configuration._

:crab: _Available as a plugin for your OpenClaw — [cognee-openclaw](https://www.npmjs.com/package/@cognee/cognee-openclaw)_

✴️ _Available as a plugin for your Claude Code — [claude-code-plugin](https://github.com/topoteretes/cognee-integrations/tree/main/integrations/claude-code)_


Cognee memory plugin


### Why use Cognee:

- Knowledge infrastructure — unified ingestion, graph/vector search, runs locally, ontology grounding, multimodal
- Persistent and Learning Agents - learn from feedback, context management, cross-agent knowledge sharing
- Reliable and Trustworthy Agents - agentic user/tenant isolation, traceability, OTEL collector, audit traits

### Product Features

<p align="center">
  <img src="assets/cognee_products.png" alt="Cognee Products" width="80%" />
</p>

## Basic Usage & Feature Guide

To learn more, [check out this short, end-to-end Colab walkthrough](https://colab.research.google.com/drive/12Vi9zID-M3fpKpKiaqDBvkk98ElkRPWy?usp=sharing) of Cognee's core features.

[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/drive/12Vi9zID-M3fpKpKiaqDBvkk98ElkRPWy?usp=sharing)

## Quickstart

Let’s try Cognee in just a few lines of code.

### Prerequisites

- Python 3.10 to 3.14

### Step 1: Install Cognee

You can install Cognee with **pip**, **poetry**, **uv**, or your preferred Python package manager.

```bash
uv pip install cognee
```

### Step 2: Configure the LLM
```python
import os
os.environ["LLM_API_KEY"] = "YOUR OPENAI_API_KEY"
```
Alternatively, create a `.env` file using our [template](https://github.com/topoteretes/cognee/blob/main/.env.template).

To integrate other LLM providers, see our [LLM Provider Documentation](https://docs.cognee.ai/setup-configuration/llm-providers).

### Step 3: Run the Pipeline

Cognee's API gives you four operations — `remember`, `recall`, `forget`, and `improve`:

```python
import cognee
import asyncio


async def main():
    # Store permanently in the knowledge graph (runs add + cognify + improve)
    await cognee.remember("Cognee turns documents into AI memory.")

    # Store in session memory (fast cache, syncs to graph in background)
    await cognee.remember("User prefers detailed explanations.", session_id="chat_1")

    # Query with auto-routing (picks best search strategy automatically)
    results = await cognee.recall("What does Cognee do?")
    for result in results:
        print(result)

    # Query session memory first, fall through to graph if needed
    results = await cognee.recall("What does the user prefer?", session_id="chat_1")
    for result in results:
        print(result)

    # Delete when done
    await cognee.forget(dataset="main_dataset")


if __name__ == '__main__':
    asyncio.run(main())

```

### Use the Cognee CLI

```bash
cognee-cli remember "Cognee turns documents into AI memory."

cognee-cli recall "What does Cognee do?"

cognee-cli forget --all
```

To open the local UI, run:
```bash
cognee-cli -ui
```

## Use with AI Agents

### Claude Code

Install the [Cognee memory plugin](https://github.com/topoteretes/cognee-integrations/tree/main/integrations/claude-code) to give Claude Code persistent memory across sessions. The plugin automatically captures tool calls into session memory via hooks and syncs to the permanent knowledge graph at session end.

**Setup:**

```bash
# Install cognee
pip install cognee

# Configure
export LLM_API_KEY="your-openai-key"

# Clone the plugin
git clone https://github.com/topoteretes/cognee-integrations.git

# Enable it (add to ~/.zshrc for permanent use)
claude --plugin-dir ./cognee-integrations/integrations/claude-code
```

Or connect to Cognee Cloud instead of running locally:

```bash
export COGNEE_SERVICE_URL="https://your-instance.cognee.ai"
export COGNEE_API_KEY="ck_..."
```

The plugin hooks into Claude Code's lifecycle — `SessionStart` initializes memory, `PostToolUse` captures actions, `UserPromptSubmit` injects relevant context, `PreCompact` preserves memory across context resets, and `SessionEnd` bridges session data into the permanent graph.

### Hermes Agent

Enable Cognee as the memory provider in [Hermes Agent](https://github.com/NousResearch/hermes-agent) for session-aware knowledge graph memory with auto-routing recall.

**Setup:**

```yaml
# ~/.hermes/config.yaml
memory:
  provider: cognee
```

```bash
export LLM_API_KEY="your-openai-key"
hermes  # start chatting — session memory and graph persistence are automatic
```

Or run `hermes memory setup` and select Cognee. For Cognee Cloud, set `COGNEE_SERVICE_URL` and `COGNEE_API_KEY` in `~/.hermes/.env`.


### Connect to Cognee Cloud

Point any Python agent at a managed Cognee instance — all SDK calls route to the cloud:

```python
import cognee

await cognee.serve(url="https://your-instance.cognee.ai", api_key="ck_...")

await cognee.remember("important context")
results = await cognee.recall("what happened?")

await cognee.disconnect()
```

## Examples

Browse more examples in the [`examples/`](examples/) folder — demos, guides, custom pipelines, and database configurations.

**Use Case 1 — Customer Support Agent**

```python
Goal: Resolve customer issues using their personal data across finance, support, and product history.

User: "My invoice looks wrong and the issue is still not resolved."

Cognee tracks: past interactions, failed actions, resolved cases, product history

# Agent response:
Agent: "I found 2 similar billing cases resolved last month.
        The issue was caused by a sync delay between payment
        and invoice systems — a fix was applied on your account."

# What happens under the hood:
- Unifies data sources from various company channels
- Reconstructs the interaction timeline and tracks outcomes
- Retrieves similar resolved cases
- Maps to the best resolution strategy
- Updates memory after execution so the agent never repeats the same mistake
```

**Use Case 2 — Expert Knowledge Distillation (SQL Copilot)**

```python
Goal: Help junior analysts solve tasks by reusing expert-level queries, patterns, and reasoning.

User: "How do I calculate customer retention for this dataset?"

Cognee tracks: expert SQL queries, workflow patterns, schema structures, successful implementations

# Agent response:
Agent: "Here's how senior analysts solved a similar retention query.
        Cognee matched your schema to a known structure and adapted
        the expert's logic to fit your dataset."

# What happens under the hood:
- Extracts and stores patterns from expert SQL queries and workflows
- Maps the current schema to previously seen structures
- Retrieves similar tasks and their successful implementations
- Adapts expert reasoning to the current context
- Updates memory with new successful patterns so junior analysts perform at near-expert level
```

## Deploy Cognee

Use [Cognee Cloud](https://www.cognee.ai) for a fully managed experience, or self-host with one of the 1-click deployment configurations below.

| Platform | Best For | Command |
|----------|----------|---------|
| **Cognee Cloud** | Managed service, no infrastructure to maintain | [Sign up](https://www.cognee.ai) or `await cognee.serve()` |
| **Modal** | Serverless, auto-scaling, GPU workloads | `bash distributed/deploy/modal-deploy.sh` |
| **Railway** | Simplest PaaS, native Postgres | `railway init && railway up` |
| **Fly.io** | Edge deployment, persistent volumes | `bash distributed/deploy/fly-deploy.sh` |
| **Render** | Simple PaaS with managed Postgres | Deploy to Render button |
| **Daytona** | Cloud sandboxes (SDK or CLI) | See `distributed/deploy/daytona_sandbox.py` |

See the [`distributed/`](distributed/) folder for deploy scripts, worker configurations, and additional details.

## Latest News

[![Watch Demo](https://img.youtube.com/vi/8hmqS2Y5RVQ/maxresdefault.jpg)](https://www.youtube.com/watch?v=8hmqS2Y5RVQ&t=13s)


## Community & Support

### Contributing
We welcome contributions from the community! Your input helps make Cognee better for everyone. See [`CONTRIBUTING.md`](CONTRIBUTING.md) to get started.

### Code of Conduct

We're committed to fostering an inclusive and respectful community. Read our [Code of Conduct](https://github.com/topoteretes/cognee/blob/main/CODE_OF_CONDUCT.md) for guidelines.

## Research & Citation

We recently published a research paper on optimizing knowledge graphs for LLM reasoning:

```bibtex
@misc{markovic2025optimizinginterfaceknowledgegraphs,
      title={Optimizing the Interface Between Knowledge Graphs and LLMs for Complex Reasoning},
      author={Vasilije Markovic and Lazar Obradovic and Laszlo Hajdu and Jovan Pavlovic},
      year={2025},
      eprint={2505.24478},
      archivePrefix={arXiv},
      primaryClass={cs.AI},
      url={https://arxiv.org/abs/2505.24478},
}
```
