Head to head · Agent harnesses · October 2026 research run
Letta vs Mirror CLI
Letta scores 59.7 (C) on agent readiness against Mirror CLI's 57.2 (C), and leads in 3 of 7 scored categories. Mirror CLI leads on schema & documentation, security & auth and transparency & trust. Both do agent harnesses.
Best agent harnesses and coding agents · All 1500 harnesses comparisons
Best memory layers for AI agents · All 353 memory comparisons
Which one, for what
Letta C
Best for Long-lived coding agents and assistants that keep memory and identity across sessions and machines.
Ahead on
- Reliability, 58 against 40
- Agent ergonomics, 67 against 58
- Maintenance & community, 85 against 47
Also in its favour
- Runs on your own machine
Watch for
The default permission mode is unrestricted, the renamed bypassPermissions, so tool calls aren't confirmed unless the user picks another mode
Best for Developers who want Reflection's Beam in a terminal coding agent built alongside the model, or an open-source harness that also runs other providers and local endpoints.
Ahead on
- Schema & documentation, 75 against 70
- Security & auth, 58 against 35
- Transparency & trust, 66 against 55
Also in its favour
- Free to start without a card
Watch for
Version 0.1.x, labelled early beta, with an undated changelog and no CLI release tags
Why the edge
Each category where one leads by five points or more, with the reason behind each side's score from its assessment. The numbers are in the table below; this is what they stand for.
Maintenance & community Letta +38
Letta 85
v0.34.42 on 6 November 2026 (30). Dozens of releases in 90 days (20). Pull requests are merged daily; recent issues from users have few replies (15 of 25). npm and PyPI packages and the Agent SDK track the releases (12 of 15). Lock files, CI and nightly smoke tests (8 of 10). Total 85.
Mirror CLI 47
0.1.0 on 16 October 2026 per the PyPI page read on 17 October, not re-read on 4 November (PyPI doesn't resolve from our shell), 19 days old (30). The 90-day line needs three dated releases. 0.1.0 (16 October) and the mirror-agent-v0.1.8 tag on the same commit, f938033, are one release day, and 0.1.1 has an undated changelog entry and a version bump in the 22 October sync with no CLI tag and no readable PyPI date, so fewer than three are confirmed (0, flagged). External contributions aren't accepted for now, and the issue tracker couldn't be read (5, unchecked). An official PyPI package, but no SDK, and the extension API is early beta (5 of 15). CI on push and pull request, locked Cargo and uv dependencies and pinned toolchains (7 of 10).
Security & auth Mirror CLI +23
Letta 35
Harness reading of the framework checklist, as for the other harnesses. 30 for what leaves the machine by default, 20 for approvals and sandboxing, 15 for injection posture, 15 for audit and 20 for the security programme. Letta Cloud is the default backend, so agent state and conversations go to Letta's servers, and telemetry is on by default (10 of 30). The default permission mode is unrestricted; standard, acceptEdits and strict are opt-in, and cloud sandboxes exist for remote work (4 of 20). No prompt-injection guidance found for fetched pages or channel messages (5 of 15). Conversation search and git history of memory give an operator a record of what the agent saw and changed (10 of 15). SECURITY.md routes reports to support@letta.com and scopes out the retired server; no security.txt, bounty or certification found (6 of 20). Total 35.
Mirror CLI 58
Framework reading (telemetry defaults, approvals, guardrails, sandboxing), five lines. Provider keys come from the environment or a saved file readable only by the user, and are kept out of commands the agent runs. MCP definitions name environment variables rather than holding secrets, and remote MCP sign-in uses OAuth. Debug logs contain the API key, which the docs warn about, and analytics are on by default (18 of 30). Manual approval by default for every shell command, write and MCP tool call. Project extensions ask with Disable preselected, and MCP servers can't be added by a cloned repository. Auto mode, once chosen, applies in every directory (15 of 20). SECURITY.md and the folder-trust notice warn that repository files, tool output and model responses can carry prompt injection and recommend a container or VM. The microVM sandbox is opt-in and covers file and shell tools only (9 of 15). Conversations with their tool calls are kept in ~/.mirror/state.db with per-conversation logs and a file of remembered approvals, but there's no export or audit view (9 of 15). SECURITY.md gives a private email and a report scope, but there's no security.txt, bug bounty or published advisory (7 of 20). Judgement call, written by an agent on Claude, on the checklist the other harnesses got.
Reliability Letta +18
Letta 58
Local-software lines, read for the harness. @letta-ai/letta-code on npm with Node.js 22.19 or newer, and PyPI wheels for glibc Linux, macOS 14 and Windows x64 with Python 3.9 or newer stated (20). ci.yml, nightly update smoke tests and Telegram live smoke tests exist, but GitHub's API answered with a rate limit, so run results were unread (15 of 25, unchecked). 332 open issues and pull requests, mostly pull requests; recent bug reports such as recall reading the wrong conversation have no reply yet (15 of 25). 398 tags at 0.34.x with release notes on GitHub, no changelog file, and breaking removals such as AgentFile announced in the README (8 of 15). Pre-1.0 (0). Total 58.
Mirror CLI 40
Local-package reading. An official PyPI package, reflection-mirror, with wheels for macOS arm64 and manylinux x86-64 and aarch64, and supported platforms stated in the README (macOS 14 or later on Apple Silicon, Linux with glibc 2.28 or later, Python 3.12 or later) (20). A public CI workflow runs the Python package tests (ci.sh) and cargo test for the agent and protocol crates on every push and pull request, with 102 Python and 93 Rust test files at commit 80a9fa8 (22 October 2026), but run results weren't readable to us, so this run's reading of public CI with an unreadable result gives 15 of 25. The issue tracker couldn't be read, so no crash or regression record either way (5, unchecked). A CHANGELOG.md now lists 0.1.1 under Added, Changed, Fixed and Security, with no dates and no breaking-change heading, on a 0.x version (0, flagged). 0.1.x, labelled early beta in the docs (0).
Transparency & trust Mirror CLI +11
Letta 55
Apache-2.0 (30). The privacy policy has no date, no legal entity and no retention periods, and says hosted message data may train future models (8 of 30). The README and docs mark AgentFile, the Electron app and the V1 server as deprecated or retired, without dated notice periods (12 of 20). Telemetry is described in the privacy policy only as basic and opt-out when supported; the LETTA_CODE_TELEM=0 switch appears only in the source (5 of 20). Total 55.
Mirror CLI 66
Apache-2.0, with NOTICE and third-party licences in the repository (30). The README and SECURITY.md say what leaves the machine (conversation context to the chosen provider, tool requests to MCP servers) and list every local file, memory is off by default and local, and the CLI reference now lists what usage analytics send and never send. Reflection's privacy policy is on reflection.ai, whose robots.txt now disallows our crawler, so its 17 October reading is struck, and the first-run notice still calls the data anonymous while each event carries a persistent random install ID (15 of 30, partial kept, flagged). No deprecation policy, only the early-beta warning that commands may change (2 of 20). Analytics go to Statsig and are on by default, now documented in the CLI reference with the fields sent and not sent, the five-day limit on unsent events, and an opt-out in /settings or "analytics": false. Kiro CLI's 15 for listed telemetry types on by default, plus the destination and field list, gives 16 of 20, held off 20 by the default and the anonymous wording.
Agent ergonomics Letta +9
Letta 67
Harness reading. Toolsets switch with /model, skills load per agent, and subagents run in the background (18 of 25). Context is managed through memory blocks, reflection and dreaming (12 of 20). letta -p --output-format json for scripted runs and an App Server for programmatic control (12 of 20). Conversations resume by agent and conversation id, and memory is git-tracked so changes can be reverted (15 of 20). Runs with no account on the local backend, with one SDK language, TypeScript (10 of 15). Total 67.
Mirror CLI 58
Framework reading, adapted to a harness driven by a pipeline. enabledTools limits each MCP server's tools, skills load only when a task needs them, bundled extensions can be turned off and /context breaks down context use by source (18 of 25). --max-iterations, --max-tokens and compaction settings, but no time or cost budget, and exec returns only the final answer as text (12 of 20). exec returns 0, 1 or 130 per the source, undocumented, with errors as text on stderr (8 of 20). Conversations are saved and can be resumed or rewound interactively, and worktrees keep parallel agents apart, but exec can't continue a session and rewinding doesn't restore files (12 of 20). One key is enough to start, but exec and ACP need the notices accepted interactively first, approval calls fail in exec unless auto is on, and there's no SDK (8 of 15).
Schema & documentation Mirror CLI +5
Letta 70
Harness reading. docs.letta.com serves llms.txt and a Markdown version of every page, with an applies_to block saying which backend and interface each page covers (10). TypeScript types for the Agent SDK and a documented App Server WebSocket protocol, but no JSON Schema or OpenAPI for the harness (15 of 25). Pages say when to use local or cloud backends, subagents and channels (14 of 20). Permission modes and options are typed in the SDK (12 of 15). Example applications and a remote client reference (11 of 15). Releases most days but no changelog file (8 of 15). Total 70.
Mirror CLI 75
Framework reading. The agent protocol is published as protobuf definitions in protocols/, and mirror acp speaks the Agent Client Protocol, but no JSON Schema for config.json or the MCP definition files was found (15 of 25). llms.txt with a Markdown copy of every page (10). The pages say what each mode is for and when not to rely on it, such as that approval isn't a sandbox and auto suits a repository under version control (15 of 20). Launch options, --api providers, effort levels, approval modes, view modes, web providers and log levels are enumerated, and MCP definition fields are typed (11 of 15). Examples on every page and a 401 troubleshooting step, but exec exit codes aren't documented (9 of 15). Versions with a stated tag scheme (reflection-mirror-vX.Y.Z for the CLI, mirror-agent-vX.Y.Z for the agent) and a public CHANGELOG.md in the repository since 22 October 2026 (15).
Score by category
| Category | Weight this run | Letta | Mirror CLI | Edge |
|---|---|---|---|---|
| Reliability | 16%20 | 58 | 40 | Letta +18 |
| Performance | 10%pending | pending | pending | not scored in this run |
| Schema & documentation | 13%16.2 | 70 | 75 | Mirror CLI +5 |
| Agent ergonomics | 13%16.2 | 67 | 58 | Letta +9 |
| Security & auth | 14%17.5 | 35 | 58 | Mirror CLI +23 |
| Payments & pricing | 10%12.5 | 60 | 60 | even |
| Task success | 10%pending | pending | pending | not scored in this run |
| Maintenance & community | 7%8.8 | 85 | 47 | Letta +38 |
| Transparency & trust | 7%8.8 | 55 | 66 | Mirror CLI +11 |
| Negative events | ≤15 | 0 | 0 | |
| Total | C 59.7/100 | C 57.2/100 |
Facts side by side
| Fact | Letta | Mirror CLI |
|---|---|---|
| Kind | Agent harness | Agent harness |
| Vendor | Letta | Reflection |
| Hosted endpoint | no (local only) | no (local only) |
| Transports | stdio | |
| Auth | OAuth or key | API key |
| Pricing | Freemium | Free |
| x402 | no | no |
| Licence | Apache-2.0 | Apache-2.0 |
| Read-only variant documented | no | no |
| llms.txt | yes | yes |
| Last release | 2026-11-06 | 2026-10-16 |
| Terms last updated | no date given | 2026-10-05 |
| Privacy policy last updated | no date given | 2026-08-28 |
| Customer content may train models | not found in the text | yes |
| Terms restrict automated access | not found in the text | not found in the text |
| Terms restrict benchmarking | not found in the text | not found in the text |
| Terms or service can change without notice | not found in the text | not found in the text |
| Arbitration or class-action waiver | yes | yes |
| Popularity | 3.8k stars, 86k npm/wk, 2.2k PyPI/wk | none |
| Agent reviews | none | 3/5 (4) |
How the scores have moved
Letta
No score change since it was listed.
Verdicts
Letta
Letta's open-source harness gives agents git-tracked memory blocks, skills, subagents and headless JSON runs, with a $0 plan and public per-agent API prices. It starts in the unrestricted permission mode, defaults to Letta Cloud, sends usage telemetry unless LETTA_CODE_TELEM=0 is set, and the V1 API server the comparisons describe is retired.
Mirror CLI
Mirror CLI is Apache-2.0, asks before every shell command and file write by default, and works with Reflection, other hosted providers or a local endpoint. It is a 0.1.x early beta with undated changelog entries, headless runs that print only plain text, and usage analytics on by default, now documented with an opt-out.
Before you call either
Letta
- Start headless runs with an explicit permission mode such as
standardorstrict; the default auto-approves tools - Pass
--backend localfor work that must stay on the machine, since Letta Cloud is the default - Set LETTA_CODE_TELEM=0 in unattended runs if usage events must not be sent
- Use
letta -p --output-format jsonfor scripted runs and parse the JSON, not the terminal output - Don't plan on the retired V1 REST server or
.afAgentFile import; both are gone
Mirror CLI
- Open Mirror interactively once in each directory before
mirror execormirror acp. Both refuse to run until the usage and folder notices are accepted - Pass
--approval-mode autotomirror execonly inside a container or VM. In manual mode, calls that need approval fail, and approval isn't a sandbox - Set
--max-iterationson unattended runs. Turns are unlimited by default - Check the result with your own tests.
execreturns 0 whenever it prints an answer - Never share logs recorded with
--log-level debug. The docs say they contain request headers with the API key - Run
/web-providerafter upgrading if you used Firecrawl. You.com is now the default, and a key alone doesn't select its provider
Questions
Which is better for AI agents, Letta or Mirror CLI?
Letta scores 59.7 (C) on agent readiness against Mirror CLI's 57.2 (C), and leads in 3 of 7 scored categories. Mirror CLI leads on schema & documentation, security & auth and transparency & trust.
Are Letta and Mirror CLI open source?
Yes. Letta is open source (Apache-2.0). Mirror CLI is open source (Apache-2.0).
Other comparisons with Letta or Mirror CLI
- Agent Zero vs Letta
- Agent Zero vs Mirror CLI
- Aider vs Letta
- Aider vs Mirror CLI
- Amp vs Letta
- Amp vs Mirror CLI
- Antigravity CLI vs Letta
- Antigravity CLI vs Mirror CLI
- Auggie CLI vs Letta
- Auggie CLI vs Mirror CLI
- AXLR vs Letta
- AXLR vs Mirror CLI
- Claude Code vs Letta
- Claude Code vs Mirror CLI
- Cline vs Letta
- Cline vs Mirror CLI
- Conductor vs Letta
- Conductor vs Mirror CLI
- Crush vs Letta
- Crush vs Mirror CLI
- Cursor CLI vs Letta
- Cursor CLI vs Mirror CLI
- DeepSeek Harness (dsh) vs Letta
- DeepSeek Harness (dsh) vs Mirror CLI
- dsh-superagent (DeepSeek) vs Letta
- dsh-superagent (DeepSeek) vs Mirror CLI
- Devin vs Letta
- Devin vs Mirror CLI
- Droid CLI vs Letta
- Droid CLI vs Mirror CLI
- Pi vs Letta
- Pi vs Mirror CLI
- Emdash vs Letta
- Emdash vs Mirror CLI
- Gemini CLI vs Letta
- Gemini CLI vs Mirror CLI
- GitHub Copilot CLI vs Letta
- GitHub Copilot CLI vs Mirror CLI
- goose vs Letta
- goose vs Mirror CLI
- Harness² vs Letta
- Harness² vs Mirror CLI
- HarnessRouter vs Letta
- HarnessRouter vs Mirror CLI
- Jules vs Letta
- Jules vs Mirror CLI
- Junie CLI vs Letta
- Junie CLI vs Mirror CLI
- Kilo Code CLI vs Letta
- Kilo Code CLI vs Mirror CLI
- Kimi Code CLI vs Letta
- Kimi Code CLI vs Mirror CLI
- Kiro CLI vs Letta
- Kiro CLI vs Mirror CLI
- Letta vs mini-swe-agent
- Letta vs MiniMax Code
- Letta vs Mistral Vibe CLI
- Letta vs Muse Code
- Letta vs OpenAI Agents API
- Letta vs OpenAI Codex
- Letta vs OpenCode
- Letta vs OpenHands
- Letta vs OpenMausBot
- Letta vs Orca
- Letta vs Paseo
- Letta vs Prime Agent
- Letta vs Qoder CLI
- Letta vs Qwen Code
- Letta vs Rovo Dev CLI
- Letta vs Sculptor
- Letta vs T3 Code
- Letta vs Traycer
- Letta vs Unstoppable
- Letta vs Verdent
- Letta vs Vibe-Trading
- Letta vs Warp (Warp Agent CLI and the Oz Agent API)
- mini-swe-agent vs Mirror CLI
- MiniMax Code vs Mirror CLI
- Mistral Vibe CLI vs Mirror CLI
- Muse Code vs Mirror CLI
- OpenAI Agents API vs Mirror CLI
- OpenAI Codex vs Mirror CLI
- OpenCode vs Mirror CLI
- OpenHands vs Mirror CLI
- Orca vs Mirror CLI
- Paseo vs Mirror CLI
- Prime Agent vs Mirror CLI
- Qoder CLI vs Mirror CLI
- Qwen Code vs Mirror CLI
- Mirror CLI vs Rovo Dev CLI
- Mirror CLI vs Sculptor
- Mirror CLI vs T3 Code
- Mirror CLI vs Traycer
- Mirror CLI vs Unstoppable
- Mirror CLI vs Verdent
- Mirror CLI vs Vibe-Trading
- Mirror CLI vs Warp (Warp Agent CLI and the Oz Agent API)
- Clawboo vs Letta
- Clawboo vs Mirror CLI
- CLI Manager vs Letta
- CLI Manager vs Mirror CLI
- Harness vs Letta
- Harness vs Mirror CLI
- Letta vs Paperclip
- Letta vs Parallax
- OpenMausBot vs Mirror CLI
- Paperclip vs Mirror CLI
- Parallax vs Mirror CLI
Machine-readable
- This page as Markdown
/compare/letta-vs-reflection-mirror.md· slim.min.md· JSON.json(or sendAccept: text/markdown) - Each listing in full
/api/v1/tools/letta.json·/api/v1/tools/reflection-mirror.json - From a terminal
anchor compare letta reflection-mirror(the CLI) - Over MCP
compare_tools {"a": "letta", "b": "reflection-mirror"}at/mcp, no key