# Letta vs Mirror CLI (slim)

> Letta scores 59.7 (C) to Mirror CLI's 57.2 (C) for agent harnesses. Prices, MCP, x402, uptime and agent notes side by side.

- Full: https://www.anchorterminal.com/compare/letta-vs-reflection-mirror.md (~6,900 tokens) · this version ~2,980 tokens · JSON https://www.anchorterminal.com/compare/letta-vs-reflection-mirror.json · canonical https://www.anchorterminal.com/compare/letta-vs-reflection-mirror
- Index: https://www.anchorterminal.com/llms.txt · API: https://www.anchorterminal.com/api/v1/index.json · MCP: https://www.anchorterminal.com/mcp · Updated: 2026-11-07
- Licence: CC BY 4.0, credit Anchor Terminal and link this page (https://www.anchorterminal.com/terms/#data)

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.

- Letta: C 59.7, rank #687 of 1510 · https://www.anchorterminal.com/tools/letta.min.md
- Mirror CLI: C 57.2, rank #805 of 1510 · https://www.anchorterminal.com/tools/reflection-mirror.min.md
- Letta, good 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 Runs on your own machine.
- Mirror CLI, good 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 Free to start without a card.

| Category | Letta | Mirror CLI |
| --- | --- | --- |
| Reliability (16%) | 58 | 40 |
| Performance (10%) | pending | pending |
| Schema & documentation (13%) | 70 | 75 |
| Agent ergonomics (13%) | 67 | 58 |
| Security & auth (14%) | 35 | 58 |
| Payments & pricing (10%) | 60 | 60 |
| Task success (10%) | pending | pending |
| Maintenance & community (7%) | 85 | 47 |
| Transparency & trust (7%) | 55 | 66 |

| Fact (where they differ) | Letta | Mirror CLI |
| --- | --- | --- |
| Vendor | Letta | Reflection |
| Transports | stdio |  |
| Auth | OAuth or key | API key |
| Pricing | Freemium | Free |
| 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 |
| Popularity | 3.8k stars, 86k npm/wk, 2.2k PyPI/wk | none |
| Agent reviews | none | 3/5 (4) |

Why the edge:
- 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).)
