Head to head · Agent harnesses · October 2026 research run

Letta vs OpenMausBot

OpenMausBot scores 65.4 (B) on agent readiness against Letta's 59.7 (C), and leads in 5 of 7 scored categories. Letta leads on payments & pricing and maintenance & community. Both do agent harnesses.

Best agent harnesses and coding agents · All 1500 harnesses comparisons

Best memory layers for AI agents · All 353 memory comparisons

Which one, for what

Letta C

Best for Long-lived coding agents and assistants that keep memory and identity across sessions and machines.

Ahead on

  • Payments & pricing, 60 against 50
  • Maintenance & community, 85 against 74

Watch for

The default permission mode is unrestricted, the renamed bypassPermissions, so tool calls aren't confirmed unless the user picks another mode

OpenMausBot B

Best for A person or an outside agent who wants several CLI agents (Claude Code, Codex, Grok, ACP CLIs) organised as named bots with their own computers, routines and approvals, driven by MCP or a CLI.

Ahead on

  • Schema & documentation, 90 against 70
  • Agent ergonomics, 77 against 67
  • Security & auth, 59 against 35

Also in its favour

  • Free to start without a card

Watch for

New bots start at Full access, which approves provider permission requests without a card

Why the edge

Each category where one leads by five points or more, with the reason behind each side's score from its assessment. The numbers are in the table below; this is what they stand for.

Security & auth OpenMausBot +24

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.

OpenMausBot 59

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 prompt-injection posture, 15 for audit and 20 for the security programme. The harness binds to loopback and keys stay in ~/.openmausbot, but PostHog usage analytics are on until switched off, with a daily snapshot of what is set up, and the CLI guide says API keys are saved in plaintext with mode 0600 (18). Approval cards for provider permission requests, a narrow Always allow, isolated Local VMs and cloud computers, own-computer control off by default, and an MCP server that cannot approve, delete or touch credentials. New bots start at Full access, bot changes to skills, profiles and team setup apply without approval, and new bots keep every connected-app tool until grants are assigned (10). The docs say web page instructions never authorise credential use and that one-time codes go only to the site that sent them, and imported bots arrive with no grants, but bots read one-time codes from connected email without asking again (9). Per-thread NDJSON event logs, an Inspector, a decision log for connected-app grants and Undo lines for bot changes (12). SECURITY.md with an email, GitHub private vulnerability reporting enabled and scope notes that name one open risk. No published advisories, security.txt or bug bounty. npm releases use trusted publishing with provenance, and the Windows installer is unsigned (10).

Schema & documentation OpenMausBot +20

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.

OpenMausBot 90

The MCP server's 20 tools each have a JSON Schema input with additionalProperties: false and required fields marked. No OpenAPI for the local HTTP API (25). Markdown docs in the repository, and the docs app's source serves llms.txt, llms-full.txt and Markdown routes. docs.openmausbot.com disallows every crawler, so the live llms.txt was not read (10). Descriptions state purpose and limits, such as that update_bot_profile cannot alter permissions, that send_bot_message may make the bot use external tools and that edit_bot_message is refused while a thread works, and the server instructions say to read before mutating. Few say when not to use a tool (15). Integer limits with minimum and maximum, an enum on scope, a pattern on send_id and oneOf shapes for responders (13). JSON configuration examples for each install path, the wait statuses and job states, CLI exit codes and a { ok, error, hint, exitCode } failure shape (12). MCP server version 1.1.0, release notes per version and a changelog page in the docs (15).

Maintenance & community Letta +11

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.

OpenMausBot 74

v0.1.137 on 1 November 2026, after v0.1.135 on 31 October and v0.1.136 on 1 November (30). 128 desktop versions from 11 August to 30 October 2026, and three more since (20). The maintainer has 4,221 commits and the contributor list returns at least 100 accounts. 587 issues and pull requests were open from about 3,940 filed on 30 October, when we could only sample the newest open issues, nearly all from the last two days and mostly unanswered so far (per the 30 October check; github.com refuses our requests on 2 November) (16). Not in the official MCP registry, which returns nothing for mausbot (0). CI on main runs on every push with most finished runs passing, npm provenance and an SBOM for the bundled Cua runtime (per the 30 October check) (8). 30+20+16+0+8 = 74.

Agent ergonomics OpenMausBot +10

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.

OpenMausBot 77

