Baike.dev
All toolsOnline toolsAI codingTrendingOpen sourceNewsSubmit
Log in
< Back to tools
K

kimchi

> 编程语言
Open source

Terminal coding agent powered by Kimchi's multi-model orchestration

2.2K stars0 likes1 views
WebsiteGitHub

About

Terminal coding agent powered by Kimchi's multi-model orchestration

kimchi

A coding agent CLI powered by kimchi. Built on the pi-mono coding agent SDK, kimchi gives you an AI-powered development assistant in your terminal that connects to kimchi's LLM infrastructure.

Quick start

Install the latest release:

Homebrew (macOS / Linux):

bash
brew install getkimchi/tap/kimchi

Install script (macOS / Linux):

bash
curl -fsSL https://github.com/getkimchi/kimchi/releases/latest/download/install.sh | bash

PowerShell (Windows):

powershell
irm https://github.com/getkimchi/kimchi/releases/latest/download/install.ps1 | iex

The one-liner runs the installer in memory, so the PowerShell execution policy does not apply to it. If you instead downloaded install.ps1 and want to run it as a file (blocked by the default Restricted policy), use:

powershell
powershell -NoProfile -ExecutionPolicy Bypass -File .\install.ps1

The bypass applies only to this invocation and does not change your system-wide execution policy. Then configure your API key and launch:

bash
kimchi setup   # one-time interactive setup
kimchi         # launch the coding agent

Run kimchi --help to see all available subcommands and flags.

Models

Model selection

The supported model list is fetched at startup from the kimchi metadata service. Use /model or ctrl+p in the interactive CLI to switch between available models.

Kimchi operates in one of two modes:

Mode Status line indicator Behavior
Multi-model multi-model (orchestrator-id) The orchestrator delegates each task to the model assigned for that role
Single-model model name All work runs on the selected model directly

Use ctrl+p to cycle through models. The last entry in the cycle is multi-model. You can also open the /model picker and select a specific model or multi-model from the list.

In single-model mode the orchestration system prompt (environment, tools, research rules, guidelines, phase tagging) stays active, but task classification and delegation are disabled. The subagent tool remains available if you explicitly ask the agent to delegate.

Model roles

In multi-model mode, each task type is handled by a specific role. Each role can have one model or a pool of candidates — the orchestrator reads model tier and description and picks the best fit for each task.

Use /multi-model in the interactive CLI to toggle models on/off per role, or edit ~/.config/kimchi/harness/settings.json directly:

json
{
  "modelRoles": {
    "orchestrator": "kimchi-dev/kimi-k2.6",
    "builder": ["kimchi-dev/minimax-m2.7", "anthropic/claude-sonnet-4-5"],
    "reviewer": "anthropic/claude-sonnet-4-5",
    "explorer": "kimchi-dev/nemotron-3-ultra-fp4"
  }
}
Role Default Description
orchestrator kimi-k2.6 Runs the main loop, classifies tasks, delegates work. Single model.
planner kimi-k2.6 Designs the approach, writes specs. When same as orchestrator, planning is done in-process.
builder kimi-k2.6, minimax-m2.7 Code implementation. For complex tasks the orchestrator may pick a heavier model from the pool.
reviewer kimi-k2.6, minimax-m2.7 Code review. Orchestrator picks the strongest by tier for initial review.
explorer nemotron-3-ultra-fp4 Codebase exploration — navigating files, reading code, tracing architecture.
researcher kimi-k2.6 Research beyond the codebase — web search, documentation lookup, external sources.

Defaults are hardcoded in DEFAULT_MODEL_ROLES. Roles accept any provider/model-id string or an array of strings. Only non-default values need to be specified; missing keys fall back to defaults.

How delegation works

The orchestrator receives explicit per-phase directives generated from the role configuration. For each pipeline phase (plan, build, review, explore, research), the system prompt tells the orchestrator exactly what to do:

  • Roles it owns (its model ID appears in the role pool): "DO perform this work yourself."
  • Roles it does not own: "DO NOT perform this work yourself. Delegate to Agent(type: X, model: Y)." — with the concrete model IDs from the pool.
  • Review is always delegated, even when the orchestrator has the reviewer role, to ensure independence via a fresh context.

When a role pool has multiple models, the orchestrator picks the lightest-tier model that fits the task and escalates to heavy-tier only for complex work (concurrency, algorithms) or as a retry after a standard-tier model has failed.

Built-in models (kimchi-dev) have tier and description baked in. External models need metadata — see below.

Model metadata

External models (Anthropic, OpenAI, or any non-builtin provider) have no built-in tier or description. Without metadata, they default to standard tier, vision: false, and an auto-generated description based on their assigned roles. To give the orchestrator better routing information, add a modelMetadata section to settings.json:

json
{
  "modelRoles": {
    "builder": ["kimchi-dev/minimax-m2.7", "anthropic/claude-sonnet-4-5"],
    "reviewer": "anthropic/claude-sonnet-4-5"
  },
  "modelMetadata": {
    "anthropic/claude-sonnet-4-5": {
      "tier": "heavy",
      "description": "Strong general-purpose model — use for complex builds and thorough reviews."
    }
  }
}
Field Default Description
tier standard light, standard, or heavy. Used for complexity-based routing.
description Auto-generated Shown to the orchestrator so it can match model strengths to task requirements.
vision false Whether the model supports image input.

