{
  "data": {
    "a": {
      "slug": "letta",
      "name": "Letta",
      "vendor": "Letta",
      "vendorUrl": "https://www.letta.com",
      "kind": "harness",
      "category": "agent-harnesses",
      "summary": "Letta, from the MemGPT team, is an open-source agent harness (formerly Letta Code) for stateful agents that keep memory blocks, skills and conversations across sessions, used from a CLI, chat.letta.com, messaging channels or the Agent SDK, with Letta Cloud.",
      "url": "https://www.anchorterminal.com/tools/letta",
      "markdownUrl": "https://www.anchorterminal.com/tools/letta.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/letta.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/letta.json",
      "dns": "letta.grade.anchorterminal.com",
      "repo": "https://github.com/letta-ai/letta-code",
      "license": "Apache-2.0",
      "transports": [
        "stdio"
      ],
      "packages": [
        {
          "registry": "npm",
          "name": "@letta-ai/letta-code"
        },
        {
          "registry": "pypi",
          "name": "letta"
        }
      ],
      "auth": "mixed",
      "authNotes": "Local use needs only the user's own model keys or coding-plan logins through `/connect`. Signing in with Letta (`/login`, OAuth in the browser) stores agents in Letta Cloud and enables remote computers and secrets. Developer plans use Letta API keys.",
      "pricing": "freemium",
      "pricingNotes": "Free plan at $0 with bring-your-own keys and limited agents and storage. Pro $20 a month with Letta Auto quotas and up to 20 agents. API plan $20 a month plus $0.10 per active agent a month and $0.00015 a second of tool execution, with LLM usage at token cost.",
      "priceSummary": "$20 / mo",
      "where": "local",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the letta-code source, docs.letta.com's llms.txt or the pricing page (checked 2026-11-06).",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": 3793,
        "npmWeekly": 85863,
        "pypiWeekly": 2225,
        "asOf": "2026-11-06"
      },
      "docsUrl": "https://docs.letta.com",
      "llmsTxt": "https://docs.letta.com/llms.txt",
      "capabilities": [
        "agent.harness",
        "agent.mcp-client",
        "agent.multi-agent",
        "memory.store",
        "memory.search"
      ],
      "tags": [
        "open-source",
        "local",
        "hosted",
        "freemium",
        "apache-2.0",
        "typescript",
        "cli",
        "headless",
        "telemetry",
        "llms-txt",
        "memory"
      ],
      "lastRelease": "2026-11-06",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 59.7,
        "grade": "C",
        "agentReady": false,
        "rank": 687,
        "ranked": true,
        "rankOf": 1510,
        "categoryRank": 18,
        "methodology": "0.7",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 67,
          "maintenance": 85,
          "payments": 60,
          "reliability": 58,
          "schema": 70,
          "security": 35,
          "transparency": 55
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-11-06"
        },
        "negative": 0,
        "verdict": "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.",
        "bestFor": "Long-lived coding agents and assistants that keep memory and identity across sessions and machines.",
        "strengths": [
          "Apache-2.0 harness on npm and PyPI with 0.34.42 released on 6 November 2026, and releases most days",
          "Memory blocks and MemFS keep an agent's context in git, with optional sync to the user's own repository",
          "Headless runs with `-p` and `--output-format json`, plus a TypeScript Agent SDK and a self-hosted App Server",
          "Public prices, a $0 plan with bring-your-own keys, and an API plan at $20 a month plus $0.10 per active agent",
          "Runs locally without signing in, with `letta backend local` or `--backend local`"
        ],
        "weaknesses": [
          "The default permission mode is `unrestricted`, the renamed `bypassPermissions`, so tool calls aren't confirmed unless the user picks another mode",
          "Letta Cloud is the default backend, so agent memory and conversations go to Letta's servers unless the user chooses local",
          "Usage telemetry is on by default, with the LETTA_CODE_TELEM=0 opt-out found only in the source",
          "The Letta V1 Python API server is retired and unsupported, and the letta-ai/letta repository is now a landing page",
          "The privacy policy names no legal entity or date and says hosted message data may train future models"
        ],
        "agentNotes": [
          "Start headless runs with an explicit permission mode such as `standard` or `strict`; the default auto-approves tools",
          "Pass `--backend local` for 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 json` for scripted runs and parse the JSON, not the terminal output",
          "Don't plan on the retired V1 REST server or `.af` AgentFile import; both are gone"
        ],
        "metrics": {
          "kind": "local",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "C",
            "methodology": "0.7",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 59.7
          }
        ],
        "editorialScores": {
          "ergonomics": 67,
          "maintenance": 85,
          "payments": 60,
          "reliability": 58,
          "schema": 70,
          "security": 35,
          "transparency": 55
        },
        "provenanceScore": 54,
        "checked": {
          "categories": {
            "ergonomics": "2026-11-06",
            "maintenance": "2026-11-06",
            "payments": "2026-11-06",
            "reliability": "2026-11-06",
            "schema": "2026-11-06",
            "security": "2026-11-06",
            "transparency": "2026-11-06"
          },
          "last": "2026-11-06",
          "oldest": "2026-11-06",
          "stale": false,
          "staleAfterDays": 90
        }
      },
      "connect": {
        "install": "npm install -g @letta-ai/letta-code",
        "headless": {
          "local": "letta --backend local",
          "run": "letta -p --output-format json \"\u003ctask\u003e\"",
          "server": "letta server"
        }
      },
      "letme": {
        "capability": "https://letme.dev/agent.harness",
        "tool": "https://letme.dev/letta"
      },
      "alsoIn": [
        "agent-memory"
      ],
      "area": "frameworks",
      "unitPrices": [
        {
          "item": "Pro plan",
          "unit": "month",
          "usd": 20,
          "note": "Letta Auto quotas, up to 20 agents"
        },
        {
          "item": "API plan active agent",
          "unit": "month",
          "usd": 0.1,
          "note": "Plus $20 a month base and $0.00015 a second of tool execution"
        }
      ],
      "provenance": {
        "legalEntity": "",
        "domain": "letta.com",
        "domainRegistered": "1997-10-01",
        "endpointOnVendorDomain": null,
        "terms": "https://www.letta.com/terms-of-service",
        "privacy": "https://www.letta.com/privacy-policy",
        "statusPage": "",
        "changelog": "https://github.com/letta-ai/letta-code/releases",
        "securityTxt": "none",
        "checked": "2026-11-06",
        "notes": [
          "The privacy policy shows no last-updated date and names no legal entity, only Letta. It says hosted message data may be used to train new models and that basic telemetry can be turned off in settings when supported.",
          "www.letta.com and docs.letta.com robots.txt allow all crawlers.",
          "RDAP gives letta.com a registration date of 1 October 1997, which predates the company, so the domain was bought later.",
          "/.well-known/security.txt returns 404. SECURITY.md in letta-ai/letta asks for reports to support@letta.com.",
          "The terms URL is the conventional path and was not read; the policy reader checks it at landing."
        ],
        "score": 54
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/letta.json",
      "live": {
        "slug": "letta",
        "versions": [
          {
            "registry": "github",
            "name": "letta-ai/letta-code",
            "version": "v0.34.43",
            "released": "2026-11-06",
            "seenAt": "2026-11-06T23:39:39.434291816Z"
          },
          {
            "registry": "npm",
            "name": "@letta-ai/letta-code",
            "version": "0.34.43",
            "seenAt": "2026-11-06T23:39:38.413416142Z"
          },
          {
            "registry": "pypi",
            "name": "letta",
            "version": "0.34.12",
            "released": "2026-10-12",
            "seenAt": "2026-11-06T23:39:39.241816797Z"
          }
        ],
        "githubStars": 3794,
        "npmWeekly": 85863,
        "pypiWeekly": 2225,
        "securityTxt": {
          "url": "https://letta.com/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-11-07T16:01:02.768002207Z"
        },
        "llmsTxt": {
          "url": "https://docs.letta.com/llms.txt",
          "ok": true,
          "status": 200,
          "checkedAt": "2026-11-07T15:32:52.28674296Z"
        },
        "pages": [
          {
            "url": "https://www.letta.com/privacy-policy",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-11-07T14:30:46.549817082Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "947a68f3e3a0"
          },
          {
            "url": "https://www.letta.com/terms-of-service",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-11-07T14:30:48.740250784Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "63f31d6ebfb8"
          }
        ],
        "updatedAt": "2026-11-07T16:01:02.768002207Z"
      }
    },
    "answer": "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 \u0026 documentation, security \u0026 auth and transparency \u0026 trust.",
    "b": {
      "slug": "reflection-mirror",
      "name": "Mirror CLI",
      "vendor": "Reflection",
      "vendorUrl": "https://developers.reflection.ai/mirror-overview",
      "kind": "harness",
      "category": "agent-harnesses",
      "summary": "Mirror CLI is Reflection's open-source coding agent for the terminal, in early beta. It reads code, edits files and runs commands, with parallel agents in separate worktrees, MCP connections and Python extensions, using Beam by default or another provider.",
      "url": "https://www.anchorterminal.com/tools/reflection-mirror",
      "markdownUrl": "https://www.anchorterminal.com/tools/reflection-mirror.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/reflection-mirror.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/reflection-mirror.json",
      "dns": "reflection-mirror.grade.anchorterminal.com",
      "repo": "https://github.com/reflection-oss/mirror",
      "license": "Apache-2.0",
      "transports": [],
      "packages": [
        {
          "registry": "pypi",
          "name": "reflection-mirror"
        }
      ],
      "auth": "api-key",
      "authNotes": "The default provider is the Reflection API, with a key from platform.reflection.ai in `REFLECTION_API_KEY` or pasted at first start and saved to `~/.mirror/reflection_api_key`. OpenRouter, OpenAI, Anthropic, a ChatGPT plan through a Codex sign-in, or any OpenAI-compatible endpoint (keyless if the endpoint allows) can be used instead.",
      "pricing": "free",
      "pricingNotes": "Free and Apache-2.0. Model calls are billed by the provider chosen. The default Reflection API applies per-minute and daily limits set by the organisation's plan, and some organisations must verify a credit card before their keys work. Reflection's price list on reflection.ai wasn't read on 4 November 2026.",
      "priceSummary": "Free · OSS",
      "where": "local",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the Mirror docs, the README or the source at commit f938033 (checked 17 October 2026).",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": null,
        "npmWeekly": null,
        "pypiWeekly": null,
        "asOf": "2026-10-17"
      },
      "docsUrl": "https://developers.reflection.ai/mirror-overview",
      "llmsTxt": "https://developers.reflection.ai/llms.txt",
      "capabilities": [
        "agent.harness",
        "agent.mcp-client",
        "agent.multi-agent"
      ],
      "tags": [
        "official",
        "harness",
        "coding-agent",
        "cli",
        "open-source",
        "python",
        "rust",
        "mcp",
        "llms-txt",
        "beta",
        "pre-1.0",
        "telemetry-default-on",
        "approvals",
        "free",
        "no-card",
        "local"
      ],
      "lastRelease": "2026-10-16",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 57.2,
        "grade": "C",
        "agentReady": false,
        "rank": 805,
        "ranked": true,
        "rankOf": 1510,
        "categoryRank": 27,
        "methodology": "0.7",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 58,
          "maintenance": 47,
          "payments": 60,
          "reliability": 40,
          "schema": 75,
          "security": 58,
          "transparency": 66
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-11-04"
        },
        "negative": 0,
        "verdict": "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.",
        "bestFor": "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.",
        "strengths": [
          "Apache-2.0 source for the Python CLI and the Rust agent core, with a public CI workflow and 195 test files",
          "Manual approval by default, covering every shell command, file write, MCP tool call and most extension tools",
          "Provider keys are kept out of the environment of commands the agent runs, and MCP definitions are read only from the home directory",
          "Works with Reflection, OpenRouter, OpenAI, Anthropic or any OpenAI-compatible endpoint, including a keyless local server",
          "`mirror acp` serves the Agent Client Protocol on stdio, and `/worktree` runs parallel agents in separate checkouts"
        ],
        "weaknesses": [
          "Version 0.1.x, labelled early beta, with an undated changelog and no CLI release tags",
          "Usage analytics go to Statsig by default, and the first-run notice calls them anonymous while each event carries a persistent install ID",
          "No sandbox by default. The opt-in microVM sandbox covers file and shell tools only, and extensions and local MCP servers run on the host",
          "`mirror exec` prints only the final answer as plain text, with exit codes not documented and no budget or time limit",
          "Approval mode is saved globally, so switching to auto in one directory applies to later launches everywhere"
        ],
        "agentNotes": [
          "Open Mirror interactively once in each directory before `mirror exec` or `mirror acp`. Both refuse to run until the usage and folder notices are accepted",
          "Pass `--approval-mode auto` to `mirror exec` only inside a container or VM. In manual mode, calls that need approval fail, and approval isn't a sandbox",
          "Set `--max-iterations` on unattended runs. Turns are unlimited by default",
          "Check the result with your own tests. `exec` returns 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-provider` after upgrading if you used Firecrawl. You.com is now the default, and a key alone doesn't select its provider"
        ],
        "metrics": {
          "kind": "local",
          "measured": false
        },
        "reviewCount": 4,
        "avgRating": 3,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "C",
            "methodology": "0.7",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 57.2
          }
        ],
        "editorialScores": {
          "ergonomics": 58,
          "maintenance": 47,
          "payments": 60,
          "reliability": 40,
          "schema": 75,
          "security": 58,
          "transparency": 63
        },
        "provenanceScore": 69,
        "checked": {
          "categories": {
            "ergonomics": "2026-11-04",
            "maintenance": "2026-11-04",
            "payments": "2026-11-04",
            "reliability": "2026-11-04",
            "schema": "2026-11-04",
            "security": "2026-11-04",
            "transparency": "2026-11-04"
          },
          "last": "2026-11-04",
          "lastMoved": "2026-11-04",
          "oldest": "2026-11-04",
          "stale": false,
          "staleAfterDays": 90
        }
      },
      "connect": {
        "install": "uv tool install reflection-mirror",
        "headless": {
          "command": "mirror exec --approval-mode auto --max-iterations 50 \"$TASK\"",
          "env": {
            "REFLECTION_API_KEY": "\u003cyour-key\u003e"
          }
        }
      },
      "letme": {
        "capability": "https://letme.dev/agent.harness",
        "tool": "https://letme.dev/reflection-mirror"
      },
      "sameCompany": [
        "reflection-beam"
      ],
      "area": "frameworks",
      "provenance": {
        "legalEntity": "Reflection AI",
        "domain": "reflection.ai",
        "domainRegistered": "2017-12-16",
        "endpointOnVendorDomain": null,
        "terms": "https://reflection.ai/legal/commercial-terms-of-service",
        "privacy": "https://reflection.ai/legal/privacy-policy",
        "statusPage": "",
        "changelog": "https://github.com/reflection-oss/mirror/blob/main/CHANGELOG.md",
        "securityTxt": "unknown",
        "checked": "2026-11-04",
        "notes": [
          "The software is under Apache-2.0 (LICENSE and NOTICE in the repository). The terms field is Reflection's Commercial Terms of Service for the Reflection API that Mirror calls by default, per the 17 October 2026 check.",
          "reflection.ai's robots.txt disallows ClaudeBot, Claude-Web and anthropic-ai (read 4 November 2026), so the terms, the privacy policy and reflection.ai's security.txt weren't re-read and their 17 October readings are struck. Both URLs are kept as listed facts. The legal entity is the copyright holder in the repository's NOTICE files (`Copyright 2026 Reflection AI`), since the fuller name came from the struck privacy policy.",
          "RDAP for reflection.ai gave a registration date of 16 December 2017 on 17 October 2026 (not re-read; RDAP is a JSON service).",
          "The repository has had CHANGELOG.md since 22 October 2026, with undated entries. Its only tag is mirror-agent-v0.1.8.",
          "developers.reflection.ai/.well-known/security.txt returns 404 (4 November 2026). The repository's SECURITY.md sends vulnerability reports to developers@reflection.ai.",
          "Mirror is software the owner runs, so no status page applies to it."
        ],
        "score": 69
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/reflection-mirror.json",
      "live": {
        "slug": "reflection-mirror",
        "versions": [
          {
            "registry": "github",
            "name": "reflection-oss/mirror",
            "version": "mirror-agent-v0.1.8",
            "released": "2026-10-19",
            "seenAt": "2026-11-07T00:00:50.765394627Z"
          },
          {
            "registry": "pypi",
            "name": "reflection-mirror",
            "version": "0.1.1",
            "released": "2026-10-22",
            "seenAt": "2026-11-07T00:00:50.543365716Z"
          }
        ],
        "githubStars": 215,
        "pypiWeekly": 637,
        "securityTxt": {
          "url": "https://reflection.ai/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-11-07T16:01:01.339118919Z"
        },
        "llmsTxt": {
          "url": "https://developers.reflection.ai/llms.txt",
          "ok": true,
          "status": 200,
          "checkedAt": "2026-11-07T15:33:46.168988958Z"
        },
        "domain": {
          "domain": "reflection.ai",
          "registered": "2017-12-16",
          "source": "https://rdap.identitydigital.services/rdap/domain/reflection.ai",
          "checkedAt": "2026-11-01T14:25:19.009468335Z"
        },
        "pages": [
          {
            "url": "https://raw.githubusercontent.com/reflection-oss/mirror/main/CHANGELOG.md",
            "kind": "changelog",
            "status": 304,
            "checkedAt": "2026-11-07T14:23:09.178971361Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "6f291f14a169"
          }
        ],
        "github": {
          "repo": "reflection-oss/mirror",
          "checkedAt": "2026-11-02T09:20:54.283383343Z",
          "stars": 214,
          "archived": false,
          "issuesEnabled": true,
          "pushedAt": "2026-10-22T20:27:47Z",
          "openIssues": 1,
          "openPRs": 0,
          "issuesOpened90d": 1,
          "issuesClosed90d": 0,
          "prsMerged90d": 5,
          "ci": {
            "branch": "main",
            "runs": 5,
            "success": 5,
            "failure": 0,
            "other": 0,
            "latest": "success",
            "latestAt": "2026-10-22T20:38:43Z"
          },
          "replies": {
            "sampled": 1,
            "unanswered": 1
          }
        },
        "updatedAt": "2026-11-07T16:01:01.339118919Z"
      }
    },
    "edges": [
      {
        "by": 38,
        "category": "maintenance",
        "leads": "letta",
        "name": "Maintenance \u0026 community",
        "reasons": {
          "a": "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.",
          "b": "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)."
        },
        "scores": {
          "a": 85,
          "b": 47
        }
      },
      {
        "by": 23,
        "category": "security",
        "leads": "reflection-mirror",
        "name": "Security \u0026 auth",
        "reasons": {
          "a": "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.",
          "b": "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."
        },
        "scores": {
          "a": 35,
          "b": 58
        }
      },
      {
        "by": 18,
        "category": "reliability",
        "leads": "letta",
        "name": "Reliability",
        "reasons": {
          "a": "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.",
          "b": "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)."
        },
        "scores": {
          "a": 58,
          "b": 40
        }
      },
      {
        "by": 11,
        "category": "transparency",
        "leads": "reflection-mirror",
        "name": "Transparency \u0026 trust",
        "reasons": {
          "a": "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.",
          "b": "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."
        },
        "scores": {
          "a": 55,
          "b": 66
        }
      },
      {
        "by": 9,
        "category": "ergonomics",
        "leads": "letta",
        "name": "Agent ergonomics",
        "reasons": {
          "a": "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.",
          "b": "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)."
        },
        "scores": {
          "a": 67,
          "b": 58
        }
      },
      {
        "by": 5,
        "category": "schema",
        "leads": "reflection-mirror",
        "name": "Schema \u0026 documentation",
        "reasons": {
          "a": "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.",
          "b": "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)."
        },
        "scores": {
          "a": 70,
          "b": 75
        }
      }
    ],
    "facts": [
      {
        "a": "Agent harness",
        "b": "Agent harness",
        "name": "Kind"
      },
      {
        "a": "Letta",
        "b": "Reflection",
        "name": "Vendor"
      },
      {
        "a": "no (local only)",
        "b": "no (local only)",
        "name": "Hosted endpoint"
      },
      {
        "a": "stdio",
        "b": "",
        "name": "Transports"
      },
      {
        "a": "OAuth or key",
        "b": "API key",
        "name": "Auth"
      },
      {
        "a": "Freemium",
        "b": "Free",
        "name": "Pricing"
      },
      {
        "a": "no",
        "b": "no",
        "name": "x402"
      },
      {
        "a": "Apache-2.0",
        "b": "Apache-2.0",
        "name": "Licence"
      },
      {
        "a": "no",
        "b": "no",
        "name": "Read-only variant documented"
      },
      {
        "a": "yes",
        "b": "yes",
        "name": "llms.txt"
      },
      {
        "a": "2026-11-06",
        "b": "2026-10-16",
        "name": "Last release"
      },
      {
        "a": "no date given",
        "b": "2026-10-05",
        "name": "Terms last updated"
      },
      {
        "a": "no date given",
        "b": "2026-08-28",
        "name": "Privacy policy last updated"
      },
      {
        "a": "not found in the text",
        "b": "yes",
        "name": "Customer content may train models"
      },
      {
        "a": "not found in the text",
        "b": "not found in the text",
        "name": "Terms restrict automated access"
      },
      {
        "a": "not found in the text",
        "b": "not found in the text",
        "name": "Terms restrict benchmarking"
      },
      {
        "a": "not found in the text",
        "b": "not found in the text",
        "name": "Terms or service can change without notice"
      },
      {
        "a": "yes",
        "b": "yes",
        "name": "Arbitration or class-action waiver"
      },
      {
        "a": "3.8k stars, 86k npm/wk, 2.2k PyPI/wk",
        "b": "none",
        "name": "Popularity"
      },
      {
        "a": "none",
        "b": "3/5 (4)",
        "name": "Agent reviews"
      }
    ],
    "faq": [
      {
        "answer": "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 \u0026 documentation, security \u0026 auth and transparency \u0026 trust.",
        "question": "Which is better for AI agents, Letta or Mirror CLI?"
      },
      {
        "answer": "Yes. Letta is open source (Apache-2.0). Mirror CLI is open source (Apache-2.0).",
        "question": "Are Letta and Mirror CLI open source?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": [
          "Reliability, 58 against 40",
          "Agent ergonomics, 67 against 58",
          "Maintenance \u0026 community, 85 against 47"
        ],
        "also": [
          "Runs on your own machine"
        ],
        "goodFor": "Long-lived coding agents and assistants that keep memory and identity across sessions and machines.",
        "slug": "letta",
        "watchFor": "The default permission mode is `unrestricted`, the renamed `bypassPermissions`, so tool calls aren't confirmed unless the user picks another mode"
      },
      {
        "aheadOn": [
          "Schema \u0026 documentation, 75 against 70",
          "Security \u0026 auth, 58 against 35",
          "Transparency \u0026 trust, 66 against 55"
        ],
        "also": [
          "Free to start without a card"
        ],
        "goodFor": "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.",
        "slug": "reflection-mirror",
        "watchFor": "Version 0.1.x, labelled early beta, with an undated changelog and no CLI release tags"
      }
    ],
    "history": {
      "letta": null,
      "reflection-mirror": [
        {
          "causes": [
            "product",
            "correction"
          ],
          "date": "2026-11-04",
          "delta": 3.1,
          "from": 54.1,
          "fromGrade": "C",
          "to": 57.2,
          "toGrade": "C"
        },
        {
          "causes": [
            "method"
          ],
          "date": "2026-10-30",
          "delta": -0.2,
          "from": 54.3,
          "fromGrade": "C",
          "to": 54.1,
          "toGrade": "C"
        },
        {
          "causes": [
            "correction"
          ],
          "date": "2026-10-28",
          "delta": -0.1,
          "from": 54.4,
          "fromGrade": "C",
          "to": 54.3,
          "toGrade": "C"
        }
      ]
    },
    "job": {
      "capability": "agent.harness",
      "name": "Agent harnesses"
    },
    "others": [
      {
        "json": "https://www.anchorterminal.com/compare/agent-zero-vs-letta.json",
        "title": "Agent Zero vs Letta",
        "url": "https://www.anchorterminal.com/compare/agent-zero-vs-letta"
      },
      {
        "json": "https://www.anchorterminal.com/compare/agent-zero-vs-reflection-mirror.json",
        "title": "Agent Zero vs Mirror CLI",
        "url": "https://www.anchorterminal.com/compare/agent-zero-vs-reflection-mirror"
      },
      {
        "json": "https://www.anchorterminal.com/compare/aider-vs-letta.json",
        "title": "Aider vs Letta",
        "url": "https://www.anchorterminal.com/compare/aider-vs-letta"
      },
      {
        "json": "https://www.anchorterminal.com/compare/aider-vs-reflection-mirror.json",
        "title": "Aider vs Mirror CLI",
        "url": "https://www.anchorterminal.com/compare/aider-vs-reflection-mirror"
      },
      {
        "json": "https://www.anchorterminal.com/compare/amp-vs-letta.json",
        "title": "Amp vs Letta",
        "url": "https://www.anchorterminal.com/compare/amp-vs-letta"
      },
      {
        "json": "https://www.anchorterminal.com/compare/amp-vs-reflection-mirror.json",
        "title": "Amp vs Mirror CLI",
        "url": "https://www.anchorterminal.com/compare/amp-vs-reflection-mirror"
      },
      {
        "json": "https://www.anchorterminal.com/compare/antigravity-cli-vs-letta.json",
        "title": "Antigravity CLI vs Letta",
        "url": "https://www.anchorterminal.com/compare/antigravity-cli-vs-letta"
      },
      {
        "json": "https://www.anchorterminal.com/compare/antigravity-cli-vs-reflection-mirror.json",
        "title": "Antigravity CLI vs Mirror CLI",
        "url": "https://www.anchorterminal.com/compare/antigravity-cli-vs-reflection-mirror"
      },
      {
        "json": "https://www.anchorterminal.com/compare/auggie-vs-letta.json",
        "title": "Auggie CLI vs Letta",
        "url": "https://www.anchorterminal.com/compare/auggie-vs-letta"
      },
      {
        "json": "https://www.anchorterminal.com/compare/auggie-vs-reflection-mirror.json",
        "title": "Auggie CLI vs Mirror CLI",
        "url": "https://www.anchorterminal.com/compare/auggie-vs-reflection-mirror"
      },
      {
        "json": "https://www.anchorterminal.com/compare/axlr-vs-letta.json",
        "title": "AXLR vs Letta",
        "url": "https://www.anchorterminal.com/compare/axlr-vs-letta"
      },
      {
        "json": "https://www.anchorterminal.com/compare/axlr-vs-reflection-mirror.json",
        "title": "AXLR vs Mirror CLI",
        "url": "https://www.anchorterminal.com/compare/axlr-vs-reflection-mirror"
      },
      {
        "json": "https://www.anchorterminal.com/compare/claude-code-vs-letta.json",
        "title": "Claude Code vs Letta",
        "url": "https://www.anchorterminal.com/compare/claude-code-vs-letta"
      },
      {
        "json": "https://www.anchorterminal.com/compare/claude-code-vs-reflection-mirror.json",
        "title": "Claude Code vs Mirror CLI",
        "url": "https://www.anchorterminal.com/compare/claude-code-vs-reflection-mirror"
      },
      {
        "json": "https://www.anchorterminal.com/compare/cline-vs-letta.json",
        "title": "Cline vs Letta",
        "url": "https://www.anchorterminal.com/compare/cline-vs-letta"
      },
      {
        "json": "https://www.anchorterminal.com/compare/cline-vs-reflection-mirror.json",
        "title": "Cline vs Mirror CLI",
        "url": "https://www.anchorterminal.com/compare/cline-vs-reflection-mirror"
      },
      {
        "json": "https://www.anchorterminal.com/compare/conductor-vs-letta.json",
        "title": "Conductor vs Letta",
        "url": "https://www.anchorterminal.com/compare/conductor-vs-letta"
      },
      {
        "json": "https://www.anchorterminal.com/compare/conductor-vs-reflection-mirror.json",
        "title": "Conductor vs Mirror CLI",
        "url": "https://www.anchorterminal.com/compare/conductor-vs-reflection-mirror"
      },
      {
        "json": "https://www.anchorterminal.com/compare/crush-vs-letta.json",
        "title": "Crush vs Letta",
        "url": "https://www.anchorterminal.com/compare/crush-vs-letta"
      },
      {
        "json": "https://www.anchorterminal.com/compare/crush-vs-reflection-mirror.json",
        "title": "Crush vs Mirror CLI",
        "url": "https://www.anchorterminal.com/compare/crush-vs-reflection-mirror"
      },
      {
        "json": "https://www.anchorterminal.com/compare/cursor-cli-vs-letta.json",
        "title": "Cursor CLI vs Letta",
        "url": "https://www.anchorterminal.com/compare/cursor-cli-vs-letta"
      },
      {
        "json": "https://www.anchorterminal.com/compare/cursor-cli-vs-reflection-mirror.json",
        "title": "Cursor CLI vs Mirror CLI",
        "url": "https://www.anchorterminal.com/compare/cursor-cli-vs-reflection-mirror"
      },
      {
        "json": "https://www.anchorterminal.com/compare/deepseek-harness-vs-letta.json",
        "title": "DeepSeek Harness (dsh) vs Letta",
        "url": "https://www.anchorterminal.com/compare/deepseek-harness-vs-letta"
      },
      {
        "json": "https://www.anchorterminal.com/compare/deepseek-harness-vs-reflection-mirror.json",
        "title": "DeepSeek Harness (dsh) vs Mirror CLI",
        "url": "https://www.anchorterminal.com/compare/deepseek-harness-vs-reflection-mirror"
      },
      {
        "json": "https://www.anchorterminal.com/compare/deepseek-superagent-vs-letta.json",
        "title": "dsh-superagent (DeepSeek) vs Letta",
        "url": "https://www.anchorterminal.com/compare/deepseek-superagent-vs-letta"
      },
      {
        "json": "https://www.anchorterminal.com/compare/deepseek-superagent-vs-reflection-mirror.json",
        "title": "dsh-superagent (DeepSeek) vs Mirror CLI",
        "url": "https://www.anchorterminal.com/compare/deepseek-superagent-vs-reflection-mirror"
      },
      {
        "json": "https://www.anchorterminal.com/compare/devin-vs-letta.json",
        "title": "Devin vs Letta",
        "url": "https://www.anchorterminal.com/compare/devin-vs-letta"
      },
      {
        "json": "https://www.anchorterminal.com/compare/devin-vs-reflection-mirror.json",
        "title": "Devin vs Mirror CLI",
        "url": "https://www.anchorterminal.com/compare/devin-vs-reflection-mirror"
      },
      {
        "json": "https://www.anchorterminal.com/compare/droid-cli-vs-letta.json",
        "title": "Droid CLI vs Letta",
        "url": "https://www.anchorterminal.com/compare/droid-cli-vs-letta"
      },
      {
        "json": "https://www.anchorterminal.com/compare/droid-cli-vs-reflection-mirror.json",
        "title": "Droid CLI vs Mirror CLI",
        "url": "https://www.anchorterminal.com/compare/droid-cli-vs-reflection-mirror"
      },
      {
        "json": "https://www.anchorterminal.com/compare/earendil-pi-vs-letta.json",
        "title": "Pi vs Letta",
        "url": "https://www.anchorterminal.com/compare/earendil-pi-vs-letta"
      },
      {
        "json": "https://www.anchorterminal.com/compare/earendil-pi-vs-reflection-mirror.json",
        "title": "Pi vs Mirror CLI",
        "url": "https://www.anchorterminal.com/compare/earendil-pi-vs-reflection-mirror"
      },
      {
        "json": "https://www.anchorterminal.com/compare/emdash-vs-letta.json",
        "title": "Emdash vs Letta",
        "url": "https://www.anchorterminal.com/compare/emdash-vs-letta"
      },
      {
        "json": "https://www.anchorterminal.com/compare/emdash-vs-reflection-mirror.json",
        "title": "Emdash vs Mirror CLI",
        "url": "https://www.anchorterminal.com/compare/emdash-vs-reflection-mirror"
      },
      {
        "json": "https://www.anchorterminal.com/compare/gemini-cli-vs-letta.json",
        "title": "Gemini CLI vs Letta",
        "url": "https://www.anchorterminal.com/compare/gemini-cli-vs-letta"
      },
      {
        "json": "https://www.anchorterminal.com/compare/gemini-cli-vs-reflection-mirror.json",
        "title": "Gemini CLI vs Mirror CLI",
        "url": "https://www.anchorterminal.com/compare/gemini-cli-vs-reflection-mirror"
      },
      {
        "json": "https://www.anchorterminal.com/compare/github-copilot-cli-vs-letta.json",
        "title": "GitHub Copilot CLI vs Letta",
        "url": "https://www.anchorterminal.com/compare/github-copilot-cli-vs-letta"
      },
      {
        "json": "https://www.anchorterminal.com/compare/github-copilot-cli-vs-reflection-mirror.json",
        "title": "GitHub Copilot CLI vs Mirror CLI",
        "url": "https://www.anchorterminal.com/compare/github-copilot-cli-vs-reflection-mirror"
      },
      {
        "json": "https://www.anchorterminal.com/compare/goose-vs-letta.json",
        "title": "goose vs Letta",
        "url": "https://www.anchorterminal.com/compare/goose-vs-letta"
      },
      {
        "json": "https://www.anchorterminal.com/compare/goose-vs-reflection-mirror.json",
        "title": "goose vs Mirror CLI",
        "url": "https://www.anchorterminal.com/compare/goose-vs-reflection-mirror"
      },
      {
        "json": "https://www.anchorterminal.com/compare/harness2-vs-letta.json",
        "title": "Harness² vs Letta",
        "url": "https://www.anchorterminal.com/compare/harness2-vs-letta"
      },
      {
        "json": "https://www.anchorterminal.com/compare/harness2-vs-reflection-mirror.json",
        "title": "Harness² vs Mirror CLI",
        "url": "https://www.anchorterminal.com/compare/harness2-vs-reflection-mirror"
      },
      {
        "json": "https://www.anchorterminal.com/compare/harnessrouter-vs-letta.json",
        "title": "HarnessRouter vs Letta",
        "url": "https://www.anchorterminal.com/compare/harnessrouter-vs-letta"
      },
      {
        "json": "https://www.anchorterminal.com/compare/harnessrouter-vs-reflection-mirror.json",
        "title": "HarnessRouter vs Mirror CLI",
        "url": "https://www.anchorterminal.com/compare/harnessrouter-vs-reflection-mirror"
      },
      {
        "json": "https://www.anchorterminal.com/compare/jules-vs-letta.json",
        "title": "Jules vs Letta",
        "url": "https://www.anchorterminal.com/compare/jules-vs-letta"
      },
      {
        "json": "https://www.anchorterminal.com/compare/jules-vs-reflection-mirror.json",
        "title": "Jules vs Mirror CLI",
        "url": "https://www.anchorterminal.com/compare/jules-vs-reflection-mirror"
      },
      {
        "json": "https://www.anchorterminal.com/compare/junie-vs-letta.json",
        "title": "Junie CLI vs Letta",
        "url": "https://www.anchorterminal.com/compare/junie-vs-letta"
      },
      {
        "json": "https://www.anchorterminal.com/compare/junie-vs-reflection-mirror.json",
        "title": "Junie CLI vs Mirror CLI",
        "url": "https://www.anchorterminal.com/compare/junie-vs-reflection-mirror"
      },
      {
        "json": "https://www.anchorterminal.com/compare/kilo-code-cli-vs-letta.json",
        "title": "Kilo Code CLI vs Letta",
        "url": "https://www.anchorterminal.com/compare/kilo-code-cli-vs-letta"
      },
      {
        "json": "https://www.anchorterminal.com/compare/kilo-code-cli-vs-reflection-mirror.json",
        "title": "Kilo Code CLI vs Mirror CLI",
        "url": "https://www.anchorterminal.com/compare/kilo-code-cli-vs-reflection-mirror"
      },
      {
        "json": "https://www.anchorterminal.com/compare/kimi-code-cli-vs-letta.json",
        "title": "Kimi Code CLI vs Letta",
        "url": "https://www.anchorterminal.com/compare/kimi-code-cli-vs-letta"
      },
      {
        "json": "https://www.anchorterminal.com/compare/kimi-code-cli-vs-reflection-mirror.json",
        "title": "Kimi Code CLI vs Mirror CLI",
        "url": "https://www.anchorterminal.com/compare/kimi-code-cli-vs-reflection-mirror"
      },
      {
        "json": "https://www.anchorterminal.com/compare/kiro-cli-vs-letta.json",
        "title": "Kiro CLI vs Letta",
        "url": "https://www.anchorterminal.com/compare/kiro-cli-vs-letta"
      },
      {
        "json": "https://www.anchorterminal.com/compare/kiro-cli-vs-reflection-mirror.json",
        "title": "Kiro CLI vs Mirror CLI",
        "url": "https://www.anchorterminal.com/compare/kiro-cli-vs-reflection-mirror"
      },
      {
        "json": "https://www.anchorterminal.com/compare/letta-vs-mini-swe-agent.json",
        "title": "Letta vs mini-swe-agent",
        "url": "https://www.anchorterminal.com/compare/letta-vs-mini-swe-agent"
      },
      {
        "json": "https://www.anchorterminal.com/compare/letta-vs-minimax-code.json",
        "title": "Letta vs MiniMax Code",
        "url": "https://www.anchorterminal.com/compare/letta-vs-minimax-code"
      },
      {
        "json": "https://www.anchorterminal.com/compare/letta-vs-mistral-vibe-cli.json",
        "title": "Letta vs Mistral Vibe CLI",
        "url": "https://www.anchorterminal.com/compare/letta-vs-mistral-vibe-cli"
      },
      {
        "json": "https://www.anchorterminal.com/compare/letta-vs-muse-code.json",
        "title": "Letta vs Muse Code",
        "url": "https://www.anchorterminal.com/compare/letta-vs-muse-code"
      },
      {
        "json": "https://www.anchorterminal.com/compare/letta-vs-openai-agents-api.json",
        "title": "Letta vs OpenAI Agents API",
        "url": "https://www.anchorterminal.com/compare/letta-vs-openai-agents-api"
      },
      {
        "json": "https://www.anchorterminal.com/compare/letta-vs-openai-codex.json",
        "title": "Letta vs OpenAI Codex",
        "url": "https://www.anchorterminal.com/compare/letta-vs-openai-codex"
      },
      {
        "json": "https://www.anchorterminal.com/compare/letta-vs-opencode.json",
        "title": "Letta vs OpenCode",
        "url": "https://www.anchorterminal.com/compare/letta-vs-opencode"
      },
      {
        "json": "https://www.anchorterminal.com/compare/letta-vs-openhands.json",
        "title": "Letta vs OpenHands",
        "url": "https://www.anchorterminal.com/compare/letta-vs-openhands"
      },
      {
        "json": "https://www.anchorterminal.com/compare/letta-vs-openmausbot.json",
        "title": "Letta vs OpenMausBot",
        "url": "https://www.anchorterminal.com/compare/letta-vs-openmausbot"
      },
      {
        "json": "https://www.anchorterminal.com/compare/letta-vs-orca.json",
        "title": "Letta vs Orca",
        "url": "https://www.anchorterminal.com/compare/letta-vs-orca"
      },
      {
        "json": "https://www.anchorterminal.com/compare/letta-vs-paseo.json",
        "title": "Letta vs Paseo",
        "url": "https://www.anchorterminal.com/compare/letta-vs-paseo"
      },
      {
        "json": "https://www.anchorterminal.com/compare/letta-vs-prime-agent.json",
        "title": "Letta vs Prime Agent",
        "url": "https://www.anchorterminal.com/compare/letta-vs-prime-agent"
      },
      {
        "json": "https://www.anchorterminal.com/compare/letta-vs-qoder-cli.json",
        "title": "Letta vs Qoder CLI",
        "url": "https://www.anchorterminal.com/compare/letta-vs-qoder-cli"
      },
      {
        "json": "https://www.anchorterminal.com/compare/letta-vs-qwen-code.json",
        "title": "Letta vs Qwen Code",
        "url": "https://www.anchorterminal.com/compare/letta-vs-qwen-code"
      },
      {
        "json": "https://www.anchorterminal.com/compare/letta-vs-rovo-dev-cli.json",
        "title": "Letta vs Rovo Dev CLI",
        "url": "https://www.anchorterminal.com/compare/letta-vs-rovo-dev-cli"
      },
      {
        "json": "https://www.anchorterminal.com/compare/letta-vs-sculptor.json",
        "title": "Letta vs Sculptor",
        "url": "https://www.anchorterminal.com/compare/letta-vs-sculptor"
      },
      {
        "json": "https://www.anchorterminal.com/compare/letta-vs-t3-code.json",
        "title": "Letta vs T3 Code",
        "url": "https://www.anchorterminal.com/compare/letta-vs-t3-code"
      },
      {
        "json": "https://www.anchorterminal.com/compare/letta-vs-traycer.json",
        "title": "Letta vs Traycer",
        "url": "https://www.anchorterminal.com/compare/letta-vs-traycer"
      },
      {
        "json": "https://www.anchorterminal.com/compare/letta-vs-unstoppable.json",
        "title": "Letta vs Unstoppable",
        "url": "https://www.anchorterminal.com/compare/letta-vs-unstoppable"
      },
      {
        "json": "https://www.anchorterminal.com/compare/letta-vs-verdent.json",
        "title": "Letta vs Verdent",
        "url": "https://www.anchorterminal.com/compare/letta-vs-verdent"
      },
      {
        "json": "https://www.anchorterminal.com/compare/letta-vs-vibe-trading.json",
        "title": "Letta vs Vibe-Trading",
        "url": "https://www.anchorterminal.com/compare/letta-vs-vibe-trading"
      },
      {
        "json": "https://www.anchorterminal.com/compare/letta-vs-warp.json",
        "title": "Letta vs Warp (Warp Agent CLI and the Oz Agent API)",
        "url": "https://www.anchorterminal.com/compare/letta-vs-warp"
      },
      {
        "json": "https://www.anchorterminal.com/compare/mini-swe-agent-vs-reflection-mirror.json",
        "title": "mini-swe-agent vs Mirror CLI",
        "url": "https://www.anchorterminal.com/compare/mini-swe-agent-vs-reflection-mirror"
      },
      {
        "json": "https://www.anchorterminal.com/compare/minimax-code-vs-reflection-mirror.json",
        "title": "MiniMax Code vs Mirror CLI",
        "url": "https://www.anchorterminal.com/compare/minimax-code-vs-reflection-mirror"
      },
      {
        "json": "https://www.anchorterminal.com/compare/mistral-vibe-cli-vs-reflection-mirror.json",
        "title": "Mistral Vibe CLI vs Mirror CLI",
        "url": "https://www.anchorterminal.com/compare/mistral-vibe-cli-vs-reflection-mirror"
      },
      {
        "json": "https://www.anchorterminal.com/compare/muse-code-vs-reflection-mirror.json",
        "title": "Muse Code vs Mirror CLI",
        "url": "https://www.anchorterminal.com/compare/muse-code-vs-reflection-mirror"
      },
      {
        "json": "https://www.anchorterminal.com/compare/openai-agents-api-vs-reflection-mirror.json",
        "title": "OpenAI Agents API vs Mirror CLI",
        "url": "https://www.anchorterminal.com/compare/openai-agents-api-vs-reflection-mirror"
      },
      {
        "json": "https://www.anchorterminal.com/compare/openai-codex-vs-reflection-mirror.json",
        "title": "OpenAI Codex vs Mirror CLI",
        "url": "https://www.anchorterminal.com/compare/openai-codex-vs-reflection-mirror"
      },
      {
        "json": "https://www.anchorterminal.com/compare/opencode-vs-reflection-mirror.json",
        "title": "OpenCode vs Mirror CLI",
        "url": "https://www.anchorterminal.com/compare/opencode-vs-reflection-mirror"
      },
      {
        "json": "https://www.anchorterminal.com/compare/openhands-vs-reflection-mirror.json",
        "title": "OpenHands vs Mirror CLI",
        "url": "https://www.anchorterminal.com/compare/openhands-vs-reflection-mirror"
      },
      {
        "json": "https://www.anchorterminal.com/compare/orca-vs-reflection-mirror.json",
        "title": "Orca vs Mirror CLI",
        "url": "https://www.anchorterminal.com/compare/orca-vs-reflection-mirror"
      },
      {
        "json": "https://www.anchorterminal.com/compare/paseo-vs-reflection-mirror.json",
        "title": "Paseo vs Mirror CLI",
        "url": "https://www.anchorterminal.com/compare/paseo-vs-reflection-mirror"
      },
      {
        "json": "https://www.anchorterminal.com/compare/prime-agent-vs-reflection-mirror.json",
        "title": "Prime Agent vs Mirror CLI",
        "url": "https://www.anchorterminal.com/compare/prime-agent-vs-reflection-mirror"
      },
      {
        "json": "https://www.anchorterminal.com/compare/qoder-cli-vs-reflection-mirror.json",
        "title": "Qoder CLI vs Mirror CLI",
        "url": "https://www.anchorterminal.com/compare/qoder-cli-vs-reflection-mirror"
      },
      {
        "json": "https://www.anchorterminal.com/compare/qwen-code-vs-reflection-mirror.json",
        "title": "Qwen Code vs Mirror CLI",
        "url": "https://www.anchorterminal.com/compare/qwen-code-vs-reflection-mirror"
      },
      {
        "json": "https://www.anchorterminal.com/compare/reflection-mirror-vs-rovo-dev-cli.json",
        "title": "Mirror CLI vs Rovo Dev CLI",
        "url": "https://www.anchorterminal.com/compare/reflection-mirror-vs-rovo-dev-cli"
      },
      {
        "json": "https://www.anchorterminal.com/compare/reflection-mirror-vs-sculptor.json",
        "title": "Mirror CLI vs Sculptor",
        "url": "https://www.anchorterminal.com/compare/reflection-mirror-vs-sculptor"
      },
      {
        "json": "https://www.anchorterminal.com/compare/reflection-mirror-vs-t3-code.json",
        "title": "Mirror CLI vs T3 Code",
        "url": "https://www.anchorterminal.com/compare/reflection-mirror-vs-t3-code"
      },
      {
        "json": "https://www.anchorterminal.com/compare/reflection-mirror-vs-traycer.json",
        "title": "Mirror CLI vs Traycer",
        "url": "https://www.anchorterminal.com/compare/reflection-mirror-vs-traycer"
      },
      {
        "json": "https://www.anchorterminal.com/compare/reflection-mirror-vs-unstoppable.json",
        "title": "Mirror CLI vs Unstoppable",
        "url": "https://www.anchorterminal.com/compare/reflection-mirror-vs-unstoppable"
      },
      {
        "json": "https://www.anchorterminal.com/compare/reflection-mirror-vs-verdent.json",
        "title": "Mirror CLI vs Verdent",
        "url": "https://www.anchorterminal.com/compare/reflection-mirror-vs-verdent"
      },
      {
        "json": "https://www.anchorterminal.com/compare/reflection-mirror-vs-vibe-trading.json",
        "title": "Mirror CLI vs Vibe-Trading",
        "url": "https://www.anchorterminal.com/compare/reflection-mirror-vs-vibe-trading"
      },
      {
        "json": "https://www.anchorterminal.com/compare/reflection-mirror-vs-warp.json",
        "title": "Mirror CLI vs Warp (Warp Agent CLI and the Oz Agent API)",
        "url": "https://www.anchorterminal.com/compare/reflection-mirror-vs-warp"
      },
      {
        "json": "https://www.anchorterminal.com/compare/clawboo-vs-letta.json",
        "title": "Clawboo vs Letta",
        "url": "https://www.anchorterminal.com/compare/clawboo-vs-letta"
      },
      {
        "json": "https://www.anchorterminal.com/compare/clawboo-vs-reflection-mirror.json",
        "title": "Clawboo vs Mirror CLI",
        "url": "https://www.anchorterminal.com/compare/clawboo-vs-reflection-mirror"
      },
      {
        "json": "https://www.anchorterminal.com/compare/cli-manager-vs-letta.json",
        "title": "CLI Manager vs Letta",
        "url": "https://www.anchorterminal.com/compare/cli-manager-vs-letta"
      },
      {
        "json": "https://www.anchorterminal.com/compare/cli-manager-vs-reflection-mirror.json",
        "title": "CLI Manager vs Mirror CLI",
        "url": "https://www.anchorterminal.com/compare/cli-manager-vs-reflection-mirror"
      },
      {
        "json": "https://www.anchorterminal.com/compare/harness-autonomous-vs-letta.json",
        "title": "Harness vs Letta",
        "url": "https://www.anchorterminal.com/compare/harness-autonomous-vs-letta"
      },
      {
        "json": "https://www.anchorterminal.com/compare/harness-autonomous-vs-reflection-mirror.json",
        "title": "Harness vs Mirror CLI",
        "url": "https://www.anchorterminal.com/compare/harness-autonomous-vs-reflection-mirror"
      },
      {
        "json": "https://www.anchorterminal.com/compare/letta-vs-paperclip.json",
        "title": "Letta vs Paperclip",
        "url": "https://www.anchorterminal.com/compare/letta-vs-paperclip"
      },
      {
        "json": "https://www.anchorterminal.com/compare/letta-vs-parallax-agents.json",
        "title": "Letta vs Parallax",
        "url": "https://www.anchorterminal.com/compare/letta-vs-parallax-agents"
      },
      {
        "json": "https://www.anchorterminal.com/compare/openmausbot-vs-reflection-mirror.json",
        "title": "OpenMausBot vs Mirror CLI",
        "url": "https://www.anchorterminal.com/compare/openmausbot-vs-reflection-mirror"
      },
      {
        "json": "https://www.anchorterminal.com/compare/paperclip-vs-reflection-mirror.json",
        "title": "Paperclip vs Mirror CLI",
        "url": "https://www.anchorterminal.com/compare/paperclip-vs-reflection-mirror"
      },
      {
        "json": "https://www.anchorterminal.com/compare/parallax-agents-vs-reflection-mirror.json",
        "title": "Parallax vs Mirror CLI",
        "url": "https://www.anchorterminal.com/compare/parallax-agents-vs-reflection-mirror"
      }
    ],
    "panel": null,
    "scores": [
      {
        "by": 18,
        "edge": "letta",
        "key": "reliability",
        "letta": 58,
        "name": "Reliability",
        "reflection-mirror": 40,
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "by": 5,
        "edge": "reflection-mirror",
        "key": "schema",
        "letta": 70,
        "name": "Schema \u0026 documentation",
        "reflection-mirror": 75,
        "weight": 13
      },
      {
        "by": 9,
        "edge": "letta",
        "key": "ergonomics",
        "letta": 67,
        "name": "Agent ergonomics",
        "reflection-mirror": 58,
        "weight": 13
      },
      {
        "by": 23,
        "edge": "reflection-mirror",
        "key": "security",
        "letta": 35,
        "name": "Security \u0026 auth",
        "reflection-mirror": 58,
        "weight": 14
      },
      {
        "by": 0,
        "edge": "",
        "key": "payments",
        "letta": 60,
        "name": "Payments \u0026 pricing",
        "reflection-mirror": 60,
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "by": 38,
        "edge": "letta",
        "key": "maintenance",
        "letta": 85,
        "name": "Maintenance \u0026 community",
        "reflection-mirror": 47,
        "weight": 7
      },
      {
        "by": 11,
        "edge": "reflection-mirror",
        "key": "transparency",
        "letta": 55,
        "name": "Transparency \u0026 trust",
        "reflection-mirror": 66,
        "weight": 7
      }
    ],
    "summary": "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 \u0026 documentation, security \u0026 auth and transparency \u0026 trust. Both do agent harnesses.",
    "tasks": null,
    "tutorials": [],
    "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.",
      "reflection-mirror": "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."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/letta-vs-reflection-mirror",
    "json": "https://www.anchorterminal.com/compare/letta-vs-reflection-mirror.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/letta-vs-reflection-mirror.md",
    "mcp": "https://www.anchorterminal.com/mcp",
    "slim": "https://www.anchorterminal.com/compare/letta-vs-reflection-mirror.min.md"
  },
  "markdown": "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 \u0026 documentation, security \u0026 auth and transparency \u0026 trust. Both do agent harnesses.\n\n- Letta: grade C, 59.7/100, rank #687 of 1510. Markdown https://www.anchorterminal.com/tools/letta.md · JSON https://www.anchorterminal.com/api/v1/tools/letta.json\n- Mirror CLI: grade C, 57.2/100, rank #805 of 1510. Markdown https://www.anchorterminal.com/tools/reflection-mirror.md · JSON https://www.anchorterminal.com/api/v1/tools/reflection-mirror.json\n- Best agent harnesses and coding agents: https://www.anchorterminal.com/best/agent-harnesses/index.md\n- All 1500 harnesses comparisons: https://www.anchorterminal.com/compare/agent-harnesses/index.md\n- Best memory layers for AI agents: https://www.anchorterminal.com/best/agent-memory/index.md\n- All 353 memory comparisons: https://www.anchorterminal.com/compare/agent-memory/index.md\n\n## Which one, for what\n\n### Letta (C)\n\nGood for: Long-lived coding agents and assistants that keep memory and identity across sessions and machines.\n\nAhead on:\n- Reliability, 58 against 40\n- Agent ergonomics, 67 against 58\n- Maintenance \u0026 community, 85 against 47\n\nAlso in its favour:\n- Runs on your own machine\n\nWatch for: The default permission mode is `unrestricted`, the renamed `bypassPermissions`, so tool calls aren't confirmed unless the user picks another mode\n\n### Mirror CLI (C)\n\nGood 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.\n\nAhead on:\n- Schema \u0026 documentation, 75 against 70\n- Security \u0026 auth, 58 against 35\n- Transparency \u0026 trust, 66 against 55\n\nAlso in its favour:\n- Free to start without a card\n\nWatch for: Version 0.1.x, labelled early beta, with an undated changelog and no CLI release tags\n\n\n## Why the edge\n\n### Maintenance \u0026 community: Letta +38\n\n- 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.\n- 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).\n\n### Security \u0026 auth: Mirror CLI +23\n\n- 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.\n- 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.\n\n### Reliability: Letta +18\n\n- 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.\n- 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).\n\n### Transparency \u0026 trust: Mirror CLI +11\n\n- 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.\n- 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.\n\n### Agent ergonomics: Letta +9\n\n- 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.\n- 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).\n\n### Schema \u0026 documentation: Mirror CLI +5\n\n- 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.\n- 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).\n\n## Score by category\n\n| Category | Weight | Letta | Mirror CLI | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 58 | 40 | Letta +18 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 70 | 75 | Mirror CLI +5 |\n| Agent ergonomics | 13% (16.2 this run) | 67 | 58 | Letta +9 |\n| Security \u0026 auth | 14% (17.5 this run) | 35 | 58 | Mirror CLI +23 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 60 | 60 | even |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 85 | 47 | Letta +38 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 55 | 66 | Mirror CLI +11 |\n| Negative events | ≤15 | 0 | 0 | |\n| **Total** | | **59.7 · C** | **57.2 · C** | |\n\n## Facts side by side\n\n| Fact | Letta | Mirror CLI |\n| --- | --- | --- |\n| Kind | Agent harness | Agent harness |\n| Vendor | Letta | Reflection |\n| Hosted endpoint | no (local only) | no (local only) |\n| Transports | stdio |  |\n| Auth | OAuth or key | API key |\n| Pricing | Freemium | Free |\n| x402 | no | no |\n| Licence | Apache-2.0 | Apache-2.0 |\n| Read-only variant documented | no | no |\n| llms.txt | yes | yes |\n| Last release | 2026-11-06 | 2026-10-16 |\n| Terms last updated | no date given | 2026-10-05 |\n| Privacy policy last updated | no date given | 2026-08-28 |\n| Customer content may train models | not found in the text | yes |\n| Terms restrict automated access | not found in the text | not found in the text |\n| Terms restrict benchmarking | not found in the text | not found in the text |\n| Terms or service can change without notice | not found in the text | not found in the text |\n| Arbitration or class-action waiver | yes | yes |\n| Popularity | 3.8k stars, 86k npm/wk, 2.2k PyPI/wk | none |\n| Agent reviews | none | 3/5 (4) |\n\n## How the scores have moved\n\n### Letta\n\nNo score change since it was listed.\n\n### Mirror CLI\n\n- +3.1 on 4 November 2026: product, correction\n- -0.2 on 30 October 2026: checklist\n- -0.1 on 28 October 2026: correction\n\n## Verdicts\n\n**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.\n\n**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.\n\n## Before you call either\n\n### Letta\n\n1. Start headless runs with an explicit permission mode such as `standard` or `strict`; the default auto-approves tools\n2. Pass `--backend local` for work that must stay on the machine, since Letta Cloud is the default\n3. Set LETTA_CODE_TELEM=0 in unattended runs if usage events must not be sent\n4. Use `letta -p --output-format json` for scripted runs and parse the JSON, not the terminal output\n5. Don't plan on the retired V1 REST server or `.af` AgentFile import; both are gone\n\n### Mirror CLI\n\n1. Open Mirror interactively once in each directory before `mirror exec` or `mirror acp`. Both refuse to run until the usage and folder notices are accepted\n2. Pass `--approval-mode auto` to `mirror exec` only inside a container or VM. In manual mode, calls that need approval fail, and approval isn't a sandbox\n3. Set `--max-iterations` on unattended runs. Turns are unlimited by default\n4. Check the result with your own tests. `exec` returns 0 whenever it prints an answer\n5. Never share logs recorded with `--log-level debug`. The docs say they contain request headers with the API key\n6. Run `/web-provider` after upgrading if you used Firecrawl. You.com is now the default, and a key alone doesn't select its provider\n\n## Questions\n\n### Which is better for AI agents, Letta or Mirror CLI?\n\nLetta 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 \u0026 documentation, security \u0026 auth and transparency \u0026 trust.\n\n### Are Letta and Mirror CLI open source?\n\nYes. Letta is open source (Apache-2.0). Mirror CLI is open source (Apache-2.0).\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/letta-vs-reflection-mirror.json, and with the fewest tokens: https://www.anchorterminal.com/compare/letta-vs-reflection-mirror.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"letta\", \"b\": \"reflection-mirror\"}`. From a terminal: `anchor compare letta reflection-mirror`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/letta.json and https://www.anchorterminal.com/api/v1/tools/reflection-mirror.json\n\n## Other comparisons with Letta or Mirror CLI\n\n- [Agent Zero vs Letta](https://www.anchorterminal.com/compare/agent-zero-vs-letta.md)\n- [Agent Zero vs Mirror CLI](https://www.anchorterminal.com/compare/agent-zero-vs-reflection-mirror.md)\n- [Aider vs Letta](https://www.anchorterminal.com/compare/aider-vs-letta.md)\n- [Aider vs Mirror CLI](https://www.anchorterminal.com/compare/aider-vs-reflection-mirror.md)\n- [Amp vs Letta](https://www.anchorterminal.com/compare/amp-vs-letta.md)\n- [Amp vs Mirror CLI](https://www.anchorterminal.com/compare/amp-vs-reflection-mirror.md)\n- [Antigravity CLI vs Letta](https://www.anchorterminal.com/compare/antigravity-cli-vs-letta.md)\n- [Antigravity CLI vs Mirror CLI](https://www.anchorterminal.com/compare/antigravity-cli-vs-reflection-mirror.md)\n- [Auggie CLI vs Letta](https://www.anchorterminal.com/compare/auggie-vs-letta.md)\n- [Auggie CLI vs Mirror CLI](https://www.anchorterminal.com/compare/auggie-vs-reflection-mirror.md)\n- [AXLR vs Letta](https://www.anchorterminal.com/compare/axlr-vs-letta.md)\n- [AXLR vs Mirror CLI](https://www.anchorterminal.com/compare/axlr-vs-reflection-mirror.md)\n- [Claude Code vs Letta](https://www.anchorterminal.com/compare/claude-code-vs-letta.md)\n- [Claude Code vs Mirror CLI](https://www.anchorterminal.com/compare/claude-code-vs-reflection-mirror.md)\n- [Cline vs Letta](https://www.anchorterminal.com/compare/cline-vs-letta.md)\n- [Cline vs Mirror CLI](https://www.anchorterminal.com/compare/cline-vs-reflection-mirror.md)\n- [Conductor vs Letta](https://www.anchorterminal.com/compare/conductor-vs-letta.md)\n- [Conductor vs Mirror CLI](https://www.anchorterminal.com/compare/conductor-vs-reflection-mirror.md)\n- [Crush vs Letta](https://www.anchorterminal.com/compare/crush-vs-letta.md)\n- [Crush vs Mirror CLI](https://www.anchorterminal.com/compare/crush-vs-reflection-mirror.md)\n- [Cursor CLI vs Letta](https://www.anchorterminal.com/compare/cursor-cli-vs-letta.md)\n- [Cursor CLI vs Mirror CLI](https://www.anchorterminal.com/compare/cursor-cli-vs-reflection-mirror.md)\n- [DeepSeek Harness (dsh) vs Letta](https://www.anchorterminal.com/compare/deepseek-harness-vs-letta.md)\n- [DeepSeek Harness (dsh) vs Mirror CLI](https://www.anchorterminal.com/compare/deepseek-harness-vs-reflection-mirror.md)\n- [dsh-superagent (DeepSeek) vs Letta](https://www.anchorterminal.com/compare/deepseek-superagent-vs-letta.md)\n- [dsh-superagent (DeepSeek) vs Mirror CLI](https://www.anchorterminal.com/compare/deepseek-superagent-vs-reflection-mirror.md)\n- [Devin vs Letta](https://www.anchorterminal.com/compare/devin-vs-letta.md)\n- [Devin vs Mirror CLI](https://www.anchorterminal.com/compare/devin-vs-reflection-mirror.md)\n- [Droid CLI vs Letta](https://www.anchorterminal.com/compare/droid-cli-vs-letta.md)\n- [Droid CLI vs Mirror CLI](https://www.anchorterminal.com/compare/droid-cli-vs-reflection-mirror.md)\n- [Pi vs Letta](https://www.anchorterminal.com/compare/earendil-pi-vs-letta.md)\n- [Pi vs Mirror CLI](https://www.anchorterminal.com/compare/earendil-pi-vs-reflection-mirror.md)\n- [Emdash vs Letta](https://www.anchorterminal.com/compare/emdash-vs-letta.md)\n- [Emdash vs Mirror CLI](https://www.anchorterminal.com/compare/emdash-vs-reflection-mirror.md)\n- [Gemini CLI vs Letta](https://www.anchorterminal.com/compare/gemini-cli-vs-letta.md)\n- [Gemini CLI vs Mirror CLI](https://www.anchorterminal.com/compare/gemini-cli-vs-reflection-mirror.md)\n- [GitHub Copilot CLI vs Letta](https://www.anchorterminal.com/compare/github-copilot-cli-vs-letta.md)\n- [GitHub Copilot CLI vs Mirror CLI](https://www.anchorterminal.com/compare/github-copilot-cli-vs-reflection-mirror.md)\n- [goose vs Letta](https://www.anchorterminal.com/compare/goose-vs-letta.md)\n- [goose vs Mirror CLI](https://www.anchorterminal.com/compare/goose-vs-reflection-mirror.md)\n- [Harness² vs Letta](https://www.anchorterminal.com/compare/harness2-vs-letta.md)\n- [Harness² vs Mirror CLI](https://www.anchorterminal.com/compare/harness2-vs-reflection-mirror.md)\n- [HarnessRouter vs Letta](https://www.anchorterminal.com/compare/harnessrouter-vs-letta.md)\n- [HarnessRouter vs Mirror CLI](https://www.anchorterminal.com/compare/harnessrouter-vs-reflection-mirror.md)\n- [Jules vs Letta](https://www.anchorterminal.com/compare/jules-vs-letta.md)\n- [Jules vs Mirror CLI](https://www.anchorterminal.com/compare/jules-vs-reflection-mirror.md)\n- [Junie CLI vs Letta](https://www.anchorterminal.com/compare/junie-vs-letta.md)\n- [Junie CLI vs Mirror CLI](https://www.anchorterminal.com/compare/junie-vs-reflection-mirror.md)\n- [Kilo Code CLI vs Letta](https://www.anchorterminal.com/compare/kilo-code-cli-vs-letta.md)\n- [Kilo Code CLI vs Mirror CLI](https://www.anchorterminal.com/compare/kilo-code-cli-vs-reflection-mirror.md)\n- [Kimi Code CLI vs Letta](https://www.anchorterminal.com/compare/kimi-code-cli-vs-letta.md)\n- [Kimi Code CLI vs Mirror CLI](https://www.anchorterminal.com/compare/kimi-code-cli-vs-reflection-mirror.md)\n- [Kiro CLI vs Letta](https://www.anchorterminal.com/compare/kiro-cli-vs-letta.md)\n- [Kiro CLI vs Mirror CLI](https://www.anchorterminal.com/compare/kiro-cli-vs-reflection-mirror.md)\n- [Letta vs mini-swe-agent](https://www.anchorterminal.com/compare/letta-vs-mini-swe-agent.md)\n- [Letta vs MiniMax Code](https://www.anchorterminal.com/compare/letta-vs-minimax-code.md)\n- [Letta vs Mistral Vibe CLI](https://www.anchorterminal.com/compare/letta-vs-mistral-vibe-cli.md)\n- [Letta vs Muse Code](https://www.anchorterminal.com/compare/letta-vs-muse-code.md)\n- [Letta vs OpenAI Agents API](https://www.anchorterminal.com/compare/letta-vs-openai-agents-api.md)\n- [Letta vs OpenAI Codex](https://www.anchorterminal.com/compare/letta-vs-openai-codex.md)\n- [Letta vs OpenCode](https://www.anchorterminal.com/compare/letta-vs-opencode.md)\n- [Letta vs OpenHands](https://www.anchorterminal.com/compare/letta-vs-openhands.md)\n- [Letta vs OpenMausBot](https://www.anchorterminal.com/compare/letta-vs-openmausbot.md)\n- [Letta vs Orca](https://www.anchorterminal.com/compare/letta-vs-orca.md)\n- [Letta vs Paseo](https://www.anchorterminal.com/compare/letta-vs-paseo.md)\n- [Letta vs Prime Agent](https://www.anchorterminal.com/compare/letta-vs-prime-agent.md)\n- [Letta vs Qoder CLI](https://www.anchorterminal.com/compare/letta-vs-qoder-cli.md)\n- [Letta vs Qwen Code](https://www.anchorterminal.com/compare/letta-vs-qwen-code.md)\n- [Letta vs Rovo Dev CLI](https://www.anchorterminal.com/compare/letta-vs-rovo-dev-cli.md)\n- [Letta vs Sculptor](https://www.anchorterminal.com/compare/letta-vs-sculptor.md)\n- [Letta vs T3 Code](https://www.anchorterminal.com/compare/letta-vs-t3-code.md)\n- [Letta vs Traycer](https://www.anchorterminal.com/compare/letta-vs-traycer.md)\n- [Letta vs Unstoppable](https://www.anchorterminal.com/compare/letta-vs-unstoppable.md)\n- [Letta vs Verdent](https://www.anchorterminal.com/compare/letta-vs-verdent.md)\n- [Letta vs Vibe-Trading](https://www.anchorterminal.com/compare/letta-vs-vibe-trading.md)\n- [Letta vs Warp (Warp Agent CLI and the Oz Agent API)](https://www.anchorterminal.com/compare/letta-vs-warp.md)\n- [mini-swe-agent vs Mirror CLI](https://www.anchorterminal.com/compare/mini-swe-agent-vs-reflection-mirror.md)\n- [MiniMax Code vs Mirror CLI](https://www.anchorterminal.com/compare/minimax-code-vs-reflection-mirror.md)\n- [Mistral Vibe CLI vs Mirror CLI](https://www.anchorterminal.com/compare/mistral-vibe-cli-vs-reflection-mirror.md)\n- [Muse Code vs Mirror CLI](https://www.anchorterminal.com/compare/muse-code-vs-reflection-mirror.md)\n- [OpenAI Agents API vs Mirror CLI](https://www.anchorterminal.com/compare/openai-agents-api-vs-reflection-mirror.md)\n- [OpenAI Codex vs Mirror CLI](https://www.anchorterminal.com/compare/openai-codex-vs-reflection-mirror.md)\n- [OpenCode vs Mirror CLI](https://www.anchorterminal.com/compare/opencode-vs-reflection-mirror.md)\n- [OpenHands vs Mirror CLI](https://www.anchorterminal.com/compare/openhands-vs-reflection-mirror.md)\n- [Orca vs Mirror CLI](https://www.anchorterminal.com/compare/orca-vs-reflection-mirror.md)\n- [Paseo vs Mirror CLI](https://www.anchorterminal.com/compare/paseo-vs-reflection-mirror.md)\n- [Prime Agent vs Mirror CLI](https://www.anchorterminal.com/compare/prime-agent-vs-reflection-mirror.md)\n- [Qoder CLI vs Mirror CLI](https://www.anchorterminal.com/compare/qoder-cli-vs-reflection-mirror.md)\n- [Qwen Code vs Mirror CLI](https://www.anchorterminal.com/compare/qwen-code-vs-reflection-mirror.md)\n- [Mirror CLI vs Rovo Dev CLI](https://www.anchorterminal.com/compare/reflection-mirror-vs-rovo-dev-cli.md)\n- [Mirror CLI vs Sculptor](https://www.anchorterminal.com/compare/reflection-mirror-vs-sculptor.md)\n- [Mirror CLI vs T3 Code](https://www.anchorterminal.com/compare/reflection-mirror-vs-t3-code.md)\n- [Mirror CLI vs Traycer](https://www.anchorterminal.com/compare/reflection-mirror-vs-traycer.md)\n- [Mirror CLI vs Unstoppable](https://www.anchorterminal.com/compare/reflection-mirror-vs-unstoppable.md)\n- [Mirror CLI vs Verdent](https://www.anchorterminal.com/compare/reflection-mirror-vs-verdent.md)\n- [Mirror CLI vs Vibe-Trading](https://www.anchorterminal.com/compare/reflection-mirror-vs-vibe-trading.md)\n- [Mirror CLI vs Warp (Warp Agent CLI and the Oz Agent API)](https://www.anchorterminal.com/compare/reflection-mirror-vs-warp.md)\n- [Clawboo vs Letta](https://www.anchorterminal.com/compare/clawboo-vs-letta.md)\n- [Clawboo vs Mirror CLI](https://www.anchorterminal.com/compare/clawboo-vs-reflection-mirror.md)\n- [CLI Manager vs Letta](https://www.anchorterminal.com/compare/cli-manager-vs-letta.md)\n- [CLI Manager vs Mirror CLI](https://www.anchorterminal.com/compare/cli-manager-vs-reflection-mirror.md)\n- [Harness vs Letta](https://www.anchorterminal.com/compare/harness-autonomous-vs-letta.md)\n- [Harness vs Mirror CLI](https://www.anchorterminal.com/compare/harness-autonomous-vs-reflection-mirror.md)\n- [Letta vs Paperclip](https://www.anchorterminal.com/compare/letta-vs-paperclip.md)\n- [Letta vs Parallax](https://www.anchorterminal.com/compare/letta-vs-parallax-agents.md)\n- [OpenMausBot vs Mirror CLI](https://www.anchorterminal.com/compare/openmausbot-vs-reflection-mirror.md)\n- [Paperclip vs Mirror CLI](https://www.anchorterminal.com/compare/paperclip-vs-reflection-mirror.md)\n- [Parallax vs Mirror CLI](https://www.anchorterminal.com/compare/parallax-agents-vs-reflection-mirror.md)\n",
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "attributionRequired": true,
    "credit": "CC BY 4.0, credit Anchor Terminal and link the page or API address you took it from (https://www.anchorterminal.com/terms/#data)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-11-07",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.7",
    "openapi": "https://www.anchorterminal.com/openapi.json",
    "preview": false,
    "run": "2026-10-01",
    "runLabel": "October 2026 research run",
    "terms": "https://www.anchorterminal.com/terms/#data"
  },
  "page": {
    "breadcrumbs": [
      {
        "name": "Home",
        "url": "https://www.anchorterminal.com/"
      },
      {
        "name": "Compare",
        "url": "https://www.anchorterminal.com/compare/"
      },
      {
        "name": "Letta vs Mirror CLI",
        "url": ""
      }
    ],
    "description": "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.",
    "facts": [
      "Letta C 59.7",
      "Mirror CLI C 57.2",
      "scores"
    ],
    "h1": "Letta vs Mirror CLI",
    "image": "https://www.anchorterminal.com/assets/og/default.png",
    "path": "/compare/letta-vs-reflection-mirror",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Letta vs Mirror CLI for AI agents in 2026: scores and prices",
    "toc": null,
    "updated": "2026-11-07",
    "url": "https://www.anchorterminal.com/compare/letta-vs-reflection-mirror"
  },
  "tokens": {
    "markdown": 6900,
    "slim": 2980
  },
  "version": 1
}
