Head to head · Agent harnesses · October 2026 research run

Junie CLI vs Letta

Letta scores 59.7 (C) on agent readiness against Junie CLI's 49 (D), and leads in 5 of 7 scored categories. Junie CLI leads on security & auth and transparency & trust. 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

Junie CLI D

Best for Teams on JetBrains IDEs who want the same agent in a terminal, CI and ACP editors, and people who want a free tier or their own model keys and local endpoints.

Ahead on

  • Security & auth, 56 against 35
  • Transparency & trust, 77 against 55

Also in its favour

  • Free to start without a card

Watch for

One-shot, piped, ACP and Gateway runs trust the project by design and load its MCP servers, hooks, agents and skills without a prompt

Letta C

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

Ahead on

  • Reliability, 58 against 33
  • Schema & documentation, 70 against 62
  • Agent ergonomics, 67 against 55
  • Payments & pricing, 60 against 42
  • Maintenance & community, 85 against 64

Also in its favour

  • Runs on your own machine
  • Open source
  • No incidents deducted, where Junie CLI loses 4 points for them

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.

Reliability Letta +25

Junie CLI 33

Local-package reading, the same as the other closed-source harnesses. Install scripts for macOS, Linux and Windows on x86-64 and ARM64, a Homebrew tap and npm, with SHA-256 sums checked against the release feed (update-info.jsonl, read from a clone on 4 November), but the script carries on without a sum for an unlisted version and npm sat five weeks behind at 3110.7.0 on 18 October (17). No public CI or test suite. No source is published and the repository has no workflow files, per a clone on 4 November (0). Crash and regression line 0. The 18 October counts came from shields.io badges and YouTrack's JSON API, both struck in this run, and no first-hand reading of the GitHub tracker or YouTrack is possible today (github.com pages refused, JetBrains hosts paused). What's New dates every build, but entries are one line and no breaking change is called out, and versions are a date plus a build number, per the 18 October check (6). JetBrains said Junie left Beta on 17 June 2026, but the headless page dated 15 October still calls the CLI an EAP, per the 18 October check (10). 17+0+0+6+10 = 33.

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.

Transparency & trust Junie CLI +22

Junie CLI 77

Proprietary, with clear terms. The JetBrains AI Terms of Service (version 2.1, effective 30 September 2025) name AI Assistant and Junie, though the Junie EAP terms from December 2024 still call Junie a plugin (15). The terms rule out training on inputs without consent and list AI subcontractors with 30 days' notice of new ones (page updated 29 September 2026, naming OpenAI, Google, Anthropic and SpaceXAI for Junie). The AI FAQ says nothing persists unless detailed data collection is on, retained up to a year, and that it's on by default for non-commercial licences. Security monitoring keeps data for an unstated limited period (22). The terms promise 30 days' email notice before JetBrains AI is discontinued, but Junie Lite's model may change without notice and model aliases change without a stated period (10). A per-run override for anonymous statistics is documented, with no stated default and no list of what is sent (10). 15+22+10+10 = 57. Per the 18 October check, not re-read on 4 November, because JetBrains' website terms bar robots and data mining on its sites.

Letta 55

Apache-2.0 (30). The privacy policy has no date, no legal entity and no retention periods, and says hosted message data may train future models (8 of 30). The README and docs mark AgentFile, the Electron app and the V1 server as deprecated or retired, without dated notice periods (12 of 20). Telemetry is described in the privacy policy only as basic and opt-out when supported; the LETTA_CODE_TELEM=0 switch appears only in the source (5 of 20). Total 55.

Security & auth Junie CLI +21

Junie CLI 56

Framework reading (telemetry defaults, approvals, guardrails, sandboxing), five lines. A browser login, a long-lived Junie API key with no scopes we found, or provider keys passed as flags or environment variables. The CLI's statistics default isn't stated (13). The allowlist asks before terminal commands, MCP tools, edits outside the project, reads outside it and secret files, and checks every part of chained, nested and multi-line commands. Brave mode is interactive only. Sandbox mode limits writes and hides ~/.ssh, but it's EAP-only, off by default, missing on Windows, and leaves the network open by default (12). Interactive runs keep an untrusted project's MCP servers, hooks and skills unloaded and a project can't widen the sandbox, but one-shot, piped, ACP and Gateway runs trust every project by design, and the docs say to run them only in trusted projects (9). /usage shows per-session cost and sessions are stored, and PreToolUse hooks in batch runs can log or block tools, but they're EAP, and no audit log for the CLI was found (7). A coordinated disclosure policy (updated 10 October 2026) and a security.txt contact, CVEs JetBrains publishes as a CVE numbering authority (three for Junie in cvelistV5) and a fixed-issues page, discretionary rewards with no formal bounty, and SOC 2 per the Junie homepage. The repository has no SECURITY.md, per a clone on 4 November (15). The docs, policy and homepage readings are per the 18 October check, not re-read on 4 November, because JetBrains' website terms bar robots and data mining on its sites. 13+12+9+7+15 = 56.

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.

Maintenance & community Letta +21

Junie CLI 64

