Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Use when the user wants to run cognee with Docker or docker compose — trying it out from the prebuilt image, starting the API server in a container, or bringing up the full stack (UI, MCP, Postgres, Neo4j) with compose profiles.
.claude/skills/topoteretes-cognee-docker/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-06 | ✗→✓ | ▲ Improved | -57% | 0% |
| case-01 | ✗→✓ | ▲ Improved | -28% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 47% | 0% |
| case-03 | ✗→✓ | ▲ Improved | 17% | 0% |
| case-04 | ✗→✓ | ▲ Improved | 148% | 0% |
For a local try-out, do NOT clone or build anything. Follow docs/minimal-docker-compose.md: save this as docker-compose.yml in an empty directory:
yamlservices: cognee: image: cognee/cognee:main ports: - "8000:8000" environment: LLM_API_KEY: ${LLM_API_KEY:?set LLM_API_KEY to your OpenAI API key} # Single-user try-out: no auth, shared local databases. ENABLE_BACKEND_ACCESS_CONTROL: "false"
Then:
bashexport LLM_API_KEY="sk-..." # OpenAI key (default LLM + embedding provider) docker compose up curl http://localhost:8000/health
Interactive API reference: http://localhost:8000/docs. First requests:
bashecho "Cognee turns documents into AI memory." > note.txt # remember = ingest + build the graph in one call (multipart form) curl -X POST http://localhost:8000/api/v1/remember -F "data=@note.txt" -F "datasetName=main_dataset" # recall = query it (JSON) curl -X POST http://localhost:8000/api/v1/recall -H "Content-Type: application/json" \ -d '{"query": "What does Cognee do?", "datasets": ["main_dataset"]}'
/api/v1/recall takes the question as query. It defaults search_type to GRAPH_COMPLETION for backward compatibility — pass "search_type": null to opt into auto-routing (the SDK recall() default). The difference is real: {"query": "Why does X?"} answers with GRAPH_COMPLETION, while the same query with "search_type": null routes to GRAPH_COMPLETION_COT.
Request DTOs accept both snake_case and camelCase for every field (alias_generator=to_camel + populate_by_name in cognee/api/DTO.py), so search_type and searchType are equally valid.
The legacy /api/v1/add + /api/v1/cognify + /api/v1/search endpoints still exist and are what remember/recall call underneath; use them only when you need a single stage on its own. /api/v1/improve and /api/v1/forget complete the memory API.
Data lives inside the container by default. To persist it, set DATA_ROOT_DIRECTORY=/cognee-data/data and SYSTEM_ROOT_DIRECTORY=/cognee-data/system and mount a named volume at /cognee-data (full example in docs/minimal-docker-compose.md).
The repository's docker-compose.yml builds from source and adds opt-in profiles. From the repo root (needs a .env with at least LLM_API_KEY; copy .env.template):
bashdocker compose up # API server only, port 8000 docker compose --profile ui up # + frontend on port 3000 docker compose --profile mcp up # + MCP server on port 8001 docker compose --profile postgres --profile neo4j up # + databases
Postgres profile: pgvector/pg17, user/password/db cognee/cognee/cognee_db on 5432. Neo4j profile: neo4j/pleaseletmein on 7474/7687. When cognee runs in a container and the database on the host, use DB_HOST=host.docker.internal.
ENABLE_BACKEND_ACCESS_CONTROL unset (defaults to true), every APIcall requires authentication — the single-user try-out sets it to false.
one of them leaves the other on OpenAI, so keep a valid OpenAI key or configure both (see the cognee-integrations skill).
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-07 | pass→pass | 13,587 | 9,162 | -33% | 1 | 1 | 0% | 1,611 | 1,675 | +4% | 0 | 0 | — |
case-06 | fail→pass | 19,111 | 6,552 | -66% | 1 | 1 | 0% | 2,842 | 1,230 | -57% | 0 | 0 | — |
case-01 | fail→pass | 21,033 | 10,381 | -51% | 1 | 1 | 0% | 3,139 | 2,265 | -28% | 0 | 0 | — |
case-02 | fail→pass | 12,175 | 8,973 | -26% | 1 | 1 | 0% | 1,228 | 1,802 | +47% | 0 | 0 | — |
case-03 | fail→pass | 17,373 | 14,014 | -19% | 1 | 1 | 0% | 2,429 | 2,837 | +17% | 0 | 0 | — |
case-04 | fail→pass | 16,748 | 7,462 | -55% | 1 | 1 | 0% | 589 | 1,459 | +148% | 0 | 0 | — |
case-05 | pass→pass | 12,271 | 6,827 | -44% | 1 | 1 | 0% | 1,279 | 1,346 | +5% | 0 | 0 | — |
case-08 | fail→pass | 33,046 | 7,966 | -76% | 1 | 1 | 0% | 2,543 | 1,572 | -38% | 0 | 0 | — |
case-09 | fail→pass | 13,667 | 8,259 | -40% | 1 | 1 | 0% | 1,458 | 1,613 | +11% | 0 | 0 | — |
case-10 | pass→pass | 14,121 | 10,470 | -26% | 1 | 1 | 0% | 1,740 | 2,087 | +20% | 0 | 0 | — |
case-11 | fail→pass | 11,432 | 7,080 | -38% | 1 | 1 | 0% | 1,041 | 1,384 | +33% | 0 | 0 | — |
case-12 | fail→pass | 15,930 | 9,119 | -43% | 1 | 1 | 0% | 1,826 | 1,706 | -7% | 0 | 0 | — |
case-13 | fail→pass | 12,674 | 10,899 | -14% | 1 | 1 | 0% | 1,375 | 1,987 | +45% | 0 | 0 | — |
case-14 | pass→fail | 10,462 | 7,454 | -29% | 1 | 1 | 0% | 948 | 1,419 | +50% | 0 | 0 | — |
case-15 | pass→pass | 10,321 | 6,665 | -35% | 1 | 1 | 0% | 788 | 1,284 | +63% | 0 | 0 | — |
case-16 | pass→pass | 8,801 | 6,545 | -26% | 1 | 1 | 0% | 503 | 1,251 | +149% | 0 | 0 | — |
case-17 | pass→pass | 14,551 | 7,389 | -49% | 1 | 1 | 0% | 1,707 | 1,422 | -17% | 0 | 0 | — |
case-18 | pass→pass | 17,275 | 7,786 | -55% | 1 | 1 | 0% | 2,120 | 1,455 | -31% | 0 | 0 | — |
case-19 | pass→pass | 9,439 | 6,672 | -29% | 1 | 1 | 0% | 715 | 1,237 | +73% | 0 | 0 | — |
case-20 | fail→pass | 11,335 | 7,076 | -38% | 1 | 1 | 0% | 1,056 | 1,379 | +31% | 0 | 0 | — |
case-21 | fail→pass | 18,157 | 6,878 | -62% | 1 | 1 | 0% | 2,296 | 1,350 | -41% | 0 | 0 | — |
case-22 | fail→pass | 27,005 | 13,875 | -49% | 1 | 1 | 0% | 829 | 2,662 | +221% | 0 | 0 | — |
case-23 | pass→pass | 18,963 | 15,475 | -18% | 1 | 1 | 0% | 2,629 | 3,033 | +15% | 0 | 0 | — |
case-24 | pass→pass | 11,729 | 11,023 | -6% | 1 | 1 | 0% | 1,152 | 1,948 | +69% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 24 cases were attempted, and 22 counted toward the lift figure. The other 2 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +50 percentage points is the difference between those two pass rates over the 22 comparable cases. 1 case got worse with the skill loaded, and it is included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.