Letta is an agent harness. Dakera is the memory layer under any agent.
Letta Code is a stateful agent harness: the agent rewrites its own memory. Dakera does not run your agent at all. It stores and recalls memories deterministically, on-device, for whichever agent or framework you already use. They solve different problems, and this page shows where the line falls.
Reviewed October 2026
Who edits the memory
In Letta Code, memory lives in git-backed Markdown files (MemFS). The agent reads and edits them with ordinary file tools, and background "dreaming" subagents review recent conversations and consolidate lessons. Each of those steps is a model conversation. In Dakera, your agent calls store and recall, and the server does the rest locally.
| Letta Code | Dakera | |
|---|---|---|
| What it is | Agent harness: CLI, desktop app, browser and chat channels, skills, subagents | Memory server your agent calls over REST, SDKs or MCP |
| Memory form | Markdown files in a git repository | Records with vectors, entities, importance, TTL and decay |
| Per-memory cost | Model tokens whenever the agent or its subagents edit memory | None; embeddings and extraction run in the process |
| Where it runs | Letta Cloud by default, or locally; you choose a model and keys | Your infrastructure; one container |
| Licence | Apache 2.0 | MIT SDKs, CLI and MCP server; proprietary server binary, no usage fees |
One memory, every agent
Because Dakera is a service, agents built in different frameworks can share one store. Point a LangChain agent, a CrewAI crew and Claude (through the MCP server) at the same agent_id, and what one learns the others recall.
from langchain_dakera import DakeraMemory
memory = DakeraMemory(
api_url="http://localhost:3000",
api_key="dk-mykey",
agent_id="support-bot",
)
memory.save_context(
{"input": "Prefers email over phone."},
{"output": "Noted."},
)from crewai_dakera import DakeraStorage
storage = DakeraStorage(
api_url="http://localhost:3000",
api_key="dk-mykey",
agent_id="support-bot",
)
hits = storage.search("contact preference")
# Claude via dakera-mcp: same agent_idClass names from the LangChain and CrewAI integration pages. AutoGen, LlamaIndex, Strands, LangChain.js and the Vercel AI SDK are covered on the integrations page.
See why a memory came back
When memory is a service, you can inspect it. The Dakera Dashboard's Recall lab shows why each memory ranked where it did, and every API response carries a rerank_report. Per-request rerank_candidates lets you choose how many candidates the cross-encoder scores.

What v0.12.0 adds for agent builders
- Multilingual agents. bge-m3 covers 100+ languages in one space, with a per-request
lang. - Voice and documents. On-device speech to text (five Whisper models) and visual recall over document pages, both opt-in.
- Isolation by default. Scoped API keys pin an agent to its namespaces, and graph edges are private to their agent.
- Safe upgrades. Upgrades from v0.11.108 run in place;
dakera downgradereverses them.
When to choose each
Choose Letta Code if
- You want the whole agent: a harness with skills, subagents, scheduling and messaging channels.
- You like agents that rewrite their own memory, and want it as human-editable files with git history.
- A coding-agent workflow is the centre of your use case.
- You want Letta Cloud to hold agent state across machines.
Choose Dakera if
- You already have an agent framework and need memory it can call.
- Several agents, languages or frameworks must share one memory.
- Memory volume is high enough that a model call per decision is the wrong tool.
- You need a service with namespaces, scoped keys, backups and health probes.
Prefer managed? Dakera Cloud is coming. Join the waitlist.
Frequently asked questions
Is Letta a memory layer or an agent framework?
Today Letta centres on Letta Code, which its README describes as a stateful agent harness. In 2026 the project retired the older Letta server API, moving agent state to git-backed memory and client-side execution.
Can I use Dakera with a Letta agent?
Dakera exposes REST, gRPC for vector operations, SDKs in four languages and an MCP server. Anything that can call one of those can use it as a memory store. We have not tested a specific Letta integration, so check your harness's tool and MCP support.
Does Dakera decide what to remember?
No. Your agent or application decides what to store. Dakera then embeds, extracts entities, ranks, decays and deduplicates deterministically, with no LLM involved.
What does Dakera cost per memory operation?
There is no per-call fee: the server is self-hosted and models run on your hardware. You pay for the machine it runs on.
Run Dakera on your own infrastructure.
One binary with its models baked in and no per-call fees. Start it with one Docker command and see it for yourself.
Prefer managed hosting? Join the Dakera Cloud waitlist →