Plexum ProviderPlugin that serves Moonshot Kimi K2.6 ("Kimi for
Coding") via Kimi's Anthropic-compatible coding endpoint at
https://api.kimi.com/coding/v1/messages. Port of openclaw's
extensions/kimi-coding/provider-catalog.ts to Go + Plexum SDK.
Repo structure parallels Plexum-minimax-provider:
- internal/anthropic/ HTTP+SSE Anthropic Messages client, with new
UserAgent field (Kimi expects "claude-code/
0.1.0" — openclaw plugin parity)
- internal/translate/ canonical ↔ Anthropic translator (re-used
shape from MiniMax — no Kimi-specific quirks
needed for v1 plain-text path)
- cmd/plexum-kimi-provider-plugin/ ProviderPlugin entry
Declared models (Kimi server accepts all three; plugin normalizes
legacy aliases to the canonical id on the wire):
kimi-for-coding (current, default)
kimi-code (legacy alias)
k2p5 (legacy alias)
HostConfig: api_key (required), base_url (override), user_agent
(default "claude-code/0.1.0"), max_tokens_default (default 8192).
End-to-end verified against the live `sk-kimi-` subscription key:
1. CLI embedded turn 1: "Hi there! I'm Kimi."
2. CLI embedded turn 2: "I said hi, I'm Kimi." (multi-turn context OK)
3. Via gateway socket: {"outcome":"text","text":"...pong"}
4. Via Fabric channel: alice → bt2-clean → kimi agent → Kimi K2.6 →
outbound REST → reply in channel seq=15:
"Concise concurrency: goroutines and channels
make parallel code readable, safe, and
efficient without the usual threading
complexity."
Test the bidirectional channel pipeline works with a fresh provider:
Fabric (channel plugin) + Kimi (provider plugin) wired through Plexum
agentloop, MiniMax-style plugin packaging.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Plexum-kimi-provider
Plexum ProviderPlugin that serves Moonshot Kimi K2.6 ("Kimi for Coding")
via Kimi's Anthropic-compatible coding endpoint
(https://api.kimi.com/coding/v1/messages).
Port of openclaw/extensions/kimi-coding/provider-catalog.ts to Go +
Plexum SDK.
Status
v0.1 — current: API key auth (Kimi subscription sk-kimi-...),
streaming SSE, models kimi-for-coding / kimi-code / k2p5. Sends
User-Agent: claude-code/0.1.0 (mirrors openclaw plugin) for parity
with Kimi's coding subscription auth path.
Install
cd ~/Plexum-kimi-provider
./scripts/install.sh
Then:
-
Write API key to
~/.plexum/plugins/plexum-kimi-provider/config.json:{"api_key": "sk-kimi-..."}(
chmod 600it.) -
Allow the plugin in
~/.plexum/plexum.json:{"plugins": {"allow": ["plexum-kimi-provider"]}} -
Point an agent at Kimi:
plexum agent-add --model kimi-for-coding my-agent -
Restart and talk:
systemctl --user restart plexum plexum say --agent-id my-agent --session-id $(plexum new-session --agent-id my-agent) "hello"
Config options
| Field | Default | Notes |
|---|---|---|
api_key |
(required) | sk-kimi-... subscription key |
base_url |
https://api.kimi.com/coding |
override only if you proxy |
user_agent |
claude-code/0.1.0 |
matches openclaw plugin |
max_tokens_default |
8192 |
used when TurnRequest.MaxTokens unset |
Model id aliases
Kimi server accepts all three; the plugin normalizes to
kimi-for-coding on the wire for consistent logs:
| advertised id | wire id |
|---|---|
kimi-for-coding |
kimi-for-coding |
kimi-code (legacy) |
kimi-for-coding |
k2p5 (legacy) |
kimi-for-coding |
Architecture
Same shape as Plexum-minimax-provider:
internal/anthropic/— HTTP+SSE Messages client (now withUserAgentfield; can be shared by future Anthropic-compat providers)internal/translate/— canonical ↔ Anthropic translatorcmd/plexum-kimi-provider-plugin/— ProviderPlugin entry
License
Same as Plexum.