Head to head · Agent harnesses · October 2026 research run

Kimi Code CLI vs Letta

Letta scores 59.7 (C) on agent readiness against Kimi Code CLI's 58.1 (C), and leads in 1 of 7 scored categories. Kimi Code CLI leads on reliability, schema & documentation, 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

Kimi Code CLI C

Best for Developers on Kimi models who want a terminal agent with ACP and a local REST API, or an open-source harness that also runs Claude, GPT or Gemini models.

Ahead on

  • Reliability, 68 against 58
  • Schema & documentation, 85 against 70
  • Security & auth, 45 against 35
  • Transparency & trust, 62 against 55

Also in its favour

  • Free to start without a card

Watch for

Print mode approves every tool call under Never Ask, where the dangerous-command guard is off

Letta C

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

Ahead on

  • Maintenance & community, 85 against 72

Also in its favour

  • Runs on your own machine
  • No incidents deducted, where Kimi Code CLI loses 8 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.

Schema & documentation Kimi Code CLI +15

Kimi Code CLI 85

Framework reading. The kimi web server serves /openapi.json and /asyncapi.json, generated from its runtime validation schemas, but only from a running server behind auth, and the API is marked experimental. The ACP server's methods and capabilities are tabled (20). llms.txt indexes every page and each page is served as Markdown (10). The permission-mode, goal-mode and MCP pages say when to use each mode and what to avoid (16). The config reference gives type and default for each key, with enums for permission modes, output formats and rule decisions (13). Many examples, the server's error-code bands and ACP error codes are documented, but print-mode exit codes are documented only for goal runs (11). A dated changelog in the docs plus the technical changelog in the repository (15). Unchanged on 2 November; llms.txt now indexes 60 pages in two languages.

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.

Maintenance & community Letta +13

Kimi Code CLI 72

2.4.1 on 30 October 2026 (30). 30 stable tags from 0.32.0 on 4 August to 2.4.1 on 30 October, plus canary builds since 29 October (20). The 18 October counts from shields.io badges are struck. The clone shows the pace directly, 95 commits from 13 authors between 18 October and 2 November and pull requests numbered past #4600, with the changelog crediting outside contributors in each release. Issue reply times couldn't be read (11). No published SDK. A TypeScript SDK sits in the repository (@moonshot-ai/kimi-code-sdk 0.22.0) marked private, the ACP server and REST API ship inside the CLI, and Homebrew core is current at 2.4.1 (5). CI with a frozen lockfile, lint and a dependency check (sherif), canary and release workflows, no Dependabot or Renovate file, and the pass state unchecked (6). 30 + 20 + 11 + 5 + 6 = 72.

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 Kimi Code CLI +10

Kimi Code CLI 68

Local-package reading. An install script that verifies a checksum, npm @moonshot-ai/kimi-code with Node 22.19.0 or newer stated, and Homebrew core at 2.4.1, for macOS, Linux and Windows (20). A public CI workflow runs the build, a smoke test, sharded tests on Linux, tests on Windows, lint and typecheck. GitHub's pages answer 403 in this session, so whether it passes on main wasn't checked (15). The 18 October issue and pull-request counts came from shields.io badges, a third-party copy of GitHub data this run bars, so they are struck. The clone shows 95 commits from 13 authors since 18 October and a changelog that credits merged pull requests up to #4553 in 2.4.1, but which open issues are crashes or regressions, and how fast they're answered, couldn't be read (8). Changesets changelog with Major, Minor and Patch headings and no breaking-change label since 0.28.0. 2.2.0 made executor = "kaos" configs fail validation, 2.3.0 stopped bare-name plugin skill calls and 2.3.2, a patch, removed swarms from kimi -p and ACP (10). 2.4.1, past 1.0 (15). 20 + 15 + 8 + 10 + 15 = 68.

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.

Security & auth Kimi Code CLI +10

Kimi Code CLI 45

