athena-diary
Provides a SQLite-backed off-context diary for Letta agents with MCP tools for journaling and retrieval, keeping core memory uncluttered. Supports embedding summaries and FTS fallback for semantic search.
README
Athena Diary
SanctumOS
Off-context diary for Letta (and other MCP) agents: a SQLite journal plus MCP tools so the urge to remember does not stuff narrative into core memory.
Name: Athena Diary is named after Athena, Sanctum’s first long-running agent (user #1 of this pattern)—not because the product is Athena-only. Any Letta agent (or MCP client) can run its own diary instance.
What this is
Agents over-journal into core memory blocks. On a large context window that burns budget and crowds out short-term recall. The impulse to write is good; core is the wrong surface.
Athena Diary gives the agent a rest bucket outside the context window:
- Write freely — volume belongs in the diary, not in core.
- Retrieve on demand — search returns pointers (ids + summaries); load full bodies only when needed.
- Embed summaries — vector search over gists (
sqlite-vecwhen available), with FTS on body/summary so a bad summary cannot hide an entry. - Sleeptime clerk — tags, lesson-family, templated summaries, and re-embeds run on turn-based sleeptime passes (not a wall-clock “night”).
- Sensitive material stays out — intimate / medical / human-gated content belongs in Broca (or your equivalent) human blocks, not the diary. Privacy in v1 is instructional (same discipline as human-block practice), not ACL theater.
Same architectural shape as origin_conversation: SQLite source of truth + MCP wrapper.
Full product story: docs/OVERVIEW.md.
Tools (MCP)
| Tool | Role |
|---|---|
diary_write |
Append an entry (body required; optional summary / metadata) |
diary_get |
Fetch one entry by id (full body) |
diary_search |
Keyword / semantic search over summaries (pointers, not bodies) |
diary_sleeptime_pass |
Clerk batch: tag, summarize, link near-dupes, re-embed |
Full API: docs/TOOL_REFERENCE.md.
Quick start
git clone https://github.com/sanctumos/athena-diary.git
cd athena-diary
python3 -m venv .venv && source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -e '.[mcp,dev]'
# Optional vector extension:
# pip install -e '.[vec]'
cp .env.example .env # set DIARY_DB / embed mode as needed
athena-diary-mcp --version
athena-diary-mcp --describe
athena-diary-mcp health
# MCP stdio (what Letta / Cursor usually spawn):
athena-diary-mcp serve
Wire the server into your MCP client: docs/MCP_CLIENTS.md (ChatGPT, Claude Code, Cursor, Letta, others).
Legacy Letta / Sanctum bootstrap: docs/LETTA_BOOTSTRAP.md.
Step-by-step install: docs/GETTING_STARTED.md.
Documentation
| Doc | Description |
|---|---|
| docs/README.md | Documentation index |
| docs/OVERVIEW.md | Purpose, naming, architecture, what belongs where |
| docs/GETTING_STARTED.md | Install, first entry, attach to an agent |
| docs/LETTA_BOOTSTRAP.md | Bootstrapping onto a legacy Letta hot + sleeptime instance |
| docs/MCP_CLIENTS.md | ChatGPT, Claude Code / Desktop, Cursor, Letta, other MCP hosts |
| docs/TOOL_REFERENCE.md | Full MCP tool contracts and examples |
| docs/CONFIGURATION.md | Env vars, embed modes, DB path, transports |
| docs/AGENTS.md | Short summary for agent / AI readers |
| docs/COVERAGE.md | ≥90% coverage gate for contributors |
Design principles (v1)
- Diary first, core ruthlessly thin — never paste diary bodies into core; core may hold skinny pointers (e.g. lesson-family → search).
- No write gates — clerk cost is controlled by batched sleeptime, not by blocking capture.
- Summaries for vectors; FTS for safety — search remains useful even when summaries drift.
- One mixed diary store — per-human vaults and dual “discreet” DBs are deferred (leak / ops risk).
- Complements Letta archival — experiential / first-person noticing → diary; reference facts may still use archival.
Out of scope for v1: multi-tenant vaults, soft ACL over intimate text, auto-promotion into core, replacing archival entirely.
License
- Source code: GNU Affero General Public License v3.0 (AGPL-3.0)
- Documentation and non-code: Creative Commons Attribution-ShareAlike 4.0 International (CC-BY-SA 4.0)
See NOTICE and LICENSES/README.md.
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
Neon Database
MCP server for interacting with Neon Management API and databases
E2B
Using MCP to run code via e2b.
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.