Help us improve
Share bugs, ideas, or general feedback.
From dejavu
Adds long-term memory to AI applications via Deja Vu SDK. Covers Python/TypeScript clients, LangChain, CrewAI, LlamaIndex, and self-hosted memory.
npx claudepluginhub jsingletonai/dejavu --plugin dejavuHow this skill is triggered — by the user, by Claude, or both
Slash command
/dejavu:dejavuThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
> **Skill Graph:** This skill is part of the Deja Vu skill graph:
Guides agents to deliberately search or skip memory using dejavu MCP tools, with query strategies and metadata filters for decisions, user preferences, conventions, and anti-patterns.
Provides authoritative reference for neo4j-agent-memory Python package and NAMS hosted service—a graph-native memory system for AI agents on Neo4j with short-term, long-term, and reasoning layers. Useful for integrations with LangChain, LlamaIndex, CrewAI; docs, tutorials, and memory comparisons.
Share bugs, ideas, or general feedback.
Skill Graph: This skill is part of the Deja Vu skill graph:
- dejavu (this skill) -- Platform Client SDK + OSS (Python + TypeScript)
- dejavu-cli -- Command-line interface
- dejavu-vercel-ai-sdk -- Vercel AI SDK provider
Deja Vu is a managed memory layer for AI applications. It stores, retrieves, and manages user memories via API — no infrastructure to deploy. For self-hosted usage, see the OSS section in the client references below.
Python:
pip install dejavu-memory
export VENICE_API_KEY="m0-your-api-key"
TypeScript/JavaScript:
npm install dejavu-memory
export VENICE_API_KEY="m0-your-api-key"
Get an API key at: https://app.dejavu.ai/dashboard/api-keys?utm_source=oss&utm_medium=dejavu-plugin-skill
Don't have a
VENICE_API_KEY? Rundejavu init --agent --json(afterpip install dejavu-cliornpm install -g @dejavu/cli) to mint an evaluation key without email or dashboard. The human can claim later withdejavu init --email <your-email>.
Python:
from dejavu import MemoryClient
client = MemoryClient(api_key="m0-xxx")
TypeScript:
import MemoryClient from 'dejavu-memory';
const client = new MemoryClient({ apiKey: 'm0-xxx' });
For async Python, use AsyncMemoryClient.
Every Deja Vu integration follows the same pattern: retrieve → generate → store.
messages = [
{"role": "user", "content": "I'm a vegetarian and allergic to nuts."},
{"role": "assistant", "content": "Got it! I'll remember that."}
]
client.add(messages, user_id="alice")
results = client.search("dietary preferences", filters={"user_id": "alice"})
for mem in results.get("results", []):
print(mem["memory"])
all_memories = client.get_all(filters={"user_id": "alice"})
client.update("memory-uuid", text="Updated: vegetarian, nut allergy, prefers organic")
client.delete("memory-uuid")
client.delete_all(user_id="alice") # delete all for a user
from dejavu import MemoryClient
from openai import OpenAI
dejavu = MemoryClient()
openai = OpenAI()
def chat(user_input: str, user_id: str) -> str:
# 1. Retrieve relevant memories
memories = dejavu.search(user_input, filters={"user_id": user_id})
context = "\n".join([m["memory"] for m in memories.get("results", [])])
# 2. Generate response with memory context
response = openai.chat.completions.create(
model="gpt-5-mini",
messages=[
{"role": "system", "content": f"User context:\n{context}"},
{"role": "user", "content": user_input},
]
)
reply = response.choices[0].message.content
# 3. Store interaction for future context
dejavu.add(
[{"role": "user", "content": user_input}, {"role": "assistant", "content": reply}],
user_id=user_id
)
return reply
add() before searching. Also verify user_id matches exactly (case-sensitive) and use filters={"user_id": "..."} syntax.OR instead, or query separately.infer=True (default) and infer=False for the same data. Stick to one mode.from dejavu import MemoryClient (or AsyncMemoryClient for async). Do not use from dejavu import Memory.top_k=20, threshold=0.1, rerank=False. Adjust as needed for your use case.If you're using SDK v2.x, note these differences:
user_id as top-level kwarg to search() instead of inside filterstop_k=100, no threshold, rerank=Trueenable_graph=TrueSee the migration guide for details.
For the latest docs beyond what's in the references, use the doc search tool:
python ${CLAUDE_SKILL_DIR}/scripts/dejavu_doc_search.py --query "topic"
python ${CLAUDE_SKILL_DIR}/scripts/dejavu_doc_search.py --page "/platform/features/graph-memory"
python ${CLAUDE_SKILL_DIR}/scripts/dejavu_doc_search.py --index
No API key needed — searches docs.dejavu.ai directly.
Language-specific deep references (Platform + OSS):
| Language | File |
|---|---|
| Python (MemoryClient + AsyncMemoryClient + Memory OSS) | client/python.md |
| TypeScript/Node.js (MemoryClient + Memory OSS) | client/node.md |
| Python vs TypeScript differences | client/differences.md |
Load these on demand for deeper detail:
| Topic | File |
|---|---|
| Quickstart (Python, TS, cURL) | references/quickstart.md |
| SDK guide (all methods, both languages) | references/sdk-guide.md |
| API reference (endpoints, filters, object schema) | references/api-reference.md |
| Architecture (pipeline, lifecycle, scoping, performance) | references/architecture.md |
| Platform features (retrieval, graph, categories, MCP, etc.) | references/features.md |
| Framework integrations (LangChain, CrewAI, OpenAI Agents, etc.) | references/integration-patterns.md |
| Use cases & examples (real-world patterns with code) | references/use-cases.md |
| Skill | When to use | Link |
|---|---|---|
| dejavu-cli | Terminal commands, scripting, CI/CD, agent tool loops | GitHub |
| dejavu-vercel-ai-sdk | Vercel AI SDK provider with automatic memory | GitHub |