The memory layer that thinks like a human: remembers what matters, forgets what doesn't, and never calls home.
Project description
Kore Memory
The memory layer that thinks like a human: remembers what matters, forgets what doesn't, and never calls home.
Why Kore?
Every AI agent memory tool out there has the same problem: they remember everything forever, require cloud APIs, or need an LLM just to decide what's worth storing.
Kore is different.
| Feature | Kore | Mem0 | Letta | Memori |
|---|---|---|---|---|
| Runs fully offline | ✅ | ❌ | ❌ | ❌ |
| No LLM required | ✅ | ❌ | ❌ | ✅ |
| Memory Decay (Ebbinghaus) | ✅ | ❌ | ❌ | ❌ |
| Auto-importance scoring | ✅ local | ✅ via LLM | ❌ | ❌ |
| Memory Compression | ✅ | ❌ | ❌ | ❌ |
| Semantic search (50+ langs) | ✅ local | ✅ via API | ✅ | ✅ |
| Timeline API | ✅ | ❌ | ❌ | ❌ |
| Access reinforcement | ✅ | ❌ | ❌ | ❌ |
| Install in 2 minutes | ✅ | ❌ | ❌ | ❌ |
How It Works
Kore models memory the way the human brain does:
- Save — store a memory with optional category and importance
- Auto-score — Kore calculates importance locally using content analysis (no API calls)
- Decay — memories fade over time using the Ebbinghaus forgetting curve
- Reinforce — retrieving a memory resets its clock and boosts its score
- Compress — similar memories are automatically merged to keep the DB lean
- Search — semantic search in any language, filtered by relevance and freshness
Quickstart
pip install kore-memory
pip install kore-memory[semantic] # + multilingual embeddings (50+ languages)
kore # starts server on http://localhost:8765
Save a memory
curl -X POST http://localhost:8765/save \
-H "Content-Type: application/json" \
-d '{"content": "User prefers concise responses", "category": "preference"}'
# → {"id": 1, "importance": 4, "message": "Memory saved"}
# importance was auto-scored: "preference" category + keyword "prefers" → 4
Search (any language)
# English query finds Italian content, French content, etc.
curl "http://localhost:8765/search?q=user+preferences&limit=5"
Run decay pass (call daily via cron)
curl -X POST http://localhost:8765/decay/run
# → {"updated": 42, "message": "Decay pass complete"}
Compress similar memories
curl -X POST http://localhost:8765/compress
# → {"clusters_found": 3, "memories_merged": 7, "new_records_created": 3}
Timeline: what did I know about X over time?
curl "http://localhost:8765/timeline?subject=project+alpha"
Memory Decay
Kore uses the Ebbinghaus forgetting curve to assign each memory a decay_score between 0.0 and 1.0:
decay = e^(-t * ln(2) / half_life)
Where:
t= days since last accesshalf_life= base days before 50% decay, adjusted by importance level
| Importance | Half-life | Meaning |
|---|---|---|
| 1 (low) | 7 days | Casual notes |
| 2 (normal) | 14 days | General context |
| 3 (important) | 30 days | Project info |
| 4 (high) | 90 days | Critical decisions |
| 5 (critical) | 365 days | Passwords, rules, never forget |
Every time a memory is retrieved, its access_count increases and its half-life is extended by 15% — just like spaced repetition in human learning.
Auto-Importance Scoring
When you save a memory without an explicit importance level, Kore scores it automatically:
- Category baseline —
preferencestarts at 4,financeat 3,generalat 1 - Keyword signals — words like
password,token,urgente→ importance 5 - Content length — detailed content gets a small boost
Zero LLM calls. Zero API costs.
API Reference
| Method | Endpoint | Description |
|---|---|---|
POST |
/save |
Save a memory |
GET |
/search |
Semantic search (any language) |
GET |
/timeline |
Chronological history for a subject |
DELETE |
/memories/{id} |
Delete a memory |
POST |
/decay/run |
Update all decay scores |
POST |
/compress |
Merge similar memories |
GET |
/health |
Health check + capabilities |
Full interactive docs: http://localhost:8765/docs
Categories
general · project · trading · finance · person · preference · task · decision
Requirements
- Python 3.11+
- SQLite (built into Python)
- Optional:
sentence-transformersfor semantic search
No PostgreSQL. No Redis. No Docker. No API keys.
License
MIT — use it, fork it, build on it.
Built with ❤️ for AI agents that deserve better memory.
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 kore_memory-0.2.0.tar.gz.
File metadata
- Download URL: kore_memory-0.2.0.tar.gz
- Upload date:
- Size: 17.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fc41b3cfa51bdecd491f80fd0ff61353165b9cea84a9d04ca4814fb60d2bf3f2
|
|
| MD5 |
800891afc365f08183fbc71be49f2399
|
|
| BLAKE2b-256 |
655680c70b0d245c5d7364dd2124c5f78d34a7451719c2dc23506fec9fa5efe3
|
File details
Details for the file kore_memory-0.2.0-py3-none-any.whl.
File metadata
- Download URL: kore_memory-0.2.0-py3-none-any.whl
- Upload date:
- Size: 18.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
151083f0412ff12400962e003c8061b8bad53bbbf117d9dd7c1e9b46ca23f918
|
|
| MD5 |
76fd23fe283c335c3877b0d4fef42d05
|
|
| BLAKE2b-256 |
cc9416ef9a676c5262368202cd94bd9aa14808d7a67d8aebeae980c68508f0c9
|