Local retrieval works without a hosted model key
Cognee's local quickstart returns source passages without asking a hosted language model to write an answer. That's a useful distinction if you want an agent to recover a project decision after its conversation ends. The Python library turns text into searchable chunks and a graph of entities and relationships. Its remember and recall calls let your application store material and retrieve relevant evidence. Code and session lessons have their own ingestion paths.
The convenience has a measurable cost: our installed environment occupied 1,337 MB after pulling 280 packages. I'd consider that reasonable for an application that needs connected memory across documents and code. It's harder to justify for an assistant that only needs to search a short folder of notes. Start with a question whose answer depends on relationships between sources, then inspect what Cognee retrieves before trusting an agent's response.
What happened when we ran it
Our run installed Cognee commit ba3631f in 77 seconds and completed the build in 9 seconds. We cloned it on October 1, 2026, into an unprivileged Debian sandbox with 3 CPUs, 8 GB of RAM, no secrets, and the ghcr.io/astral-sh/uv:python3.12-bookworm image. Installation added 280 packages and used 1,337 MB on disk. The checkout itself contained 3,956 files, roughly 508,991 source lines, and occupied 101 MB.
The tests timed out at 900 seconds. The supplied tail shows a Python thread running an asyncio event loop, ending in the selector's poll call before the timeout banner. The progress string contains failure, error, and skipped-test markers. It doesn't identify their underlying exceptions or give a complete result summary. We cannot tell from that tail whether the waiting loop caused the timeout, nor assign blame to missing credentials or system packages. Pip-audit reported 5 known vulnerabilities. The supplied results don't name affected packages, severity, or reachable code paths, so they support a dependency warning without establishing an exploitable service. Our scan also found 61 CI workflow files, a Dockerfile, a compose file, and a tests directory. Those are useful maintenance signals. They don't turn the timed-out suite into a pass or establish how accurately the system retrieves an answer.
Keyless ingestion still downloads local models
The current local quickstart uses the GLiNER extra for graph extraction and a local embedding model, both downloaded on first use. It retrieves matching text, while LLM-dependent improvement stages skip when no model is configured. Generated answers and media work requiring vision or transcription need additional model configuration. A bundled keyword-search demo avoids those downloads, but exploring its sample graph doesn't show how your own documents will ingest.
The 77-second installation measurement covers our October checkout, not those first-use downloads or the current quickstart's extraction quality. Setting LLM_API_KEY switches the documented default to OpenAI language models and embeddings, with provider calls during processing and answering. Other providers and local Ollama setups have separate guides. Choose that path deliberately if your documents contain private material, and check which model handles extraction as well as the final answer.
The Postgres graph backend has a demo boundary
The README explicitly labels Postgres graph storage a demo feature and says the production-ready version is a licensed product. It makes a similar qualification about the bundled GLiNER extractor's accuracy and label coverage. Apache-2.0 licensing for the repository doesn't erase these distinctions. If your adoption depends on an entirely open, production-supported graph inside Postgres, settle that requirement before designing around the advertised single-database route.
A checkout with 3,956 files and about 508,991 source lines also asks more of a maintainer than the short Python example suggests. Cognee includes custom data models, ontologies, session improvement, and multiple retrieval strategies. That breadth earns its place when your domain has meaningful entities and relationships. For straightforward document lookup, the extra choices can consume time you'd rather spend checking whether search results actually answer the user's question.
The local Docker example disables access control
Cognee's README explains that ENABLE_BACKEND_ACCESS_CONTROL=false selects a single-user local posture. Leaving access control enabled requires an authenticated user for API calls, and the default account needs a configured password. Named storage volumes preserve memory across container removal. These are consequential deployment details: a working local example doesn't decide who may query a team's documents or whether stored knowledge survives a container replacement.
Our scan found 61 CI workflow files plus Docker and compose support, but running the complete local interface still has separate requirements. The UI launcher needs Node.js/npm, and its MCP service needs Docker. Source deployment can start the API, UI, and MCP server together. Claude Code users also get a memory plugin through the integrations repository. Read that plugin's capture behavior before giving it project sessions, and keep authentication and storage decisions explicit.
October changes show maintenance and upgrade work
GitHub records the last push on October 9, 2026, with connector requests updated on October 10. The API listed 31,965 stars and 609 open issues and PRs. Release v1.6.3, published October 7, includes retrieval and permission fixes plus removed configuration behavior. These dates show ongoing maintenance. They also mean our 900-second timeout at the October 1 commit cannot establish the result of testing that later release.
Graphiti is worth comparing for explicitly temporal knowledge graphs. Mem0 focuses on agent memory, while LlamaIndex gives document-processing applications a broader framework. None received a comparative performance test here. I'd trial Cognee on a small, inspectable corpus when graph relationships matter enough to accept its 1,337 MB installed footprint. Require the retrieved source to explain the answer, and make a completed test run on your chosen revision a condition of adoption.