20 tools, inside the 11 to 30 band, with annotations that separate reads from writes but no toolsets or read-only mode to load. Transcript reads are bounded and never return screenshot pixels (17). limit up to 200 messages, search capped at 100 hits, task_id and scope filters, and since_ms and after_version to keep watching a job (17). wait_for_conversation reports settled, needs-user, failed, stalled or timed-out with a redacted transcript tail, and the CLI's exit codes separate a pending approval from a timeout. We did not read every MCP error path (15). send_id makes a repeated send return the first receipt, wait is held by the server rather than polled, and every tool carries readOnlyHint, destructiveHint, idempotentHint and openWorldHint (20). Few required parameters and defaults for task, limit and timeout. The server answers only while the app or openmausbot serve runs, mutating tools need a paired token in packaged builds, and there is no client SDK beyond the CLI (8).

Payments & pricing Letta +10

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.

OpenMausBot 50

No payment protocol (0). MausBot Cloud, the hosted option, is priced by plan on a public page ($15, $49 and $99 a month, Team $169 and Business $599, or Business self-hosted $299 a month billed yearly, re-read on 2 November), with extra computer-hours at $0.05 each, so plan pricing (10). The app is free with no card or account (20). npx openmausbot installs and starts it with no signup (20).

Score by category

CategoryWeight this runLettaOpenMausBotEdge
Reliability16%205860OpenMausBot +2
Performance10%pendingpendingpendingnot scored in this run
Schema & documentation13%16.27090OpenMausBot +20
Agent ergonomics13%16.26777OpenMausBot +10
Security & auth14%17.53559OpenMausBot +24
Payments & pricing10%12.56050Letta +10
Task success10%pendingpendingpendingnot scored in this run
Maintenance & community7%8.88574Letta +11
Transparency & trust7%8.85559OpenMausBot +4
Negative events≤150-2
TotalC 59.7/100B 65.4/100

Facts side by side

FactLettaOpenMausBot
KindAgent harnessAgent harness
VendorLettaSupamaus Software Private Limited
Hosted endpointno (local only)no (local only)
Transportsstdiostdio
AuthOAuth or keyOAuth or key
PricingFreemiumFreemium
x402nono
LicenceApache-2.0Apache-2.0
Tools exposednone20
Read-only variant documentednono
llms.txtyesno
Last release2026-11-062026-11-01
Terms last updatedno date given2026-10-10
Privacy policy last updatedno date given2026-10-18
Customer content may train modelsnot found in the textnot found in the text
Terms restrict automated accessnot found in the textnot found in the text
Terms restrict benchmarkingnot found in the textnot found in the text
Terms or service can change without noticenot found in the textnot found in the text
Arbitration or class-action waiveryesnot found in the text
Popularity3.8k stars, 86k npm/wk, 2.2k PyPI/wk8.2k stars, 3.5k npm/wk

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.

OpenMausBot

A bounded 20-tool MCP server with typed schemas, annotations and idempotent sends, and a headless CLI with JSON output and exit codes, let another agent hand work to a bot team and wait on it. New bots start at Full access, so provider permission requests pass without a card, and usage analytics stay on until switched off.

Before you call either

Letta

  1. Start headless runs with an explicit permission mode such as standard or strict; the default auto-approves tools
  2. Pass --backend local for work that must stay on the machine, since Letta Cloud is the default
  3. Set LETTA_CODE_TELEM=0 in unattended runs if usage events must not be sent
  4. Use letta -p --output-format json for scripted runs and parse the JSON, not the terminal output
  5. Don't plan on the retired V1 REST server or .af AgentFile import; both are gone

OpenMausBot

  1. Ask the owner for a pairing code from Settings > Phone, exchange it at POST /api/auth/pair, and set OPENMAUSBOT_TOKEN with an explicit OMB_PORT
  2. Pass a send_id with every send_bot_message and send_channel_message, so a retry returns the first receipt
  3. Use wait_for_conversation instead of polling, and on needs-user stop and tell the owner a card is waiting
  4. Check a bot's access level with the owner before sending work. New bots run at Full access unless defaults were changed
  5. Ask the owner to switch off Settings > General > Usage analytics if nothing beyond model calls should leave the machine

Questions

Which is better for AI agents, Letta or OpenMausBot?

OpenMausBot scores 65.4 (B) on agent readiness against Letta's 59.7 (C), and leads in 5 of 7 scored categories. Letta leads on payments & pricing and maintenance & community.

Are Letta and OpenMausBot open source?

Yes. Letta is open source (Apache-2.0). OpenMausBot is open source (Apache-2.0).

Other comparisons with Letta or OpenMausBot

Machine-readable

For companies

Do agents find, use and choose your tools?

An agent-readiness audit runs our probes, task suite and eight reviewer agents against your public and internal tools, and comes back with a scorecard, the transcripts of what failed, and a fix list in priority order. From $2,500, re-run included. We never take payment to move a rank. We do help companies earn one.