Letta alternative for AI agent memory
Letta gives you an agent.
Enovari gives yours a memory.
Letta is a runtime. You build a Letta agent, Letta runs it, and that
agent keeps its own memory in a git repository of its own. Enovari runs no agent and
ships no model — it sits underneath the assistant already open on your machine.
The question is not which memory is better. It is which program is doing the
thinking. Both can run on hardware you own — Letta documents a
local runtime and a self-hosted App Server, and the Enovari daemon answers from an
executable in your own Programs folder, over a transport it marks
local_only.
A stateful agent is a persistent AI identity with its own memory, model configuration, tools, and message history.Letta’s own definition · docs.letta.com/concepts/stateful-agents · read 2026-08-28, re-checked 2026-09-14
docs.letta.com/concepts/stateful-agents · docs.letta.com/reference/faq · re-checked 2026-09-14
Agent framework vs memory layer
Who holds what.
- the identity
- An agent Letta defines and runs.
Use separate agents when you want independent identities or memory.
Each one keeps its own store.docs.letta.com/concepts/stateful-agents · read 2026-08-28, re-checked 2026-09-14 - where the memory sits
a git repository that belongs to the agent — hosted by Letta for cloud agents
. Files undersystem/load into the prompt every turn; the rest stays out until needed.docs.letta.com/concepts/memfs · read 2026-08-28, re-checked 2026-09-14- who edits it
- The agent. MemFS is
a real checkout the agent reads and edits with ordinary file tools
, and every edit is committed to git.docs.letta.com/concepts/memfs · read 2026-08-28, re-checked 2026-09-14 - skills
- Yes — it
implements the open Agent Skills standard
, andLetta Code automatically decides when to load a relevant skill
.docs.letta.com/configuration/skills · read 2026-08-28, re-checked 2026-09-14 - goals
- Yes, as an add-on:
Before completing one it/goalis provided by the optional Goal Mode mod, rather than as a built-in command.prompts it to audit the objective against real evidence
.docs.letta.com/platform/cli/slash-commands · read 2026-08-28, re-checked 2026-09-14 - how you reach it
- The Agent SDK, which
is currently available only for TypeScript
, or ACP for editors. Letta names Zed, JetBrains, Obsidian,acpxand Buzz. Claude Desktop and Cursor are not documented there, nor on any page listed in docs.letta.com/llms.txt, searched 2026-09-14.docs.letta.com/platform/acp · docs.letta.com/reference/faq · read 2026-08-28, re-checked 2026-09-14 - which way MCP points
- Letta consumes MCP servers:
MCP tools are discovered from servers supplied through
. Letta acting AS an MCP server, so another assistant could use it for memory, is not documented across those same pages.docs.letta.com/agent-sdk/mcp · read 2026-08-28, re-checked 2026-09-14mcpServers
- the identity
- Whatever you already opened. Enovari ships no model and runs no agent; it adds tools to the assistant you were going to use anyway.
- where the memory sits
- One SQLite file in your own user folder —
databases/tapestry.db— plus a separatemind.dbfor every persona you make.theld_healthandld_persona_listcontracts - who edits it
- Whoever calls
ld_write— you, or the assistant, on purpose.theld_writecontract - skills
- The condition is written into the skill itself.the
ld_skill_listandld_skill_findcontracts - plans
planis a note type with a lifecycle the daemon enforces — active, then done, then archived.theld_writenote_type and status contract- how you reach it
- The daemon writes the config itself, for six named clients: Claude Code, Claude Desktop, Cursor, Codex, Gemini and Grok, plus a generic one.the daemon’s own
GET /connectanswer → clients - the limit
- The same
/connectanswer marks its own HTTP transportlocal_only: true. By default, an assistant that lives in a browser tab cannot reach it. Neither can this page.the daemon’s ownGET /connectanswer → transports.http
read 2026-08-28
Which agentic memory system to use
Which one you actually want.
If you want to build an agent and have it keep a memory it manages itself, Letta builds that agent and Enovari does not.
If you want the assistant already open on your machine to stop
forgetting, that is this. Letta has built that shape too — a second agent running
under Claude Code — and its own README calls it demo app built using the
Letta Code SDK, and is not intended to be used in production
(github.com/letta-ai/claude-subconscious, read 2026-08-28, re-checked 2026-09-14). For Enovari that
shape is the whole product, and it is in early access.
Those six are the named clients the Enovari daemon writes configuration for
— a seventh, generic, template sits beside them — read from its own
GET /connect answer. The seventh is the honest
one: the same answer marks its transport local_only: true, so an assistant
that lives in a web page cannot reach a service on your machine — and that
includes the page you are reading.
GET /connect