Release 26.11.3 (build 3959.5) added to the release feed on 3 November 2026, read from a clone of JetBrains/junie (30). The release channel added 30 builds between 6 August and 3 November, from 2651.3 on 11 August to 3959.5, and the repository has 1,032 tags created in that window, most of them nightly builds (20). Responsiveness 5 of 25. The 18 October counts of the GitHub tracker and YouTrack came from shields.io badges and YouTrack's JSON API, both struck, so what is left is the dated What's New page and a Discord server, per the 18 October check, with replies unread (5). No SDK and no registry entry. The GitHub Action is at v1 and GitLab CI is documented, and ACP is kept current, per the 18 October check (6). Closed source with no workflow files in the repository, so no CI or dependency health to read. The installer checks sums, and npm sat five weeks behind the release feed on 18 October (3). 30+20+5+6+3 = 64.

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.

Payments & pricing Letta +18

Junie CLI 42

Harness reading of the published rubric. No payment protocol (0). Plan prices and the US$1 credit are public without a login, but per-model credit rates and Junie API key usage rates weren't found (12). Junie Lite is free with a JetBrains account and no card (20). Judgement call. The docs present BYOK keys and custom endpoints such as Ollama as alternatives to a JetBrains sign-in, so a pipeline holding a provider key needs no JetBrains signup, but the headless page says a token is required and a Junie API key is created by hand at junie.jetbrains.com/cli (10). 0+12+20+10 = 42. Per the 18 October check, not re-read on 4 November, because JetBrains' website terms bar robots and data mining on its sites.

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.

Agent ergonomics Letta +12

Junie CLI 55

Framework reading, adapted to a harness driven by a pipeline. MCP tools can be allowed per server prefix, and default MCP, skill, agent and config locations can each be switched off, with no deferred tool loading found (15). text, json and json-stream output and --json-output-file. Remote mode mentions a step limit, but no turn, time or spend cap for a headless run was documented (10). No exit codes. A Stop hook can end a task with a failure status, and StopFailure names the failure category (8). Sessions resume with --session-id or --resume, and worktrees isolate parallel sessions (14). One command with --auth and a dynamically chosen default model, a GitHub Action and GitLab CI, and no SDK (8). 15+10+8+14+8 = 55. Per the 18 October check, not re-read on 4 November, because JetBrains' website terms bar robots and data mining on its sites.

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.

Score by category

CategoryWeight this runJunie CLILettaEdge
Reliability16%203358Letta +25
Performance10%pendingpendingpendingnot scored in this run
Schema & documentation13%16.26270Letta +8
Agent ergonomics13%16.25567Letta +12
Security & auth14%17.55635Junie CLI +21
Payments & pricing10%12.54260Letta +18
Task success10%pendingpendingpendingnot scored in this run
Maintenance & community7%8.86485Letta +21
Transparency & trust7%8.87755Junie CLI +22
Negative events≤15-40
TotalD 49/100C 59.7/100

Facts side by side

FactJunie CLILetta
KindAgent harnessAgent harness
VendorJetBrainsLetta
Hosted endpointno (local only)no (local only)
Transportsstdio
AuthOAuth or keyOAuth or key
PricingFreemiumFreemium
x402nono
LicenceProprietary, JetBrains s.r.o., all rights reserved, under the JetBrains AI Terms of Service. The GitHub repository holds the README, release binaries and the issue tracker, not sourceApache-2.0
Read-only variant documentednono
llms.txtyesyes
Last release2026-11-032026-11-06
Terms last updated2025-09-30no date given
Privacy policy last updated2026-06-12no date given
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 waivernot found in the textyes
Popularity3.2k npm/wk3.8k stars, 86k npm/wk, 2.2k PyPI/wk
Agent reviews2.8/5 (4)none

How the scores have moved

Verdicts

Junie CLI

Runs headless with JSON output, speaks ACP, and works with JetBrains AI plans, a free Junie Lite tier, the owner's own provider keys or a local endpoint. Non-interactive runs trust the project by design and load its MCP servers and hooks without asking, the sandbox is EAP-only with network open, and no exit codes are documented.

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

Junie CLI

  1. Run headless only in repositories you trust. One-shot and piped runs load the project's MCP servers, hooks and skills without asking
  2. Set JUNIE_API_KEY (from junie.jetbrains.com/cli) or a provider key such as JUNIE_ANTHROPIC_API_KEY in CI. The default sign-in opens a browser
  3. Add --output-format json or --json-output-file to parse results. Check the output, since exit codes aren't documented
  4. Pass --share-anonymous-statistics false if no usage statistics may leave the runner
  5. Pin a build with --use-version and --skip-update-check. The CLI updates itself on start by default

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

Questions

Which is better for AI agents, Junie CLI or Letta?

Letta scores 59.7 (C) on agent readiness against Junie CLI's 49 (D), and leads in 5 of 7 scored categories. Junie CLI leads on security & auth and transparency & trust.

Are Junie CLI and Letta open source?

No open-source release is listed for Junie CLI. Letta is open source (Apache-2.0).

Other comparisons with Junie CLI or Letta

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.