What survives a run.
deja is a self-hosted memory layer for agents. It exposes durable memory via REST + MCP, with scoped recall and optional live working state.
- Quickstart: https://deja.coey.dev/guides/quickstart
- Connect an MCP client: https://deja.coey.dev/docs
- Integrations index: https://deja.coey.dev/integrations
- Cursor integration: https://deja.coey.dev/integrations/cursor
- Claude Code integration: https://deja.coey.dev/integrations/claude-code
- GitHub Actions integration: https://deja.coey.dev/integrations/github-actions
- REST + MCP reference: https://deja.coey.dev/docs
- OpenAPI (working state):
docs/openapi-working-state.yaml - Drizzle schema source of truth:
src/schema.ts - Migration artifacts:
drizzle/
- Architecture & self-hosting: https://deja.coey.dev/guides/architecture-and-self-hosting
- Use cases: https://deja.coey.dev/use-cases
git clone https://github.com/acoyfellow/deja
cd deja
bun install
wrangler login
wrangler vectorize create deja-embeddings --dimensions 384 --metric cosine
wrangler secret put API_KEY
bun run deployAny MCP-capable agent can connect to:
- Endpoint:
https://<your-host>/mcp - Header:
Authorization: Bearer <API_KEY>
Example:
{
"mcpServers": {
"deja": {
"type": "http",
"url": "https://deja.your-subdomain.workers.dev/mcp",
"headers": {
"Authorization": "Bearer ${DEJA_API_KEY}"
}
}
}
}- Memory:
/learn,/inject,/query,/learnings,/learning/:id,/stats - Working state:
/state/:runId,/state/:runId/events,/state/:runId/resolve - Secrets:
/secret,/secret/:name,/secrets
For full payloads and examples, use: https://deja.coey.dev/docs