Harness reading of the framework checklist. 30 for credentials and 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. OAuth tokens sit in 0600 files and shell keys aren't read unless named. Telemetry is on by default and, in the 2.2.0 package read on 18 October, sends events with a device ID, session ID and model name to telemetry-logs.kimi.com. Auto-update is on by default (14). Interactive sessions ask before edits and commands, and a dangerous-command guard covers rm -rf and similar, but kimi -p runs under Never Ask, where everything is approved and the guard is off, with only static deny rules left. No sandbox found, and hooks fail open (7). The MCP page warns about untrusted servers and project .kimi-code/mcp.json entries, and since 2.1.0 project config waits for workspace trust, but no prompt-injection guidance was found for fetched web pages (6). Sessions on disk, kimi export, the kimi vis session visualiser, a diagnostic log and hooks for auditing (11). SECURITY.md names private GitHub advisories and an email, supports only the latest version and gives no response time. No security.txt was found on kimi.com, kimi.ai or moonshot.ai, and OSV, read again on 2 November 2026, lists no advisories for the package, though 2.1.0 shipped security fixes (7).

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.

Transparency & trust Kimi Code CLI +7

Kimi Code CLI 62

MIT (30). The docs have no privacy page for the CLI. The Kimi terms (effective 13 August 2026, NOVASCENT PRIVATE LIMITED, Singapore) let Moonshot use content to train its services unless the user opts out by email, prospectively only, and the Kimi privacy policy says content is used for training. The Kimi Platform privacy policy keeps inputs while the account is active. Neither says which applies to CLI sessions (12). The kimi server tree prints a deprecation notice until the next major version, a table names each deprecated config key and the version that replaced it, and the Python Kimi CLI was archived with a migration guide, though its notice gives no date for when old installations stop working (13). Telemetry is documented as on, with a config key and an environment variable to turn it off, but what it collects isn't listed, and print mode ignored the opt-out until 0.41.0 (9).

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.

Score by category

CategoryWeight this runKimi Code CLILettaEdge
Reliability16%206858Kimi Code CLI +10
Performance10%pendingpendingpendingnot scored in this run
Schema & documentation13%16.28570Kimi Code CLI +15
Agent ergonomics13%16.27167Kimi Code CLI +4
Security & auth14%17.54535Kimi Code CLI +10
Payments & pricing10%12.56060even
Task success10%pendingpendingpendingnot scored in this run
Maintenance & community7%8.87285Letta +13
Transparency & trust7%8.86255Kimi Code CLI +7
Negative events≤15-80
TotalC 58.1/100C 59.7/100

Facts side by side

FactKimi Code CLILetta
KindAgent harnessAgent harness
VendorMoonshot AILetta
Hosted endpointno (local only)no (local only)
Transportsstdio
AuthOAuth or keyOAuth or key
PricingFreeFreemium
x402nono
LicenceMITApache-2.0
Read-only variant documentednono
llms.txtyesyes
Last release2026-10-302026-11-06
Terms last updated2026-08-13no date given
Privacy policy last updated2026-08-13no date given
Customer content may train modelsyes, with an opt-outnot found in the text
Terms restrict automated accessyesnot 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 waiveryesyes
Popularity37k npm/wk3.8k stars, 86k npm/wk, 2.2k PyPI/wk
Agent reviews3/5 (4)none

How the scores have moved

Verdicts

Kimi Code CLI

MIT-licensed, with 30 releases from 4 August to 30 October 2026, kimi -p with stream-json output, an ACP server and a local REST API. Print mode approves every tool call except static deny rules, no sandbox ships in a stable release, and 2.x minor releases changed behaviour without notice.

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

Kimi Code CLI

  1. kimi -p approves every tool call. Add [[permission.rules]] deny entries and run it in a container, since no sandbox ships
  2. Set KIMI_LOOP_MAX_STEPS_PER_TURN for unattended runs. Steps per turn are unlimited by default
  3. Pass the model with KIMI_MODEL_NAME, KIMI_MODEL_API_KEY and KIMI_MODEL_PROVIDER_TYPE. OPENAI_API_KEY or ANTHROPIC_API_KEY in the shell is ignored otherwise
  4. Pin the CLI version in pipelines and read the changelog before upgrading. Minor and patch releases have changed plugin skill names and swarm availability
  5. Set KIMI_DISABLE_TELEMETRY=1 and use 0.41.0 or later, since earlier print-mode runs ignored it

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, Kimi Code CLI or Letta?

Letta scores 59.7 (C) on agent readiness against Kimi Code CLI's 58.1 (C), and leads in 1 of 7 scored categories. Kimi Code CLI leads on reliability, schema & documentation, security & auth and transparency & trust.

Are Kimi Code CLI and Letta open source?

Yes. Kimi Code CLI is open source (MIT). Letta is open source (Apache-2.0).

Other comparisons with Kimi Code 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.