Web-based personal memory assistant backend (FastAPI + Neo4j + Qdrant + OpenAI)
Project description
Yod extracts structured knowledge from conversations, stores it in a knowledge graph, and retrieves relevant context with full citations. Unlike memory systems that compress into summaries, Yod preserves the exact quotes that created each memory — enabling explainable AI.
Why Yod?
| Feature | Yod | Mem0 | Notes |
|---|---|---|---|
| MERGE Operation | ✅ ADD/UPDATE/DELETE/KEEP/MERGE | ⚠️ ADD/UPDATE/DELETE/NOOP | Yod can combine partial truths |
| Citation Provenance | ✅ Quote + Source links | ⚠️ Timestamps only | Yod traces to exact evidence |
| PII Redaction | ✅ Built-in | ❌ Not mentioned | Yod redacts before LLM/storage |
| Quote Storage | ✅ Exact quotes stored | ❌ No quote tracking | Yod preserves source evidence |
| Session Scoping | ✅ | ✅ | Both have user/agent/session |
| Temporal Queries | ✅ | ✅ (Mem0g) | Both support point-in-time |
| Enterprise Security | ⚠️ AES-256 | ✅ SOC2/HIPAA | Mem0 ahead on certifications |
| Multi-LLM Support | ✅ | ✅ | Both support multiple providers |
| Self-Hosted Full Stack | ✅ docker-compose | ⚠️ Cloud-first | Yod runs locally in 5 min |
| Open Source Completeness | ✅ Frontend + Auth + Deploy | ⚠️ Core only | Yod is fully open |
Quick Start
Cloud API
pip install yod
from yod import YodClient
client = YodClient(api_key="sk-yod-...") # Get a key at https://yod.agames.live
client.ingest_chat("My name is Alex. I work at Google.")
response = client.chat("Where do I work?")
print(response.answer) # "You work at Google."
print(response.citations) # [Citation(quote="I work at Google")]
Self-Hosted
git clone https://github.com/agames-live/yod.git && cd yod
cp .env.example .env # Add OPENAI_API_KEY
docker-compose up -d
Open http://localhost:3000 and sign in with Google/GitHub.
Features
- Evidence-Preserving — Every memory links to the exact quote that created it
- Smart Conflict Resolution — LLM-based decisions: ADD, UPDATE, DELETE, KEEP, MERGE
- Entity Resolution — "my dog Max" links to the same entity across conversations
- Temporal Versioning — Query memories as they existed at any point in time
- Session Scoping — Isolate memories per conversation or agent
- Multi-LLM — OpenAI, Anthropic Claude, or local Ollama models
- Full Stack — Frontend, auth, and infrastructure configs included
Architecture
┌─────────────────────────────────────────────────────────────┐
│ Yod API │
├──────────────────────────────┬──────────────────────────────┤
│ Ingest Pipeline │ Query Pipeline │
│ ┌────────────────────────┐ │ ┌─────────────────────────┐ │
│ │ Text → Semantic Chunks │ │ │ Semantic Search (Qdrant)│ │
│ │ LLM → Claims + Entities│ │ │ Graph Traversal (Neo4j) │ │
│ │ Conflict Resolution │ │ │ Citation Assembly │ │
│ │ Evidence Storage │ │ │ LLM Response Generation │ │
│ └────────────────────────┘ │ └─────────────────────────┘ │
├──────────────────────────────┴──────────────────────────────┤
│ Neo4j (Graph) │ Qdrant (Vectors) │ Redis (Cache) │
└─────────────────────────────────────────────────────────────┘
Documentation
| Resource | Description |
|---|---|
| API Reference | Authentication, endpoints, rate limits |
| Python SDK | SDK guide with async support |
| LLM Integrations | OpenAI, Anthropic, LangChain examples |
| Configuration | LLM providers, sessions, memory settings |
| Testing Guide | API testing with curl and SDK |
Roadmap
| Feature | Status |
|---|---|
| Multi-LLM providers (OpenAI, Anthropic, Ollama) | ✅ Done |
| Session/Agent scoping | ✅ Done |
| LLM memory decisions (MERGE) | ✅ Done |
| Redis distributed caching | ✅ Done |
| TypeScript SDK | In Progress |
| SOC2/HIPAA certification | Planned |
| Framework integrations (CrewAI, LangGraph) | Planned |
Development
# Backend
poetry install && uvicorn app.main:app --reload
# Frontend
cd frontend && npm install && npm run dev
# SDK
cd sdk && pip install -e ".[dev]" && pytest
Contributing
We welcome contributions! See CONTRIBUTING.md for guidelines.
Priority areas: TypeScript SDK, framework integrations (CrewAI, LangGraph, Vercel AI SDK)
Chat Interface
License
Apache 2.0 — See LICENSE
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file yod-0.2.1.tar.gz.
File metadata
- Download URL: yod-0.2.1.tar.gz
- Upload date:
- Size: 89.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
29f9a600e43579134db78a0b6e43de5b9a27543ad178ab70ae716cb606f999c6
|
|
| MD5 |
8400305e9ce96c555b1ddb0ea9428494
|
|
| BLAKE2b-256 |
dd2aebc81420b8e025b256e033ae371e094466c9cc26dcd6fc3c6b3629037690
|
File details
Details for the file yod-0.2.1-py3-none-any.whl.
File metadata
- Download URL: yod-0.2.1-py3-none-any.whl
- Upload date:
- Size: 123.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a63b20b80bc97e7c91bad137d5bc032fa71b675709d6db11a0a787c4ea700fcd
|
|
| MD5 |
41ce5cda0879338595013b4441470e81
|
|
| BLAKE2b-256 |
4b6a907cd81b5ba104daab278b2db5b6641f5e6f1385c37fc333b37819462508
|