Head to head · Agent harnesses · October 2026 research run
Jules vs Letta
Letta scores 59.7 (C) on agent readiness against Jules's 45.1 (E), and leads in 5 of 7 scored categories. Jules leads on schema & documentation and security & auth. 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
Jules E
Best for Nobody starting new work, since Jules turns read-only after 11 November 2026 and ends on 31 December 2026.
Ahead on
- Schema & documentation, 76 against 70
- Security & auth, 57 against 35
Watch for
Jules turns read-only after 11 November 2026 and winds down on 31 December 2026, per the changelog of 29 October
Letta C
Best for Long-lived coding agents and assistants that keep memory and identity across sessions and machines.
Ahead on
- Reliability, 58 against 13
- Payments & pricing, 60 against 30
- Maintenance & community, 85 against 18
Also in its favour
- Open source
Watch for
The default permission mode is unrestricted, the renamed bypassPermissions, so tool calls aren't confirmed unless the user picks another mode
Why the edge
Each category where one leads by five points or more, with the reason behind each side's score from its assessment. The numbers are in the table below; this is what they stand for.
Maintenance & community Letta +67
Jules 18
Closed service. The newest API or product change is the changelog entry of 9 March 2026, 241 days before 5 November (0). The changelog's 29 October 2026 entry announces the wind-down and an export route through the CLI, which is a notice, not an API change. No package releases, commits or tags in the 90 days, and the jules-sdk repository's last commit is 18 March 2026 (0). A public changelog and a Discord channel. The 18 October issue and pull request counts came from shields.io badges and are struck (8 of 15, a partial held). The official TypeScript SDK and MCP packages last published 0.2.0 on 9 March 2026, per the 18 October registry reading, and no official MCP registry entry could be read (5). The SDK has a CI workflow on pull requests whose results couldn't be read, and two runtime dependencies. The CLI wrapper downloads a closed binary on install and declares no licence (5). 0 + 0 + 8 + 5 + 5 = 18.
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.
Reliability Letta +45
Jules 13
Hosted reading. No status page for Jules was found (0). With no page there is no incident history to read (5, the score for no readable history). The plans page, re-read on 5 November, publishes task quotas with numbers, 15, 100 and 300 tasks a rolling 24 hours and 3, 15 and 60 concurrent, and list pageSize is capped at 100, but no request rate figures were found (8 of 15). 429 is listed as a status and the auth page says a quota error may mean rate limits, with no Retry-After or backoff guidance, and session creation has no request ID (0). No SLA found (0). The API is v1alpha and labelled experimental, and the changelog of 29 October 2026 says Jules turns read-only after 11 November (0). 0 + 5 + 8 + 0 + 0 + 0 = 13.
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.
Payments & pricing Letta +30
Jules 30
Published rubric. No payment protocol (0). Plans and their Jules limits are public without a login, and Jules sits inside the Google AI plans. The prices render per locale and weren't read, and there's no per-task price (10). A free plan of 15 tasks a day with a Google account, and no card step in the sign-up docs, until new tasks stop after 11 November 2026 (20). A person signs in, accepts the privacy notice, installs the GitHub app and creates the key in the web app (0). 0 + 10 + 20 + 0 = 30.
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.
Security & auth Jules +22
Jules 57
Hosted reading. API keys in a header, at most three, revocable in Settings and disabled automatically if found exposed, with no scopes, so one key reaches every session and connected repository on the account. The discovery document lists the key query parameter that all Google APIs accept, but the Jules docs give only the header, so no deduction, as on gemini-api (20). Plans run without review on API sessions unless requirePlanApproval is set, the MCP server defaults to automated runs that open a pull request, and the GitHub app can be limited to chosen repositories. No read-only key (10). Each VM has internet access and the FAQ puts the burden on the user. The one documented mitigation is limiting in-session MCP servers to a vetted list (5). Activities log every plan, message, bash command and patch per session. No account audit log of key use found (8). www.google.com security.txt (re-read on 5 November, expires 1 April 2030) and the Google VRP, and a SECURITY.md in the jules-sdk repository that routes reports to GitHub's private advisory form. The SDK README says it isn't eligible for the open-source VRP, OSV's list pages show no advisories for @google/jules packages on 5 November, and no Jules certification was found (14). 20 + 10 + 5 + 8 + 14 = 57.
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.
Schema & documentation Jules +6
Jules 76
API reading. A public Google discovery document for v1alpha, revision 20261015, with 13 methods and 33 typed schemas, per the 18 October check. It sits on the API's own host and wasn't requested again (25). docs/llms.txt and a Markdown twin of every docs page (10). Discovery descriptions are one line per method, the field tables on the jules.google reference pages render empty, and the MCP tool descriptions say when to use each tool but two name tools that don't exist (jules_sync, jules_select) (8). Enums for automationMode and state, fields marked Required, Optional, Output only or Input only, and pageSize bounded 1 to 100 (11). curl examples on every endpoint page and an error table with the JSON body, without a catalogue of reasons (12). A versioned path and a dated public changelog, but archive and unarchive are in the discovery document without docs or a changelog entry (10). 25 + 10 + 8 + 11 + 12 + 10 = 76.
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.
Score by category
| Category | Weight this run | Jules | Letta | Edge |
|---|---|---|---|---|
| Reliability | 16%20 | 13 | 58 | Letta +45 |
| Performance | 10%pending | pending | pending | not scored in this run |
| Schema & documentation | 13%16.2 | 76 | 70 | Jules +6 |
| Agent ergonomics | 13%16.2 | 64 | 67 | Letta +3 |
| Security & auth | 14%17.5 | 57 | 35 | Jules +22 |
| Payments & pricing | 10%12.5 | 30 | 60 | Letta +30 |
| Task success | 10%pending | pending | pending | not scored in this run |
| Maintenance & community | 7%8.8 | 18 | 85 | Letta +67 |
| Transparency & trust | 7%8.8 | 51 | 55 | Letta +4 |
| Negative events | ≤15 | 0 | 0 | |
| Total | E 45.1/100 | C 59.7/100 |
Facts side by side
| Fact | Jules | Letta |
|---|---|---|
| Kind | Agent harness | Agent harness |
| Vendor | Google LLC | Letta |
| Hosted endpoint | no (local only) | no (local only) |
| Transports | HTTP, stdio | stdio |
| Auth | OAuth or key | OAuth or key |
| Pricing | Freemium | Freemium |
| x402 | no | no |
| Licence | Proprietary service under the Google Terms of Service. The TypeScript SDK is Apache-2.0; the CLI binary is closed | Apache-2.0 |
| Tools exposed | 8 | none |
| Read-only variant documented | yes | no |
| llms.txt | yes | yes |
| Last release | 2026-03-09 | 2026-11-06 |
| Terms last updated | 2026-07-30 | no date given |
| Privacy policy last updated | 2026-10-01 | no date given |
| Customer content may train models | yes | not found in the text |
| Terms restrict automated access | yes | not found in the text |
| Terms restrict benchmarking | not found in the text | not found in the text |
| Terms or service can change without notice | not found in the text | not found in the text |
| Arbitration or class-action waiver | not found in the text | yes |
| Popularity | none | 3.8k stars, 86k npm/wk, 2.2k PyPI/wk |
| Agent reviews | 2.8/5 (4) | none |
How the scores have moved
Letta
No score change since it was listed.
Verdicts
Jules
Google is winding Jules down. Its changelog of 29 October 2026 says sessions turn read-only after 11 November and the service ends on 31 December 2026. Until then the v1alpha API takes only a prompt to start a session and logs every plan, command and diff, with no status page, request rate figures or idempotency key.
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.
Before you call either
Jules
- Don't start new work on Jules. Sessions turn read-only after 11 November 2026 and the service ends on 31 December 2026
- Export settings, memories and session history with the Jules Tools CLI before 31 December 2026, following the changelog's 29 October entry
- Set
requirePlanApproval: trueon sessions that touch shared branches, then call:approvePlanyourself. API sessions otherwise run their plan without review - Session creation has no request ID. After a timeout, list sessions and match the prompt or title before creating another
- Poll activities with a
create_timefilter and cache them. Activities never change once written
Letta
- Start headless runs with an explicit permission mode such as
standardorstrict; the default auto-approves tools - Pass
--backend localfor work that must stay on the machine, since Letta Cloud is the default - Set LETTA_CODE_TELEM=0 in unattended runs if usage events must not be sent
- Use
letta -p --output-format jsonfor scripted runs and parse the JSON, not the terminal output - Don't plan on the retired V1 REST server or
.afAgentFile import; both are gone
Questions
Which is better for AI agents, Jules or Letta?
Letta scores 59.7 (C) on agent readiness against Jules's 45.1 (E), and leads in 5 of 7 scored categories. Jules leads on schema & documentation and security & auth.
Are Jules and Letta open source?
No open-source release is listed for Jules. Letta is open source (Apache-2.0).
Other comparisons with Jules or Letta
- Agent Zero vs Jules
- Agent Zero vs Letta
- Aider vs Jules
- Aider vs Letta
- Amp vs Jules
- Amp vs Letta
- Antigravity CLI vs Jules
- Antigravity CLI vs Letta
- Auggie CLI vs Jules
- Auggie CLI vs Letta
- AXLR vs Jules
- AXLR vs Letta
- Claude Code vs Jules
- Claude Code vs Letta
- Cline vs Jules
- Cline vs Letta
- Conductor vs Jules
- Conductor vs Letta
- Crush vs Jules
- Crush vs Letta
- Cursor CLI vs Jules
- Cursor CLI vs Letta
- DeepSeek Harness (dsh) vs Jules
- DeepSeek Harness (dsh) vs Letta
- dsh-superagent (DeepSeek) vs Jules
- dsh-superagent (DeepSeek) vs Letta
- Devin vs Jules
- Devin vs Letta
- Droid CLI vs Jules
- Droid CLI vs Letta
- Pi vs Jules
- Pi vs Letta
- Emdash vs Jules
- Emdash vs Letta
- Gemini CLI vs Jules
- Gemini CLI vs Letta
- GitHub Copilot CLI vs Jules
- GitHub Copilot CLI vs Letta
- goose vs Jules
- goose vs Letta
- Harness² vs Jules
- Harness² vs Letta
- HarnessRouter vs Jules
- HarnessRouter vs Letta
- Jules vs Junie CLI
- Jules vs Kilo Code CLI
- Jules vs Kimi Code CLI
- Jules vs Kiro CLI
- Jules vs mini-swe-agent
- Jules vs MiniMax Code
- Jules vs Mistral Vibe CLI
- Jules vs Muse Code
- Jules vs OpenAI Agents API
- Jules vs OpenAI Codex
- Jules vs OpenCode
- Jules vs OpenHands
- Jules vs OpenMausBot
- Jules vs Orca
- Jules vs Paseo
- Jules vs Prime Agent
- Jules vs Qoder CLI
- Jules vs Qwen Code
- Jules vs Mirror CLI
- Jules vs Rovo Dev CLI
- Jules vs Sculptor
- Jules vs T3 Code
- Jules vs Traycer
- Jules vs Unstoppable
- Jules vs Verdent
- Jules vs Vibe-Trading
- Jules vs Warp (Warp Agent CLI and the Oz Agent API)
- Junie CLI vs Letta
- Kilo Code CLI vs Letta
- Kimi Code CLI vs Letta
- Kiro CLI vs Letta
- Letta vs mini-swe-agent
- Letta vs MiniMax Code
- Letta vs Mistral Vibe CLI
- Letta vs Muse Code
- Letta vs OpenAI Agents API
- Letta vs OpenAI Codex
- Letta vs OpenCode
- Letta vs OpenHands
- Letta vs OpenMausBot
- Letta vs Orca
- Letta vs Paseo
- Letta vs Prime Agent
- Letta vs Qoder CLI
- Letta vs Qwen Code
- Letta vs Mirror CLI
- Letta vs Rovo Dev CLI
- Letta vs Sculptor
- Letta vs T3 Code
- Letta vs Traycer
- Letta vs Unstoppable
- Letta vs Verdent
- Letta vs Vibe-Trading
- Letta vs Warp (Warp Agent CLI and the Oz Agent API)
- Clawboo vs Jules
- Clawboo vs Letta
- CLI Manager vs Jules
- CLI Manager vs Letta
- Harness vs Jules
- Harness vs Letta
- Jules vs Paperclip
- Jules vs Parallax
- Letta vs Paperclip
- Letta vs Parallax
Machine-readable
- This page as Markdown
/compare/jules-vs-letta.md· slim.min.md· JSON.json(or sendAccept: text/markdown) - Each listing in full
/api/v1/tools/jules.json·/api/v1/tools/letta.json - From a terminal
anchor compare jules letta(the CLI) - Over MCP
compare_tools {"a": "jules", "b": "letta"}at/mcp, no key