With the metadata above, the orchestrator will use minimax for simple build chunks and Claude for complex ones. Without it, both models look like standard-tier to the orchestrator and selection is arbitrary.

Metadata can also be managed interactively via /multi-model → "Edit model metadata" — this is the only in-app path for configuring or overriding metadata, so model selection stays uninterrupted. Custom overrides can be reset to defaults from the same menu. Metadata for builtin models can be overridden the same way.

Phase tracking

Kimchi tags every LLM request with a phase:{name} label for usage analytics and cost attribution. The orchestrator sets the phase as work progresses and it is displayed in the status line.

Phase Description
explore Navigating the codebase, reading files to understand structure
plan Designing, breaking down tasks, writing specs
build Writing, modifying, or refactoring code
review Analyzing output, verifying correctness
research Investigating documentation, researching issues

Subagents inherit the current phase from the orchestrator but cannot change it.

Tags

Kimchi supports tagging LLM requests for usage tracking and cost attribution. Tags are included with every request and displayed in the status line, grouped by key with color coding.

Commands

Command Description
/tags List all active tags
/tags add key:value ... Add one or more tags (e.g., /tags add project:myapp team:backend)
/tags remove tag ... Remove one or more user-defined tags
/tags clear Remove all user-defined tags

Tag format

Tags use key:value format. Key and value must start and end with alphanumeric characters (middle characters may include -, _, .), each 64 characters max, 10 tags total.

Tag defaults hierarchy

Default tags are resolved from three sources, strongest first:

  1. KIMCHI_TAGS environment variable (comma-separated)
  2. Project config — the nearest .kimchi/tags.json found walking up from the working directory (so monorepo subdirectories pick up the repo-level file)
  3. Global config — ~/.config/kimchi/tags.json
bash
export KIMCHI_TAGS="team:backend,project:api"

Sources are unioned; when two sources define the same tag key, the stronger source's value wins. Default tags are shown with an [env], [project], or [global] marker in the /tags list; user-added tags show as [user].

Auto-tags

Two tags are added automatically to every request and do not count toward the 10 tag limit:

  • model:{model_id} -- the model handling the request
  • phase:{phase} -- the current work phase

Persistence

User-defined tags (added via /tags add) are persisted with the session: once a session has its own tag set (created by any /tags add, /tags remove, or /tags clear), it fully overrides the defaults above and is restored when the session resumes. KIMCHI_TAGS must be set per session; it is the strongest source while present.

Ferment V2

Ferment V2 is an experimental, branch-scoped objective controller. It keeps one objective active across turns, uses the normal Todo tools for tactical work, and does not create Ferment phases, workers, or worktrees. See the Ferment V2 runtime guide for the lifecycle and persistence contract.

Enable Ferment V2 under /resources → Experimental, then restart Kimchi. It is disabled by default.

Command Description
/ferment-v2 <objective> Create an objective, or confirm replacement of an unfinished Ferment V2 run
/ferment-v2 --tokens <n|k|m> <objective> Create an objective with a token budget, such as --tokens 50k
/ferment-v2 Show the current objective, status, revision, and latest completion evaluation
/ferment-v2 edit [objective] Edit in place and redirect work to the new revision
/ferment-v2 pause Stop automatic continuation without aborting a running tool
/ferment-v2 resume Reactivate the current run
/ferment-v2 clear Clear the run from the current session branch

Ferment V2 state is stored in the native session journal, so restart, resume, rewind, and fork follow the selected branch. An old turn cannot update an edited or replaced run because model updates must match both its ID and revision.

At turn_end, Ferment V2 checkpoints the current session's assistant usage and active time. Reaching a token budget stops continuation before evaluation and changes the run to budget_limited. At the later settled checkpoint, an independent tool-free evaluator returns met, impossible, or continue only while the pending-input, tool-availability, identity, and stop-condition gates permit. The fermenting time counter counts active agent turns; cancellation, repeated errors, unchanged continuation, or evaluator unavailability pause the run. Runtime accounting is for the current session; the Terminal-Bench adapter separately aggregates valid usage from all discovered session files, including nested or child files.

Ferment V2 directs the agent to track tactical progress in the normal Todos widget without creating a second feature-specific checklist. update_ferment_v2 complete records an optional runtime completion claim and ends the working turn; it never completes the run by itself. The claim response stays hidden while evaluation runs. In interactive mode, a met verdict still requires a visible, fully completed Todo list for the current revision; headless mode has no visible widget and may proceed directly from evidenced met. Both start one buffered final-answer turn. update_ferment_v2 blocked remains immediate. Regular work tools remain available while the list is created or reconciled.

Evaluation details stay out of the visible transcript. /ferment-v2 shows the evaluation count and latest verdict/reason; the evaluator uses the session model, or the configured judge role when multi-model is enabled, and records each check i

Issues· 0 open

View all issuesOpen on GitHub

No open issues yet, or sync has not completed.

> Tags

TypeScript

No comments yet. Be the first to share.

> Details

PublishedAug 1, 2026
UpdatedSep 17, 2026
Category编程语言
PricingOpen source

> Related tools

T
TypeScript
JavaScript 的超集,为前端与全栈提供静态类型
P
Python
通用编程语言,广泛用于 Web、数据与 AI
G
Go
Google 推出的简洁高效系统语言