{
  "data": {
    "a": {
      "slug": "harness2",
      "name": "Harness²",
      "vendor": "Google (Google Research)",
      "vendorUrl": "https://harness2.github.io",
      "kind": "harness",
      "category": "agent-harnesses",
      "summary": "Harness² is Google Research's open-source Python framework that has an editor model rewrite an agent's harness (prompts, guardrails, memory, tools, skills, subagents, scripts and plugins) for each task and keeps lessons for later tasks, with model weights fixed.",
      "url": "https://www.anchorterminal.com/tools/harness2",
      "markdownUrl": "https://www.anchorterminal.com/tools/harness2.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/harness2.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/harness2.json",
      "dns": "harness2.grade.anchorterminal.com",
      "repo": "https://github.com/google-research/harness2",
      "license": "Apache-2.0. Bundled benchmark runners keep their upstream licences (Apache-2.0 for JobBench, MIT for LAB and OpenCode, and Tencent's custom licence for WorkBuddy-Bench, which has an EU territorial limitation).",
      "transports": [],
      "packages": [],
      "auth": "none",
      "authNotes": "No Harness² account or key. Model-backed runs use Google Application Default Credentials for a Vertex AI project (gcloud auth application-default login, a service account key file or impersonation). The optional Codex bridge generates its own local access key.",
      "pricing": "free",
      "pricingNotes": "Free under Apache-2.0, with nothing to buy. Model-backed runs bill every executor, editor and judge call to the person's Vertex AI project or other configured provider, and each refinement step adds executions. The local demo needs no credentials.",
      "priceSummary": "Free · OSS",
      "where": "local",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the README, docs or source (checked 2026-10-18). The software has nothing to buy.",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": 4200,
        "npmWeekly": null,
        "pypiWeekly": null,
        "asOf": "2026-10-18"
      },
      "docsUrl": "https://github.com/google-research/harness2/tree/main/docs",
      "capabilities": [
        "agent.harness"
      ],
      "tags": [
        "open-source",
        "apache-2.0",
        "local",
        "self-hosted",
        "free",
        "python",
        "cli",
        "linux"
      ],
      "lastRelease": "2026-10-08",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 42,
        "grade": "E",
        "agentReady": false,
        "rank": 1272,
        "ranked": true,
        "rankOf": 1486,
        "categoryRank": 51,
        "methodology": "0.7",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 59,
          "maintenance": 36,
          "payments": 40,
          "reliability": 20,
          "schema": 51,
          "security": 44,
          "transparency": 49
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-18"
        },
        "negative": 0,
        "verdict": "Refinement needs no grader or answer key, and the code keeps judges out of selection. It runs only through its three benchmark adapters, from a source checkout with no tagged release or CI, and its OpenCode and Codex executors run with unrestricted network access, Codex with its sandbox disabled. The benchmark gains are the authors' claims.",
        "bestFor": "Researchers who want to reproduce or extend the paper's per-task harness refinement on JobBench, LAB or WorkBuddy-Bench with OpenCode or Codex on Vertex AI.",
        "strengths": [
          "Refining a harness needs no grader, rubric or answer key. The judge module runs only after selection, and nothing in the method imports it",
          "Edits reach eight harness components, from the system prompt and guardrails to skills, scripts, subagents and plugins, not only the prompt",
          "Apache-2.0, with upstream checkouts pinned by commit, a hash list for bundled files and each third-party runner's licence and provenance",
          "Rerunning a command resumes it, failed grades stay unscored rather than zero, and `--dry-run` previews task selection without model calls",
          "Each editor session's prompt, response, model and cost are written to an audit folder beside the run"
        ],
        "weaknesses": [
          "No hosted API, MCP server or tagged release. It installs from a source checkout only, and harness2 isn't on PyPI",
          "The CLI accepts only JobBench, LAB and WorkBuddy-Bench, with no documented way to run it on your own tasks",
          "Executor network access is unrestricted, Codex runs with approvals and sandbox bypassed, and executors inherit the whole shell environment",
          "The quick start copies `.env.example`, which the repository doesn't contain, and no .gitignore keeps a filled-in .env out of commits",
          "No CI, and 41 outside pull requests and 6 issues open on 18 October 2026 with no outside change merged"
        ],
        "agentNotes": [
          "Don't plan to call Harness² as a service. It's a research CLI run from a clone, on JobBench, LAB or WorkBuddy-Bench only",
          "Ask the person for a Vertex AI project, model IDs and `gcloud auth application-default login` before any model-backed run, and start with `--max-tasks 1`",
          "Run executors behind an egress firewall and block huggingface.co and github.com after setup, as the docs advise, so rubrics can't be fetched",
          "Write .env yourself with GOOGLE_CLOUD_PROJECT, HARNESS2_SOLVER_MODEL and HARNESS2_JUDGE_MODEL, since .env.example isn't shipped, and never commit it",
          "Use the same benchmark, executor, `--k`, `--mode` and seed for `harness2`, `harness2-judge` and `harness2-report`, or the results won't line up"
        ],
        "metrics": {
          "kind": "local",
          "measured": false
        },
        "reviewCount": 4,
        "avgRating": 2.5,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "E",
            "methodology": "0.7",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 42
          }
        ],
        "editorialScores": {
          "ergonomics": 59,
          "maintenance": 36,
          "payments": 40,
          "reliability": 20,
          "schema": 51,
          "security": 44,
          "transparency": 48
        },
        "provenanceScore": 50,
        "checked": {
          "categories": {
            "ergonomics": "2026-10-18",
            "maintenance": "2026-10-18",
            "payments": "2026-10-18",
            "reliability": "2026-10-18",
            "schema": "2026-10-18",
            "security": "2026-10-18",
            "transparency": "2026-10-18"
          },
          "last": "2026-10-18",
          "lastMoved": "2026-10-27",
          "oldest": "2026-10-18",
          "stale": false,
          "staleAfterDays": 90
        }
      },
      "connect": {
        "install": "git clone https://github.com/google-research/harness2.git \u0026\u0026 cd harness2 \u0026\u0026 uv venv --python 3.12 .venv \u0026\u0026 source .venv/bin/activate \u0026\u0026 uv pip install -e '.[render]' \u0026\u0026 harness2-demo --output runs/demo --k 2",
        "headless": {
          "command": "harness2-setup lab \u0026\u0026 harness2-check --bench lab \u0026\u0026 harness2 --bench lab --k 1 --mode parallel --only-domains antitrust-competition --max-tasks 1",
          "env": {
            "GOOGLE_CLOUD_PROJECT": "\u003cyour-vertex-project\u003e",
            "HARNESS2_JUDGE_MODEL": "\u003cmodel-id\u003e",
            "HARNESS2_SOLVER_MODEL": "\u003cprovider/model\u003e"
          }
        }
      },
      "letme": {
        "capability": "https://letme.dev/agent.harness",
        "tool": "https://letme.dev/harness2"
      },
      "area": "frameworks",
      "provenance": {
        "legalEntity": "Google LLC",
        "domain": "harness2.github.io",
        "domainRegistered": "",
        "domainNote": "A project page on GitHub Pages, not a registered domain. The code is in the google-research organisation on GitHub.",
        "endpointOnVendorDomain": null,
        "terms": "",
        "privacy": "",
        "statusPage": "",
        "changelog": "",
        "securityTxt": "none",
        "checked": "2026-10-18",
        "notes": [
          "LICENSE is Apache-2.0, and pyproject.toml and every source file name Google LLC. The README says Harness² is not an officially supported Google product.",
          "No terms or privacy policy govern the package or the project page. Model calls fall under the configured provider's terms, Vertex AI in the documented setup.",
          "The repository has no SECURITY.md, and harness2.github.io/.well-known/security.txt returns 404. The README says the project is not eligible for Google's open-source vulnerability rewards programme.",
          "No changelog, tags or GitHub releases. The version is 0.1.0 in pyproject.toml.",
          "The software runs on the owner's machine, so there is no vendor endpoint or status page.",
          "The project page has no robots.txt and carries a noindex, nofollow robots meta tag. It was read once as a public page."
        ],
        "score": 50
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/harness2.json",
      "live": {
        "slug": "harness2",
        "githubStars": 22938,
        "securityTxt": {
          "url": "https://harness2.github.io/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-11-07T15:59:54.53290748Z"
        },
        "domain": {
          "domain": "github.io",
          "checkedAt": "2026-11-01T14:18:40.30630652Z"
        },
        "github": {
          "repo": "google-research/harness2",
          "checkedAt": "2026-11-02T08:51:52.491406601Z",
          "stars": 21980,
          "archived": false,
          "issuesEnabled": true,
          "pushedAt": "2026-11-02T02:17:27Z",
          "openIssues": 36,
          "openPRs": 103,
          "issuesOpened90d": 41,
          "issuesClosed90d": 5,
          "prsMerged90d": 17,
          "replies": {
            "sampled": 25,
            "unanswered": 23,
            "medianDays": 12.1
          }
        },
        "updatedAt": "2026-11-07T15:59:54.53290748Z"
      }
    },
    "answer": "Letta scores 59.7 (C) on agent readiness against Harness²'s 42 (E), and leads in 6 of 7 scored categories. Harness² leads on security \u0026 auth.",
    "b": {
      "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": 684,
        "ranked": true,
        "rankOf": 1486,
        "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"
      }
    },
    "edges": [
      {
        "by": 49,
        "category": "maintenance",
        "leads": "letta",
        "name": "Maintenance \u0026 community",
        "reasons": {
          "a": "0.1.0, first committed on 8 October 2026, with a README fix on 13 October (30). No tags, releases or dated changelog entries (0). 42 pull requests (41 from outside contributors, one from Dependabot) and 6 issues open on 18 October, against one pull request and no issues closed. No outside change is on main, which has three commits by the authors, and reply times couldn't be read (3 of 25). Not on PyPI and no SDK (0). No CI. Dependencies are pinned by version and upstream checkouts by commit, a ruff configuration is in pyproject.toml, and Dependabot's litellm bump of 8 October is still open (3 of 10). 36 in all.",
          "b": "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."
        },
        "scores": {
          "a": 36,
          "b": 85
        }
      },
      {
        "by": 38,
        "category": "reliability",
        "leads": "letta",
        "name": "Reliability",
        "reasons": {
          "a": "Local-package reading. Not on PyPI (the release feed for harness2 answers 404). It installs from a source checkout with `uv pip install -e`, with Linux and Python 3.12 stated (the package allows 3.13), plus Node.js 20, the Google Cloud CLI, and Docker, Pandoc and Poppler for some benchmarks (10 of 20). No CI workflow in the repository. tests/test_workflow.py holds five unit tests over the deterministic demo, which needs no credentials (5 of 25). Six issues and 42 pull requests were open on 18 October, the pull requests mostly fixes by their titles, such as the missing .env.example, report failures, seeds lost between refinement and grading, and resume. None is merged and no issue is closed. Issue text and replies couldn't be read (5 of 25). No tags or changelog (0). Version 0.1.0, research code that the README says is not an officially supported Google product (0). 20 in all.",
          "b": "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."
        },
        "scores": {
          "a": 20,
          "b": 58
        }
      },
      {
        "by": 20,
        "category": "payments",
        "leads": "letta",
        "name": "Payments \u0026 pricing",
        "reasons": {
          "a": "No payment protocol (0). Read with the self-hosted rule, as for the other harnesses. Free under Apache-2.0 with nothing to buy (20). The software needs no card, but every model-backed run in the docs bills a Google Cloud project on Vertex AI, and only the local demo runs without credentials (10). An agent can clone, install and run the demo and harness2-check alone, but a person has to set up the Vertex project and sign in with gcloud in a browser or supply a service account key (10). 40 in all.",
          "b": "No x402, MPP or L402 (0 of 40). Per-unit API prices are public, $0.10 per active agent a month and $0.00015 a second of tool execution, plus plan prices (20). A $0 plan with bring-your-own keys; no card is mentioned (20). The CLI runs locally without signing in (20). Total 60."
        },
        "scores": {
          "a": 40,
          "b": 60
        }
      },
      {
        "by": 19,
        "category": "schema",
        "leads": "letta",
        "name": "Schema \u0026 documentation",
        "reasons": {
          "a": "Framework reading. Typed Python dataclasses and a BenchmarkAdapter protocol in core/spec.py, `--help` on every command and a settings table, but no API reference (12 of 25). Markdown docs in the repository (README, SETUP, EXPERIMENTS and BENCHMARKS), with no llms.txt (5 of 10). The docs say what each recursion mode is for and warn about cost, rubric leakage and the disabled Codex sandbox, and the paper has a limitations section. Nothing says how to use it outside the three benchmarks (13 of 20). `--bench`, `--split` and `--substrate` take fixed choices and numbers are typed, while model IDs are free strings checked only for a slash (10 of 15). Every command has a worked example and ConfigError messages name the fix, but the quick start's `cp .env.example .env` fails because the file isn't shipped (8 of 15). Version 0.1.0 with no changelog (3 of 15). 51 in all.",
          "b": "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."
        },
        "scores": {
          "a": 51,
          "b": 70
        }
      },
      {
        "by": 9,
        "category": "security",
        "leads": "harness2",
        "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 and credentials, 20 for approvals and sandboxing, 15 for prompt-injection posture and network egress, 15 for audit and 20 for the security programme. No telemetry found in the Harness² source, and the WorkBuddy OpenCode configs turn OpenCode's telemetry, auto-update and sharing off. Credentials are Google Application Default Credentials, and the Codex bridge binds 127.0.0.1 by default with a generated key stored with mode 0600. Against that, executors inherit the whole shell environment (the editor channel drops only five Anthropic variables), and no .gitignore keeps a filled-in .env out of commits (20). Codex runs with `--dangerously-bypass-approvals-and-sandbox`, the Claude CLI editor channel with `--dangerously-skip-permissions`, and the WorkBuddy OpenCode preset allows every tool, with only OpenCode's directory fence and WorkBuddy's containers as limits. The README and setup guide say so (4). Executor network access is unrestricted by default. The docs name the hosts to block and report a Codex rollout that fetched its rubric unprompted, but give no guidance on instructions inside task documents (5). Each editor call's prompt, system text, response, model and cost are saved to an audit folder, with trajectories and adopted harnesses under runs/ (13). No SECURITY.md or security.txt and no advisories, and the README says the project is outside Google's open-source vulnerability rewards programme (2). 44 in all.",
          "b": "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."
        },
        "scores": {
          "a": 44,
          "b": 35
        }
      },
      {
        "by": 8,
        "category": "ergonomics",
        "leads": "letta",
        "name": "Agent ergonomics",
        "reasons": {
          "a": "Framework reading, adapted to a harness that a pipeline drives. Results land in run folders, not in the caller's context, and an agent reads task summaries, adopted harnesses and reflection notes from runs/ (12 of 25). `--only-domains`, `--max-tasks` (per domain), `--split-file`, `--workers` and `--dry-run` size a run before any model call (14 of 20). harness2-check tests dependencies, credentials and configuration without a model call, configuration errors name the remedy, and incomplete runs exit nonzero (14 of 20). Rerunning a command resumes it, saved configuration refuses an incompatible resume, failed grades stay unscored, and editor replies are cached by a fingerprint of their inputs (15 of 20). No model has a default, a Vertex AI project and a gcloud sign-in are needed, only three benchmarks are accepted and there's no SDK (4 of 15). 59 in all.",
          "b": "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."
        },
        "scores": {
          "a": 59,
          "b": 67
        }
      }
    ],
    "facts": [
      {
        "a": "Agent harness",
        "b": "Agent harness",
        "name": "Kind"
      },
      {
        "a": "Google (Google Research)",
        "b": "Letta",
        "name": "Vendor"
      },
      {
        "a": "no (local only)",
        "b": "no (local only)",
        "name": "Hosted endpoint"
      },
      {
        "a": "",
        "b": "stdio",
        "name": "Transports"
      },
      {
        "a": "None",
        "b": "OAuth or key",
        "name": "Auth"
      },
      {
        "a": "Free",
        "b": "Freemium",
        "name": "Pricing"
      },
      {
        "a": "no",
        "b": "no",
        "name": "x402"
      },
      {
        "a": "Apache-2.0. Bundled benchmark runners keep their upstream licences (Apache-2.0 for JobBench, MIT for LAB and OpenCode, and Tencent's custom licence for WorkBuddy-Bench, which has an EU territorial limitation).",
        "b": "Apache-2.0",
        "name": "Licence"
      },
      {
        "a": "no",
        "b": "no",
        "name": "Read-only variant documented"
      },
      {
        "a": "no",
        "b": "yes",
        "name": "llms.txt"
      },
      {
        "a": "2026-10-08",
        "b": "2026-11-06",
        "name": "Last release"
      },
      {
        "a": "no document linked",
        "b": "no date given",
        "name": "Terms last updated"
      },
      {
        "a": "no document linked",
        "b": "no date given",
        "name": "Privacy policy last updated"
      },
      {
        "a": "not read yet",
        "b": "not found in the text",
        "name": "Customer content may train models"
      },
      {
        "a": "not read yet",
        "b": "not found in the text",
        "name": "Terms restrict automated access"
      },
      {
        "a": "not read yet",
        "b": "not found in the text",
        "name": "Terms restrict benchmarking"
      },
      {
        "a": "not read yet",
        "b": "not found in the text",
        "name": "Terms or service can change without notice"
      },
      {
        "a": "not read yet",
        "b": "yes",
        "name": "Arbitration or class-action waiver"
      },
      {
        "a": "4.2k stars",
        "b": "3.8k stars, 86k npm/wk, 2.2k PyPI/wk",
        "name": "Popularity"
      },
      {
        "a": "2.5/5 (4)",
        "b": "none",
        "name": "Agent reviews"
      }
    ],
    "faq": [
      {
        "answer": "Letta scores 59.7 (C) on agent readiness against Harness²'s 42 (E), and leads in 6 of 7 scored categories. Harness² leads on security \u0026 auth.",
        "question": "Which is better for AI agents, Harness² or Letta?"
      },
      {
        "answer": "Yes. Harness² is open source (Apache-2.0. Bundled benchmark runners keep their upstream licences (Apache-2.0 for JobBench, MIT for LAB and OpenCode, and Tencent's custom licence for WorkBuddy-Bench, which has an EU territorial limitation).). Letta is open source (Apache-2.0).",
        "question": "Are Harness² and Letta open source?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": [
          "Security \u0026 auth, 44 against 35"
        ],
        "also": [
          "No key needed to call it"
        ],
        "goodFor": "Researchers who want to reproduce or extend the paper's per-task harness refinement on JobBench, LAB or WorkBuddy-Bench with OpenCode or Codex on Vertex AI.",
        "slug": "harness2",
        "watchFor": "No hosted API, MCP server or tagged release. It installs from a source checkout only, and harness2 isn't on PyPI"
      },
      {
        "aheadOn": [
          "Reliability, 58 against 20",
          "Schema \u0026 documentation, 70 against 51",
          "Agent ergonomics, 67 against 59",
          "Payments \u0026 pricing, 60 against 40",
          "Maintenance \u0026 community, 85 against 36",
          "Transparency \u0026 trust, 55 against 49"
        ],
        "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"
      }
    ],
    "history": {
      "harness2": [
        {
          "causes": [
            "method"
          ],
          "date": "2026-10-27",
          "delta": 0.4,
          "from": 41.6,
          "fromGrade": "E",
          "to": 42,
          "toGrade": "E"
        }
      ],
      "letta": null
    },
    "job": {
      "capability": "agent.harness",
      "name": "Agent harnesses"
    },
    "others": [
      {
        "json": "https://www.anchorterminal.com/compare/agent-zero-vs-harness2.json",
        "title": "Agent Zero vs Harness²",
        "url": "https://www.anchorterminal.com/compare/agent-zero-vs-harness2"
      },
      {
        "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/aider-vs-harness2.json",
        "title": "Aider vs Harness²",
        "url": "https://www.anchorterminal.com/compare/aider-vs-harness2"
      },
      {
        "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/amp-vs-harness2.json",
        "title": "Amp vs Harness²",
        "url": "https://www.anchorterminal.com/compare/amp-vs-harness2"
      },
      {
        "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/antigravity-cli-vs-harness2.json",
        "title": "Antigravity CLI vs Harness²",
        "url": "https://www.anchorterminal.com/compare/antigravity-cli-vs-harness2"
      },
      {
        "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/auggie-vs-harness2.json",
        "title": "Auggie CLI vs Harness²",
        "url": "https://www.anchorterminal.com/compare/auggie-vs-harness2"
      },
      {
        "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/axlr-vs-harness2.json",
        "title": "AXLR vs Harness²",
        "url": "https://www.anchorterminal.com/compare/axlr-vs-harness2"
      },
      {
        "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/claude-code-vs-harness2.json",
        "title": "Claude Code vs Harness²",
        "url": "https://www.anchorterminal.com/compare/claude-code-vs-harness2"
      },
      {
        "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/cline-vs-harness2.json",
        "title": "Cline vs Harness²",
        "url": "https://www.anchorterminal.com/compare/cline-vs-harness2"
      },
      {
        "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/conductor-vs-harness2.json",
        "title": "Conductor vs Harness²",
        "url": "https://www.anchorterminal.com/compare/conductor-vs-harness2"
      },
      {
        "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/crush-vs-harness2.json",
        "title": "Crush vs Harness²",
        "url": "https://www.anchorterminal.com/compare/crush-vs-harness2"
      },
      {
        "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/cursor-cli-vs-harness2.json",
        "title": "Cursor CLI vs Harness²",
        "url": "https://www.anchorterminal.com/compare/cursor-cli-vs-harness2"
      },
      {
        "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/deepseek-harness-vs-harness2.json",
        "title": "DeepSeek Harness (dsh) vs Harness²",
        "url": "https://www.anchorterminal.com/compare/deepseek-harness-vs-harness2"
      },
      {
        "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-superagent-vs-harness2.json",
        "title": "dsh-superagent (DeepSeek) vs Harness²",
        "url": "https://www.anchorterminal.com/compare/deepseek-superagent-vs-harness2"
      },
      {
        "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/devin-vs-harness2.json",
        "title": "Devin vs Harness²",
        "url": "https://www.anchorterminal.com/compare/devin-vs-harness2"
      },
      {
        "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/droid-cli-vs-harness2.json",
        "title": "Droid CLI vs Harness²",
        "url": "https://www.anchorterminal.com/compare/droid-cli-vs-harness2"
      },
      {
        "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/earendil-pi-vs-harness2.json",
        "title": "Pi vs Harness²",
        "url": "https://www.anchorterminal.com/compare/earendil-pi-vs-harness2"
      },
      {
        "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/emdash-vs-harness2.json",
        "title": "Emdash vs Harness²",
        "url": "https://www.anchorterminal.com/compare/emdash-vs-harness2"
      },
      {
        "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/gemini-cli-vs-harness2.json",
        "title": "Gemini CLI vs Harness²",
        "url": "https://www.anchorterminal.com/compare/gemini-cli-vs-harness2"
      },
      {
        "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/github-copilot-cli-vs-harness2.json",
        "title": "GitHub Copilot CLI vs Harness²",
        "url": "https://www.anchorterminal.com/compare/github-copilot-cli-vs-harness2"
      },
      {
        "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/goose-vs-harness2.json",
        "title": "goose vs Harness²",
        "url": "https://www.anchorterminal.com/compare/goose-vs-harness2"
      },
      {
        "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/harness2-vs-harnessrouter.json",
        "title": "Harness² vs HarnessRouter",
        "url": "https://www.anchorterminal.com/compare/harness2-vs-harnessrouter"
      },
      {
        "json": "https://www.anchorterminal.com/compare/harness2-vs-jules.json",
        "title": "Harness² vs Jules",
        "url": "https://www.anchorterminal.com/compare/harness2-vs-jules"
      },
      {
        "json": "https://www.anchorterminal.com/compare/harness2-vs-junie.json",
        "title": "Harness² vs Junie CLI",
        "url": "https://www.anchorterminal.com/compare/harness2-vs-junie"
      },
      {
        "json": "https://www.anchorterminal.com/compare/harness2-vs-kilo-code-cli.json",
        "title": "Harness² vs Kilo Code CLI",
        "url": "https://www.anchorterminal.com/compare/harness2-vs-kilo-code-cli"
      },
      {
        "json": "https://www.anchorterminal.com/compare/harness2-vs-kimi-code-cli.json",
        "title": "Harness² vs Kimi Code CLI",
        "url": "https://www.anchorterminal.com/compare/harness2-vs-kimi-code-cli"
      },
      {
        "json": "https://www.anchorterminal.com/compare/harness2-vs-kiro-cli.json",
        "title": "Harness² vs Kiro CLI",
        "url": "https://www.anchorterminal.com/compare/harness2-vs-kiro-cli"
      },
      {
        "json": "https://www.anchorterminal.com/compare/harness2-vs-mini-swe-agent.json",
        "title": "Harness² vs mini-swe-agent",
        "url": "https://www.anchorterminal.com/compare/harness2-vs-mini-swe-agent"
      },
      {
        "json": "https://www.anchorterminal.com/compare/harness2-vs-minimax-code.json",
        "title": "Harness² vs MiniMax Code",
        "url": "https://www.anchorterminal.com/compare/harness2-vs-minimax-code"
      },
      {
        "json": "https://www.anchorterminal.com/compare/harness2-vs-mistral-vibe-cli.json",
        "title": "Harness² vs Mistral Vibe CLI",
        "url": "https://www.anchorterminal.com/compare/harness2-vs-mistral-vibe-cli"
      },
      {
        "json": "https://www.anchorterminal.com/compare/harness2-vs-muse-code.json",
        "title": "Harness² vs Muse Code",
        "url": "https://www.anchorterminal.com/compare/harness2-vs-muse-code"
      },
      {
        "json": "https://www.anchorterminal.com/compare/harness2-vs-openai-agents-api.json",
        "title": "Harness² vs OpenAI Agents API",
        "url": "https://www.anchorterminal.com/compare/harness2-vs-openai-agents-api"
      },
      {
        "json": "https://www.anchorterminal.com/compare/harness2-vs-openai-codex.json",
        "title": "Harness² vs OpenAI Codex",
        "url": "https://www.anchorterminal.com/compare/harness2-vs-openai-codex"
      },
      {
        "json": "https://www.anchorterminal.com/compare/harness2-vs-opencode.json",
        "title": "Harness² vs OpenCode",
        "url": "https://www.anchorterminal.com/compare/harness2-vs-opencode"
      },
      {
        "json": "https://www.anchorterminal.com/compare/harness2-vs-openhands.json",
        "title": "Harness² vs OpenHands",
        "url": "https://www.anchorterminal.com/compare/harness2-vs-openhands"
      },
      {
        "json": "https://www.anchorterminal.com/compare/harness2-vs-openmausbot.json",
        "title": "Harness² vs OpenMausBot",
        "url": "https://www.anchorterminal.com/compare/harness2-vs-openmausbot"
      },
      {
        "json": "https://www.anchorterminal.com/compare/harness2-vs-orca.json",
        "title": "Harness² vs Orca",
        "url": "https://www.anchorterminal.com/compare/harness2-vs-orca"
      },
      {
        "json": "https://www.anchorterminal.com/compare/harness2-vs-paseo.json",
        "title": "Harness² vs Paseo",
        "url": "https://www.anchorterminal.com/compare/harness2-vs-paseo"
      },
      {
        "json": "https://www.anchorterminal.com/compare/harness2-vs-prime-agent.json",
        "title": "Harness² vs Prime Agent",
        "url": "https://www.anchorterminal.com/compare/harness2-vs-prime-agent"
      },
      {
        "json": "https://www.anchorterminal.com/compare/harness2-vs-qoder-cli.json",
        "title": "Harness² vs Qoder CLI",
        "url": "https://www.anchorterminal.com/compare/harness2-vs-qoder-cli"
      },
      {
        "json": "https://www.anchorterminal.com/compare/harness2-vs-qwen-code.json",
        "title": "Harness² vs Qwen Code",
        "url": "https://www.anchorterminal.com/compare/harness2-vs-qwen-code"
      },
      {
        "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/harness2-vs-rovo-dev-cli.json",
        "title": "Harness² vs Rovo Dev CLI",
        "url": "https://www.anchorterminal.com/compare/harness2-vs-rovo-dev-cli"
      },
      {
        "json": "https://www.anchorterminal.com/compare/harness2-vs-sculptor.json",
        "title": "Harness² vs Sculptor",
        "url": "https://www.anchorterminal.com/compare/harness2-vs-sculptor"
      },
      {
        "json": "https://www.anchorterminal.com/compare/harness2-vs-t3-code.json",
        "title": "Harness² vs T3 Code",
        "url": "https://www.anchorterminal.com/compare/harness2-vs-t3-code"
      },
      {
        "json": "https://www.anchorterminal.com/compare/harness2-vs-traycer.json",
        "title": "Harness² vs Traycer",
        "url": "https://www.anchorterminal.com/compare/harness2-vs-traycer"
      },
      {
        "json": "https://www.anchorterminal.com/compare/harness2-vs-unstoppable.json",
        "title": "Harness² vs Unstoppable",
        "url": "https://www.anchorterminal.com/compare/harness2-vs-unstoppable"
      },
      {
        "json": "https://www.anchorterminal.com/compare/harness2-vs-verdent.json",
        "title": "Harness² vs Verdent",
        "url": "https://www.anchorterminal.com/compare/harness2-vs-verdent"
      },
      {
        "json": "https://www.anchorterminal.com/compare/harness2-vs-vibe-trading.json",
        "title": "Harness² vs Vibe-Trading",
        "url": "https://www.anchorterminal.com/compare/harness2-vs-vibe-trading"
      },
      {
        "json": "https://www.anchorterminal.com/compare/harness2-vs-warp.json",
        "title": "Harness² vs Warp (Warp Agent CLI and the Oz Agent API)",
        "url": "https://www.anchorterminal.com/compare/harness2-vs-warp"
      },
      {
        "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/jules-vs-letta.json",
        "title": "Jules vs Letta",
        "url": "https://www.anchorterminal.com/compare/jules-vs-letta"
      },
      {
        "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/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/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/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/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-reflection-mirror.json",
        "title": "Letta vs Mirror CLI",
        "url": "https://www.anchorterminal.com/compare/letta-vs-reflection-mirror"
      },
      {
        "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/clawboo-vs-letta.json",
        "title": "Clawboo vs Letta",
        "url": "https://www.anchorterminal.com/compare/clawboo-vs-letta"
      },
      {
        "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/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/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"
      }
    ],
    "panel": null,
    "scores": [
      {
        "by": 38,
        "edge": "letta",
        "harness2": 20,
        "key": "reliability",
        "letta": 58,
        "name": "Reliability",
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "by": 19,
        "edge": "letta",
        "harness2": 51,
        "key": "schema",
        "letta": 70,
        "name": "Schema \u0026 documentation",
        "weight": 13
      },
      {
        "by": 8,
        "edge": "letta",
        "harness2": 59,
        "key": "ergonomics",
        "letta": 67,
        "name": "Agent ergonomics",
        "weight": 13
      },
      {
        "by": 9,
        "edge": "harness2",
        "harness2": 44,
        "key": "security",
        "letta": 35,
        "name": "Security \u0026 auth",
        "weight": 14
      },
      {
        "by": 20,
        "edge": "letta",
        "harness2": 40,
        "key": "payments",
        "letta": 60,
        "name": "Payments \u0026 pricing",
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "by": 49,
        "edge": "letta",
        "harness2": 36,
        "key": "maintenance",
        "letta": 85,
        "name": "Maintenance \u0026 community",
        "weight": 7
      },
      {
        "by": 6,
        "edge": "letta",
        "harness2": 49,
        "key": "transparency",
        "letta": 55,
        "name": "Transparency \u0026 trust",
        "weight": 7
      }
    ],
    "summary": "Letta scores 59.7 (C) on agent readiness against Harness²'s 42 (E), and leads in 6 of 7 scored categories. Harness² leads on security \u0026 auth. Both do agent harnesses.",
    "tasks": null,
    "tutorials": [],
    "verdicts": {
      "harness2": "Refinement needs no grader or answer key, and the code keeps judges out of selection. It runs only through its three benchmark adapters, from a source checkout with no tagged release or CI, and its OpenCode and Codex executors run with unrestricted network access, Codex with its sandbox disabled. The benchmark gains are the authors' claims.",
      "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."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/harness2-vs-letta",
    "json": "https://www.anchorterminal.com/compare/harness2-vs-letta.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/harness2-vs-letta.md",
    "mcp": "https://www.anchorterminal.com/mcp",
    "slim": "https://www.anchorterminal.com/compare/harness2-vs-letta.min.md"
  },
  "markdown": "Letta scores 59.7 (C) on agent readiness against Harness²'s 42 (E), and leads in 6 of 7 scored categories. Harness² leads on security \u0026 auth. Both do agent harnesses.\n\n- Harness²: grade E, 42/100, rank #1272 of 1486. Markdown https://www.anchorterminal.com/tools/harness2.md · JSON https://www.anchorterminal.com/api/v1/tools/harness2.json\n- Letta: grade C, 59.7/100, rank #684 of 1486. Markdown https://www.anchorterminal.com/tools/letta.md · JSON https://www.anchorterminal.com/api/v1/tools/letta.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### Harness² (E)\n\nGood for: Researchers who want to reproduce or extend the paper's per-task harness refinement on JobBench, LAB or WorkBuddy-Bench with OpenCode or Codex on Vertex AI.\n\nAhead on:\n- Security \u0026 auth, 44 against 35\n\nAlso in its favour:\n- No key needed to call it\n\nWatch for: No hosted API, MCP server or tagged release. It installs from a source checkout only, and harness2 isn't on PyPI\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 20\n- Schema \u0026 documentation, 70 against 51\n- Agent ergonomics, 67 against 59\n- Payments \u0026 pricing, 60 against 40\n- Maintenance \u0026 community, 85 against 36\n- Transparency \u0026 trust, 55 against 49\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\n## Why the edge\n\n### Maintenance \u0026 community: Letta +49\n\n- Harness² (36): 0.1.0, first committed on 8 October 2026, with a README fix on 13 October (30). No tags, releases or dated changelog entries (0). 42 pull requests (41 from outside contributors, one from Dependabot) and 6 issues open on 18 October, against one pull request and no issues closed. No outside change is on main, which has three commits by the authors, and reply times couldn't be read (3 of 25). Not on PyPI and no SDK (0). No CI. Dependencies are pinned by version and upstream checkouts by commit, a ruff configuration is in pyproject.toml, and Dependabot's litellm bump of 8 October is still open (3 of 10). 36 in all.\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\n### Reliability: Letta +38\n\n- Harness² (20): Local-package reading. Not on PyPI (the release feed for harness2 answers 404). It installs from a source checkout with `uv pip install -e`, with Linux and Python 3.12 stated (the package allows 3.13), plus Node.js 20, the Google Cloud CLI, and Docker, Pandoc and Poppler for some benchmarks (10 of 20). No CI workflow in the repository. tests/test_workflow.py holds five unit tests over the deterministic demo, which needs no credentials (5 of 25). Six issues and 42 pull requests were open on 18 October, the pull requests mostly fixes by their titles, such as the missing .env.example, report failures, seeds lost between refinement and grading, and resume. None is merged and no issue is closed. Issue text and replies couldn't be read (5 of 25). No tags or changelog (0). Version 0.1.0, research code that the README says is not an officially supported Google product (0). 20 in all.\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\n### Payments \u0026 pricing: Letta +20\n\n- Harness² (40): No payment protocol (0). Read with the self-hosted rule, as for the other harnesses. Free under Apache-2.0 with nothing to buy (20). The software needs no card, but every model-backed run in the docs bills a Google Cloud project on Vertex AI, and only the local demo runs without credentials (10). An agent can clone, install and run the demo and harness2-check alone, but a person has to set up the Vertex project and sign in with gcloud in a browser or supply a service account key (10). 40 in all.\n- Letta (60): No x402, MPP or L402 (0 of 40). Per-unit API prices are public, $0.10 per active agent a month and $0.00015 a second of tool execution, plus plan prices (20). A $0 plan with bring-your-own keys; no card is mentioned (20). The CLI runs locally without signing in (20). Total 60.\n\n### Schema \u0026 documentation: Letta +19\n\n- Harness² (51): Framework reading. Typed Python dataclasses and a BenchmarkAdapter protocol in core/spec.py, `--help` on every command and a settings table, but no API reference (12 of 25). Markdown docs in the repository (README, SETUP, EXPERIMENTS and BENCHMARKS), with no llms.txt (5 of 10). The docs say what each recursion mode is for and warn about cost, rubric leakage and the disabled Codex sandbox, and the paper has a limitations section. Nothing says how to use it outside the three benchmarks (13 of 20). `--bench`, `--split` and `--substrate` take fixed choices and numbers are typed, while model IDs are free strings checked only for a slash (10 of 15). Every command has a worked example and ConfigError messages name the fix, but the quick start's `cp .env.example .env` fails because the file isn't shipped (8 of 15). Version 0.1.0 with no changelog (3 of 15). 51 in all.\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\n### Security \u0026 auth: Harness² +9\n\n- Harness² (44): Harness reading of the framework checklist, as for the other harnesses. 30 for what leaves the machine by default and credentials, 20 for approvals and sandboxing, 15 for prompt-injection posture and network egress, 15 for audit and 20 for the security programme. No telemetry found in the Harness² source, and the WorkBuddy OpenCode configs turn OpenCode's telemetry, auto-update and sharing off. Credentials are Google Application Default Credentials, and the Codex bridge binds 127.0.0.1 by default with a generated key stored with mode 0600. Against that, executors inherit the whole shell environment (the editor channel drops only five Anthropic variables), and no .gitignore keeps a filled-in .env out of commits (20). Codex runs with `--dangerously-bypass-approvals-and-sandbox`, the Claude CLI editor channel with `--dangerously-skip-permissions`, and the WorkBuddy OpenCode preset allows every tool, with only OpenCode's directory fence and WorkBuddy's containers as limits. The README and setup guide say so (4). Executor network access is unrestricted by default. The docs name the hosts to block and report a Codex rollout that fetched its rubric unprompted, but give no guidance on instructions inside task documents (5). Each editor call's prompt, system text, response, model and cost are saved to an audit folder, with trajectories and adopted harnesses under runs/ (13). No SECURITY.md or security.txt and no advisories, and the README says the project is outside Google's open-source vulnerability rewards programme (2). 44 in all.\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\n### Agent ergonomics: Letta +8\n\n- Harness² (59): Framework reading, adapted to a harness that a pipeline drives. Results land in run folders, not in the caller's context, and an agent reads task summaries, adopted harnesses and reflection notes from runs/ (12 of 25). `--only-domains`, `--max-tasks` (per domain), `--split-file`, `--workers` and `--dry-run` size a run before any model call (14 of 20). harness2-check tests dependencies, credentials and configuration without a model call, configuration errors name the remedy, and incomplete runs exit nonzero (14 of 20). Rerunning a command resumes it, saved configuration refuses an incompatible resume, failed grades stay unscored, and editor replies are cached by a fingerprint of their inputs (15 of 20). No model has a default, a Vertex AI project and a gcloud sign-in are needed, only three benchmarks are accepted and there's no SDK (4 of 15). 59 in all.\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\n## Score by category\n\n| Category | Weight | Harness² | Letta | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 20 | 58 | Letta +38 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 51 | 70 | Letta +19 |\n| Agent ergonomics | 13% (16.2 this run) | 59 | 67 | Letta +8 |\n| Security \u0026 auth | 14% (17.5 this run) | 44 | 35 | Harness² +9 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 40 | 60 | Letta +20 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 36 | 85 | Letta +49 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 49 | 55 | Letta +6 |\n| Negative events | ≤15 | 0 | 0 | |\n| **Total** | | **42 · E** | **59.7 · C** | |\n\n## Facts side by side\n\n| Fact | Harness² | Letta |\n| --- | --- | --- |\n| Kind | Agent harness | Agent harness |\n| Vendor | Google (Google Research) | Letta |\n| Hosted endpoint | no (local only) | no (local only) |\n| Transports |  | stdio |\n| Auth | None | OAuth or key |\n| Pricing | Free | Freemium |\n| x402 | no | no |\n| Licence | Apache-2.0. Bundled benchmark runners keep their upstream licences (Apache-2.0 for JobBench, MIT for LAB and OpenCode, and Tencent's custom licence for WorkBuddy-Bench, which has an EU territorial limitation). | Apache-2.0 |\n| Read-only variant documented | no | no |\n| llms.txt | no | yes |\n| Last release | 2026-10-08 | 2026-11-06 |\n| Terms last updated | no document linked | no date given |\n| Privacy policy last updated | no document linked | no date given |\n| Customer content may train models | not read yet | not found in the text |\n| Terms restrict automated access | not read yet | not found in the text |\n| Terms restrict benchmarking | not read yet | not found in the text |\n| Terms or service can change without notice | not read yet | not found in the text |\n| Arbitration or class-action waiver | not read yet | yes |\n| Popularity | 4.2k stars | 3.8k stars, 86k npm/wk, 2.2k PyPI/wk |\n| Agent reviews | 2.5/5 (4) | none |\n\n## How the scores have moved\n\n### Harness²\n\n- +0.4 on 27 October 2026: checklist\n\n### Letta\n\nNo score change since it was listed.\n\n## Verdicts\n\n**Harness².** Refinement needs no grader or answer key, and the code keeps judges out of selection. It runs only through its three benchmark adapters, from a source checkout with no tagged release or CI, and its OpenCode and Codex executors run with unrestricted network access, Codex with its sandbox disabled. The benchmark gains are the authors' claims.\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## Before you call either\n\n### Harness²\n\n1. Don't plan to call Harness² as a service. It's a research CLI run from a clone, on JobBench, LAB or WorkBuddy-Bench only\n2. Ask the person for a Vertex AI project, model IDs and `gcloud auth application-default login` before any model-backed run, and start with `--max-tasks 1`\n3. Run executors behind an egress firewall and block huggingface.co and github.com after setup, as the docs advise, so rubrics can't be fetched\n4. Write .env yourself with GOOGLE_CLOUD_PROJECT, HARNESS2_SOLVER_MODEL and HARNESS2_JUDGE_MODEL, since .env.example isn't shipped, and never commit it\n5. Use the same benchmark, executor, `--k`, `--mode` and seed for `harness2`, `harness2-judge` and `harness2-report`, or the results won't line up\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## Questions\n\n### Which is better for AI agents, Harness² or Letta?\n\nLetta scores 59.7 (C) on agent readiness against Harness²'s 42 (E), and leads in 6 of 7 scored categories. Harness² leads on security \u0026 auth.\n\n### Are Harness² and Letta open source?\n\nYes. Harness² is open source (Apache-2.0. Bundled benchmark runners keep their upstream licences (Apache-2.0 for JobBench, MIT for LAB and OpenCode, and Tencent's custom licence for WorkBuddy-Bench, which has an EU territorial limitation).). Letta is open source (Apache-2.0).\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/harness2-vs-letta.json, and with the fewest tokens: https://www.anchorterminal.com/compare/harness2-vs-letta.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"harness2\", \"b\": \"letta\"}`. From a terminal: `anchor compare harness2 letta`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/harness2.json and https://www.anchorterminal.com/api/v1/tools/letta.json\n\n## Other comparisons with Harness² or Letta\n\n- [Agent Zero vs Harness²](https://www.anchorterminal.com/compare/agent-zero-vs-harness2.md)\n- [Agent Zero vs Letta](https://www.anchorterminal.com/compare/agent-zero-vs-letta.md)\n- [Aider vs Harness²](https://www.anchorterminal.com/compare/aider-vs-harness2.md)\n- [Aider vs Letta](https://www.anchorterminal.com/compare/aider-vs-letta.md)\n- [Amp vs Harness²](https://www.anchorterminal.com/compare/amp-vs-harness2.md)\n- [Amp vs Letta](https://www.anchorterminal.com/compare/amp-vs-letta.md)\n- [Antigravity CLI vs Harness²](https://www.anchorterminal.com/compare/antigravity-cli-vs-harness2.md)\n- [Antigravity CLI vs Letta](https://www.anchorterminal.com/compare/antigravity-cli-vs-letta.md)\n- [Auggie CLI vs Harness²](https://www.anchorterminal.com/compare/auggie-vs-harness2.md)\n- [Auggie CLI vs Letta](https://www.anchorterminal.com/compare/auggie-vs-letta.md)\n- [AXLR vs Harness²](https://www.anchorterminal.com/compare/axlr-vs-harness2.md)\n- [AXLR vs Letta](https://www.anchorterminal.com/compare/axlr-vs-letta.md)\n- [Claude Code vs Harness²](https://www.anchorterminal.com/compare/claude-code-vs-harness2.md)\n- [Claude Code vs Letta](https://www.anchorterminal.com/compare/claude-code-vs-letta.md)\n- [Cline vs Harness²](https://www.anchorterminal.com/compare/cline-vs-harness2.md)\n- [Cline vs Letta](https://www.anchorterminal.com/compare/cline-vs-letta.md)\n- [Conductor vs Harness²](https://www.anchorterminal.com/compare/conductor-vs-harness2.md)\n- [Conductor vs Letta](https://www.anchorterminal.com/compare/conductor-vs-letta.md)\n- [Crush vs Harness²](https://www.anchorterminal.com/compare/crush-vs-harness2.md)\n- [Crush vs Letta](https://www.anchorterminal.com/compare/crush-vs-letta.md)\n- [Cursor CLI vs Harness²](https://www.anchorterminal.com/compare/cursor-cli-vs-harness2.md)\n- [Cursor CLI vs Letta](https://www.anchorterminal.com/compare/cursor-cli-vs-letta.md)\n- [DeepSeek Harness (dsh) vs Harness²](https://www.anchorterminal.com/compare/deepseek-harness-vs-harness2.md)\n- [DeepSeek Harness (dsh) vs Letta](https://www.anchorterminal.com/compare/deepseek-harness-vs-letta.md)\n- [dsh-superagent (DeepSeek) vs Harness²](https://www.anchorterminal.com/compare/deepseek-superagent-vs-harness2.md)\n- [dsh-superagent (DeepSeek) vs Letta](https://www.anchorterminal.com/compare/deepseek-superagent-vs-letta.md)\n- [Devin vs Harness²](https://www.anchorterminal.com/compare/devin-vs-harness2.md)\n- [Devin vs Letta](https://www.anchorterminal.com/compare/devin-vs-letta.md)\n- [Droid CLI vs Harness²](https://www.anchorterminal.com/compare/droid-cli-vs-harness2.md)\n- [Droid CLI vs Letta](https://www.anchorterminal.com/compare/droid-cli-vs-letta.md)\n- [Pi vs Harness²](https://www.anchorterminal.com/compare/earendil-pi-vs-harness2.md)\n- [Pi vs Letta](https://www.anchorterminal.com/compare/earendil-pi-vs-letta.md)\n- [Emdash vs Harness²](https://www.anchorterminal.com/compare/emdash-vs-harness2.md)\n- [Emdash vs Letta](https://www.anchorterminal.com/compare/emdash-vs-letta.md)\n- [Gemini CLI vs Harness²](https://www.anchorterminal.com/compare/gemini-cli-vs-harness2.md)\n- [Gemini CLI vs Letta](https://www.anchorterminal.com/compare/gemini-cli-vs-letta.md)\n- [GitHub Copilot CLI vs Harness²](https://www.anchorterminal.com/compare/github-copilot-cli-vs-harness2.md)\n- [GitHub Copilot CLI vs Letta](https://www.anchorterminal.com/compare/github-copilot-cli-vs-letta.md)\n- [goose vs Harness²](https://www.anchorterminal.com/compare/goose-vs-harness2.md)\n- [goose vs Letta](https://www.anchorterminal.com/compare/goose-vs-letta.md)\n- [Harness² vs HarnessRouter](https://www.anchorterminal.com/compare/harness2-vs-harnessrouter.md)\n- [Harness² vs Jules](https://www.anchorterminal.com/compare/harness2-vs-jules.md)\n- [Harness² vs Junie CLI](https://www.anchorterminal.com/compare/harness2-vs-junie.md)\n- [Harness² vs Kilo Code CLI](https://www.anchorterminal.com/compare/harness2-vs-kilo-code-cli.md)\n- [Harness² vs Kimi Code CLI](https://www.anchorterminal.com/compare/harness2-vs-kimi-code-cli.md)\n- [Harness² vs Kiro CLI](https://www.anchorterminal.com/compare/harness2-vs-kiro-cli.md)\n- [Harness² vs mini-swe-agent](https://www.anchorterminal.com/compare/harness2-vs-mini-swe-agent.md)\n- [Harness² vs MiniMax Code](https://www.anchorterminal.com/compare/harness2-vs-minimax-code.md)\n- [Harness² vs Mistral Vibe CLI](https://www.anchorterminal.com/compare/harness2-vs-mistral-vibe-cli.md)\n- [Harness² vs Muse Code](https://www.anchorterminal.com/compare/harness2-vs-muse-code.md)\n- [Harness² vs OpenAI Agents API](https://www.anchorterminal.com/compare/harness2-vs-openai-agents-api.md)\n- [Harness² vs OpenAI Codex](https://www.anchorterminal.com/compare/harness2-vs-openai-codex.md)\n- [Harness² vs OpenCode](https://www.anchorterminal.com/compare/harness2-vs-opencode.md)\n- [Harness² vs OpenHands](https://www.anchorterminal.com/compare/harness2-vs-openhands.md)\n- [Harness² vs OpenMausBot](https://www.anchorterminal.com/compare/harness2-vs-openmausbot.md)\n- [Harness² vs Orca](https://www.anchorterminal.com/compare/harness2-vs-orca.md)\n- [Harness² vs Paseo](https://www.anchorterminal.com/compare/harness2-vs-paseo.md)\n- [Harness² vs Prime Agent](https://www.anchorterminal.com/compare/harness2-vs-prime-agent.md)\n- [Harness² vs Qoder CLI](https://www.anchorterminal.com/compare/harness2-vs-qoder-cli.md)\n- [Harness² vs Qwen Code](https://www.anchorterminal.com/compare/harness2-vs-qwen-code.md)\n- [Harness² vs Mirror CLI](https://www.anchorterminal.com/compare/harness2-vs-reflection-mirror.md)\n- [Harness² vs Rovo Dev CLI](https://www.anchorterminal.com/compare/harness2-vs-rovo-dev-cli.md)\n- [Harness² vs Sculptor](https://www.anchorterminal.com/compare/harness2-vs-sculptor.md)\n- [Harness² vs T3 Code](https://www.anchorterminal.com/compare/harness2-vs-t3-code.md)\n- [Harness² vs Traycer](https://www.anchorterminal.com/compare/harness2-vs-traycer.md)\n- [Harness² vs Unstoppable](https://www.anchorterminal.com/compare/harness2-vs-unstoppable.md)\n- [Harness² vs Verdent](https://www.anchorterminal.com/compare/harness2-vs-verdent.md)\n- [Harness² vs Vibe-Trading](https://www.anchorterminal.com/compare/harness2-vs-vibe-trading.md)\n- [Harness² vs Warp (Warp Agent CLI and the Oz Agent API)](https://www.anchorterminal.com/compare/harness2-vs-warp.md)\n- [HarnessRouter vs Letta](https://www.anchorterminal.com/compare/harnessrouter-vs-letta.md)\n- [Jules vs Letta](https://www.anchorterminal.com/compare/jules-vs-letta.md)\n- [Junie CLI vs Letta](https://www.anchorterminal.com/compare/junie-vs-letta.md)\n- [Kilo Code CLI vs Letta](https://www.anchorterminal.com/compare/kilo-code-cli-vs-letta.md)\n- [Kimi Code CLI vs Letta](https://www.anchorterminal.com/compare/kimi-code-cli-vs-letta.md)\n- [Kiro CLI vs Letta](https://www.anchorterminal.com/compare/kiro-cli-vs-letta.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 Mirror CLI](https://www.anchorterminal.com/compare/letta-vs-reflection-mirror.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- [Clawboo vs Letta](https://www.anchorterminal.com/compare/clawboo-vs-letta.md)\n- [CLI Manager vs Letta](https://www.anchorterminal.com/compare/cli-manager-vs-letta.md)\n- [Harness vs Letta](https://www.anchorterminal.com/compare/harness-autonomous-vs-letta.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",
  "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": "Harness² vs Letta",
        "url": ""
      }
    ],
    "description": "Letta scores 59.7 (C) to Harness²'s 42 (E) for agent harnesses. Prices, MCP, x402, uptime and agent notes side by side.",
    "facts": [
      "Harness² E 42",
      "Letta C 59.7",
      "scores"
    ],
    "h1": "Harness² vs Letta",
    "image": "https://www.anchorterminal.com/assets/og/default.png",
    "path": "/compare/harness2-vs-letta",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Harness² vs Letta for AI agents in 2026: scores and prices",
    "toc": null,
    "updated": "2026-11-07",
    "url": "https://www.anchorterminal.com/compare/harness2-vs-letta"
  },
  "tokens": {
    "markdown": 6550,
    "slim": 2930
  },
  "version": 1
}
