Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Use when the user wants to run the cognee API server (and optional UI) on their own machine — starting it, checking it's healthy, connecting the SDK or other clients to it, and choosing the right auth posture.
.claude/skills/topoteretes-cognee-server/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 15% | 0% |
| case-02 | ✗→✓ | ▲ Improved | -30% | 0% |
| case-03 | ✗→✓ | ▲ Improved | -12% | 0% |
| case-09 | ✗→✓ | ▲ Improved | -38% | 0% |
| case-10 | ✗→✓ | ▲ Improved | -45% | 0% |
bashcognee-cli -ui
launches the full local stack: FastAPI backend on http://localhost:8000 and the UI on http://localhost:3000. Needs LLM_API_KEY in the environment or .env. The interactive API reference is at http://localhost:8000/docs, health at /health.
For API-only serving via Docker instead, use the cognee-docker skill (the prebuilt cognee/cognee:main image or docker compose up from the repo).
ENABLE_BACKEND_ACCESS_CONTROL decides everything:
true (default): multi-tenant — auth required on every API call, peruser+dataset database isolation.
false: single-user local mode — no auth, shared local databases. Rightchoice for a personal dev server; never for anything exposed.
REQUIRE_AUTHENTICATION=false is ignored while access control is on; to turn auth off you must set ENABLE_BACKEND_ACCESS_CONTROL=false.
bash cognee-cli serve --url http://localhost:8000 # local instance cognee-cli serve # cognee cloud (device flow) cognee-cli serve --logout # disconnect
In Python: await cognee.serve(url="http://localhost:8000").
/api/v1/ — the memory API is remember(plus remember/entry), recall, improve, forget; sessions covers session memory; datasets, users, visualize handle the rest. The legacy add, cognify, search, memify, and delete routes still exist and are what the memory routes call underneath (see cognee/api/client.py for the registered routers, or GET /openapi.json on a running server).
Note there is no /api/v1/feedback route — feedback exists as a CLI command and in the SDK, but is not exposed over HTTP.
pythonfrom cognee.api.v1.visualize import visualization_server shutdown = visualization_server(port=8080) # synchronous; returns a shutdown callable
"8080:8000").
set ENABLE_BACKEND_ACCESS_CONTROL=false and restart.
recall/search returns [] instead of erroring → permission-filteredresult; check dataset access rights for the calling user.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→pass | 16,514 | 12,701 | -23% | 1 | 1 | 0% | 1,893 | 2,174 | +15% | 0 | 0 | — |
case-02 | fail→pass | 18,982 | 10,916 | -42% | 1 | 1 | 0% | 2,630 | 1,838 | -30% | 0 | 0 | — |
case-03 | fail→pass | 25,695 | 17,734 | -31% | 1 | 1 | 0% | 3,462 | 3,051 | -12% | 0 | 0 | — |
case-04 | pass→pass | 10,881 | 9,234 | -15% | 1 | 1 | 0% | 1,089 | 1,474 | +35% | 0 | 0 | — |
case-05 | pass→pass | 11,189 | 9,375 | -16% | 1 | 1 | 0% | 922 | 1,503 | +63% | 0 | 0 | — |
case-06 | pass→pass | 10,964 | 8,497 | -23% | 1 | 1 | 0% | 1,028 | 1,381 | +34% | 0 | 0 | — |
case-07 | pass→pass | 9,839 | 7,238 | -26% | 1 | 1 | 0% | 876 | 1,053 | +20% | 0 | 0 | — |
case-08 | pass→pass | 10,024 | 6,883 | -31% | 1 | 1 | 0% | 860 | 1,046 | +22% | 0 | 0 | — |
case-09 | fail→pass | 18,108 | 8,805 | -51% | 1 | 1 | 0% | 2,275 | 1,402 | -38% | 0 | 0 | — |
case-10 | fail→pass | 15,496 | 7,360 | -53% | 1 | 1 | 0% | 2,056 | 1,124 | -45% | 0 | 0 | — |
case-15 | fail→pass | 26,999 | 11,017 | -59% | 1 | 1 | 0% | 3,997 | 1,707 | -57% | 0 | 0 | — |
case-11 | fail→pass | 17,923 | 6,699 | -63% | 1 | 1 | 0% | 2,258 | 1,015 | -55% | 0 | 0 | — |
case-12 | fail→pass | 11,665 | 7,026 | -40% | 1 | 1 | 0% | 1,079 | 998 | -8% | 0 | 0 | — |
case-13 | pass→pass | 12,994 | 6,880 | -47% | 1 | 1 | 0% | 1,354 | 1,026 | -24% | 0 | 0 | — |
case-14 | fail→pass | 18,981 | 9,978 | -47% | 1 | 1 | 0% | 2,267 | 1,503 | -34% | 0 | 0 | — |
case-16 | pass→pass | 13,126 | 9,647 | -27% | 1 | 1 | 0% | 1,475 | 1,582 | +7% | 0 | 0 | — |
case-17 | pass→pass | 25,797 | 8,043 | -69% | 1 | 1 | 0% | 1,646 | 1,209 | -27% | 0 | 0 | — |
case-18 | pass→pass | 8,801 | 7,755 | -12% | 1 | 1 | 0% | 557 | 970 | +74% | 0 | 0 | — |
case-19 | pass→pass | 18,792 | 10,946 | -42% | 1 | 1 | 0% | 2,181 | 1,607 | -26% | 0 | 0 | — |
case-20 | pass→pass | 16,989 | 9,666 | -43% | 1 | 1 | 0% | 1,882 | 1,676 | -11% | 0 | 0 | — |
case-21 | pass→pass | 15,446 | 7,359 | -52% | 1 | 1 | 0% | 1,760 | 955 | -46% | 0 | 0 | — |
case-22 | fail→pass | 13,867 | 7,162 | -48% | 1 | 1 | 0% | 1,618 | 1,053 | -35% | 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. 22 cases were attempted. The headline lift of +45 percentage points is the difference between those two pass rates over the 22 comparable cases.
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.