Enovari
Log in Download →

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.

Letta holds the agentquoted from docs.letta.com
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 under system/ 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, and Letta 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: /goal is provided by the optional Goal Mode mod, rather than as a built-in command. Before completing one it 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, acpx and 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 mcpServers. 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-14
Enovari holds nothing that thinkshow the product is built
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 separate mind.db for every persona you make.the ld_health and ld_persona_list contracts
who edits it
Whoever calls ld_write — you, or the assistant, on purpose.the ld_write contract
skills
The condition is written into the skill itself.the ld_skill_list and ld_skill_find contracts
plans
plan is a note type with a lifecycle the daemon enforces — active, then done, then archived.the ld_write note_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 /connect answer → clients
the limit
The same /connect answer marks its own HTTP transport local_only: true. By default, an assistant that lives in a browser tab cannot reach it. Neither can this page.the daemon’s own GET /connect answer → 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.

Claude CodeClaude DesktopCursor CodexGeminiGrok not a browser tab

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