TermAl

Feature Brief: Kimi CLI Integration

Status: future work.

Reference: agent-integration-comparison.md

Last checked: 2026-05-02.

Problem

Kimi is not currently a TermAl agent. TermAl supports Claude, Codex, Cursor, and Gemini, with Cursor and Gemini sharing the ACP runtime path. Kimi now has a technical-preview CLI with Agent Client Protocol support, which makes it a good candidate for a future ACP-backed TermAl integration.

This brief tracks the likely integration path without committing the product to supporting Kimi until the CLI and protocol behavior are stable enough.

Current Kimi surface

Official references:

Useful current facts:

Use the shared ACP adapter, not a bespoke OpenAI Chat Completions loop.

kimi --acp

TermAl already has the right shape for this through AcpAgent::Cursor and AcpAgent::Gemini: spawn a long-lived CLI process, speak JSON-RPC over stdio, load or create an agent session, dispatch prompts, map session/update events into TermAl message cards, and surface session/request_permission as approval cards when the server supports it.

The OpenAI-compatible API remains useful for model metadata and documentation, but it does not by itself provide the coding-agent runtime surface TermAl needs: workspace tools, permissions, long-lived sessions, cancellation, and ACP-style updates.

Proposed scope

Non-goals

Backend tasks

Frontend tasks

Open questions

  1. Does Kimi ACP expose the same config shape for model as Cursor and Gemini?
  2. What authentication methods does initialize advertise, and can TermAl give useful setup guidance without shelling out to an interactive flow?
  3. Does Kimi ACP send structured file edits and command updates that map cleanly to TermAl command and diff cards?
  4. Is session/cancel implemented and reliable enough for TermAl’s stop button?
  5. Does Kimi CLI persist session IDs in a way that makes session/load stable across process restarts?
  6. Should Kimi-specific thinking controls become a general provider-extension settings mechanism instead of a one-off session field?