322 lines
8.2 KiB
Markdown
322 lines
8.2 KiB
Markdown
---
|
|
summary: "Cognee knowledge graph memory: setup, Docker config, and usage"
|
|
read_when:
|
|
- Setting up Cognee memory provider
|
|
- Configuring knowledge graph memory
|
|
- Running Cognee with Docker
|
|
---
|
|
|
|
# Cognee Memory Provider
|
|
|
|
Clawdbot supports **Cognee** as an optional memory provider. Unlike the default SQLite-based vector memory, Cognee builds a knowledge graph with entity extraction and semantic relationships, providing richer contextual memory for your AI agent.
|
|
|
|
## What is Cognee?
|
|
|
|
Cognee is an AI memory framework that:
|
|
- Extracts entities (people, places, concepts) from documents
|
|
- Builds a knowledge graph of relationships
|
|
- Enables semantic search with LLM-powered reasoning
|
|
- Supports multiple search modes (GRAPH_COMPLETION, chunks, summaries)
|
|
|
|
Learn more at [docs.cognee.ai](https://docs.cognee.ai/).
|
|
|
|
## Setup Options
|
|
|
|
### Option 1: Local Docker (Recommended)
|
|
|
|
Use the repo example compose file:
|
|
|
|
```bash
|
|
docker compose -f examples/cognee-docker-compose.yaml up -d
|
|
```
|
|
|
|
This binds to `127.0.0.1:8000`, so Cognee is only reachable from your machine.
|
|
|
|
**Verify:**
|
|
|
|
```bash
|
|
curl http://localhost:8000/health
|
|
```
|
|
|
|
### Option 2: Cognee Cloud
|
|
|
|
Use the hosted Cognee service:
|
|
|
|
1. Sign up at [platform.cognee.ai](https://platform.cognee.ai/)
|
|
2. Get your API key from the dashboard
|
|
3. Use base URL: `https://cognee--cognee-saas-backend-serve.modal.run`
|
|
|
|
## Configuration
|
|
|
|
Clawdbot reads `~/.clawdbot/clawdbot.json` (JSON5). For local + secure setup, use an env var for the Cognee token and reference it in config.
|
|
|
|
### Step 1: Put tokens in `examples/.env`
|
|
|
|
```bash
|
|
LLM_API_KEY="your-llm-api-key"
|
|
COGNEE_API_KEY="your-cognee-access-token"
|
|
CLAWDBOT_GATEWAY_TOKEN="your-random-gateway-token"
|
|
```
|
|
|
|
### Step 2: Configure Cognee in `~/.clawdbot/clawdbot.json`
|
|
|
|
```json5
|
|
{
|
|
agents: {
|
|
defaults: {
|
|
memorySearch: {
|
|
enabled: true,
|
|
provider: "cognee",
|
|
sources: ["memory", "sessions"],
|
|
experimental: { sessionMemory: true },
|
|
cognee: {
|
|
baseUrl: "http://localhost:8000",
|
|
apiKey: "${COGNEE_API_KEY}",
|
|
datasetName: "clawdbot",
|
|
searchType: "GRAPH_COMPLETION",
|
|
maxResults: 6,
|
|
autoCognify: true,
|
|
timeoutSeconds: 180
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
### Step 3: Start the gateway with env loaded
|
|
|
|
```zsh
|
|
set -a; source "examples/.env"; set +a; pnpm clawdbot gateway --port 18789 --token "$CLAWDBOT_GATEWAY_TOKEN" --verbose
|
|
```
|
|
|
|
### Cloud Configuration (tbt)
|
|
|
|
```yaml
|
|
agents:
|
|
defaults:
|
|
memorySearch:
|
|
enabled: true
|
|
provider: cognee
|
|
sources: [memory, sessions]
|
|
cognee:
|
|
baseUrl: https://cognee--cognee-saas-backend-serve.modal.run
|
|
apiKey: your-api-key-here # Required for cloud
|
|
datasetName: clawdbot
|
|
searchType: GRAPH_COMPLETION
|
|
maxResults: 8
|
|
autoCognify: true
|
|
timeoutSeconds: 60
|
|
```
|
|
|
|
## Configuration Options
|
|
|
|
| Option | Type | Default | Description |
|
|
|--------|------|---------|-------------|
|
|
| `baseUrl` | string | `http://localhost:8000` | Cognee API endpoint |
|
|
| `apiKey` | string | - | Access token (required if Cognee auth is enabled) |
|
|
| `datasetName` | string | `"clawdbot"` | Dataset name for organizing memories |
|
|
| `searchType` | string | `"GRAPH_COMPLETION"` | Search mode: `GRAPH_COMPLETION`, `chunks`, or `summaries` |
|
|
| `maxResults` | number | `6` | Maximum search results returned |
|
|
| `autoCognify` | boolean | `true` | Auto-process documents after adding |
|
|
| `cognifyBatchSize` | number | `100` | Batch size for processing |
|
|
| `timeoutSeconds` | number | `180` | Request timeout in seconds |
|
|
|
|
## Search Types
|
|
|
|
Cognee offers these modes:
|
|
|
|
### GRAPH_COMPLETION
|
|
Best for: **High-level understanding and reasoning**
|
|
- Returns graph-completion outputs over the knowledge graph
|
|
- Good for: "What projects am I working on?" or "Summarize my notes about X"
|
|
|
|
### Chunks
|
|
Best for: **Specific text matching**
|
|
- Returns raw document chunks
|
|
- Similar to traditional vector search
|
|
- Good for: Finding exact quotes or specific information
|
|
|
|
### Summaries
|
|
Best for: **Document overviews**
|
|
- Returns condensed summaries
|
|
- Good for: Quick scanning of content
|
|
|
|
## Usage
|
|
|
|
### Memory Files
|
|
|
|
Cognee automatically syncs your memory files:
|
|
- `MEMORY.md` or `memory.md` in workspace root
|
|
- All `*.md` files in `memory/` directory
|
|
|
|
### Session Transcripts (Optional)
|
|
|
|
Enable session memory to index conversation history:
|
|
|
|
```yaml
|
|
agents:
|
|
defaults:
|
|
memorySearch:
|
|
provider: cognee
|
|
sources: [memory, sessions] # Include sessions
|
|
experimental:
|
|
sessionMemory: true
|
|
```
|
|
|
|
### Manual Sync and Status
|
|
|
|
```bash
|
|
# Force sync + cognify for the current agent
|
|
clawdbot memory status --index --json
|
|
```
|
|
|
|
## How It Works
|
|
|
|
1. **Add**: Memory files are sent to Cognee with metadata
|
|
2. **Cognify**: Cognee processes documents:
|
|
- Extracts entities (people, places, concepts)
|
|
- Identifies relationships
|
|
- Builds knowledge graph
|
|
3. **Search**: Agent queries use semantic search:
|
|
- Searches knowledge graph
|
|
- Returns relevant insights/chunks/summaries
|
|
- Includes metadata and scores
|
|
|
|
## Comparison: Cognee vs SQLite Memory
|
|
|
|
| Feature | Cognee | SQLite (Default) |
|
|
|---------|--------|------------------|
|
|
| **Setup** | Requires Docker/cloud | Built-in, no setup |
|
|
| **Offline** | No (needs service) | Yes (fully local) |
|
|
| **Search** | Knowledge graph + LLM | Vector + BM25 hybrid |
|
|
| **Entities** | Extracted automatically | Not available |
|
|
| **Relationships** | Yes (graph-based) | No |
|
|
| **Speed** | Slower (API calls) | Faster (local DB) |
|
|
| **Memory** | Stored externally | SQLite file |
|
|
| **Best for** | Rich context, reasoning | Fast lookup, privacy |
|
|
|
|
## Troubleshooting
|
|
|
|
### Connection Failed
|
|
|
|
**Error**: `Failed to connect to Cognee at http://localhost:8000`
|
|
|
|
**Solutions**:
|
|
1. Verify Docker is running: `docker ps | grep cognee`
|
|
2. Check Cognee logs: `docker logs cognee`
|
|
3. Test manually: `curl http://localhost:8000/health`
|
|
4. Ensure port 8000 is not blocked
|
|
|
|
### Slow Performance
|
|
|
|
**Solutions**:
|
|
1. Reduce `maxResults` (try 3-5 instead of 10+)
|
|
2. Use `searchType: "chunks"` for faster results
|
|
3. Set `autoCognify: false` and cognify manually
|
|
4. Check Docker resource limits
|
|
|
|
### Out of Memory
|
|
|
|
**Solutions**:
|
|
1. Increase Docker memory limit (Docker Desktop settings)
|
|
2. Reduce `cognifyBatchSize` (try 50 instead of 100)
|
|
3. Process fewer files at once
|
|
4. Clear old datasets via Cognee API
|
|
|
|
### 401 Unauthorized (Cognee auth)
|
|
|
|
**Cause**: Cognee auth is enabled, but Clawdbot is missing/using an invalid `COGNEE_API_KEY`.
|
|
|
|
**Fix**:
|
|
1. Log in to Cognee and get a fresh access token.
|
|
2. Update `COGNEE_API_KEY` in `examples/.env`.
|
|
3. Restart the gateway with env loaded (see Step 3 above).
|
|
|
|
## Advanced Configuration
|
|
|
|
### Per-Agent Override
|
|
|
|
```yaml
|
|
agents:
|
|
defaults:
|
|
memorySearch:
|
|
provider: openai # Default for all agents
|
|
|
|
agents:
|
|
research-bot:
|
|
memorySearch:
|
|
provider: cognee # Override for this agent
|
|
cognee:
|
|
searchType: GRAPH_COMPLETION
|
|
maxResults: 10
|
|
```
|
|
|
|
### Hybrid Setup (Not Yet Supported)
|
|
|
|
Future versions may support using both Cognee and SQLite:
|
|
- Cognee for semantic understanding
|
|
- SQLite for fast local lookup
|
|
|
|
## Docker Production Tips
|
|
|
|
### Health Checks
|
|
|
|
Add health checks to docker-compose.yml:
|
|
|
|
```yaml
|
|
services:
|
|
cognee:
|
|
healthcheck:
|
|
test: ["CMD", "curl", "-f", "http://localhost:8000/health"]
|
|
interval: 30s
|
|
timeout: 10s
|
|
retries: 3
|
|
start_period: 40s
|
|
```
|
|
|
|
### Resource Limits
|
|
|
|
```yaml
|
|
services:
|
|
cognee:
|
|
deploy:
|
|
resources:
|
|
limits:
|
|
cpus: '2'
|
|
memory: 4G
|
|
reservations:
|
|
cpus: '1'
|
|
memory: 2G
|
|
```
|
|
|
|
### Persistent Storage
|
|
|
|
Mount volumes for persistence:
|
|
|
|
```yaml
|
|
volumes:
|
|
- ./cognee_data:/app/cognee/.cognee_system
|
|
- ./cognee_logs:/app/logs
|
|
```
|
|
|
|
## Roadmap
|
|
|
|
Planned features:
|
|
- [ ] Hybrid mode (Cognee + SQLite)
|
|
- [ ] Graph visualization export
|
|
- [ ] Manual entity management
|
|
|
|
## Resources
|
|
|
|
- [Cognee Documentation](https://docs.cognee.ai/)
|
|
- [Cognee GitHub](https://github.com/topoteretes/cognee)
|
|
- [Clawdbot Memory Guide](/memory)
|
|
- [Docker Setup Guide](/install/docker)
|
|
|
|
## Feedback
|
|
|
|
Cognee integration is new. Report issues at:
|
|
- Clawdbot: [github.com/clawdbot/clawdbot/issues](https://github.com/clawdbot/clawdbot/issues)
|
|
- Cognee: [github.com/topoteretes/cognee/issues](https://github.com/topoteretes/cognee/issues)
|