The Quo orchestrator (Aurora) runs /home/opsadmin/.openclaw/tools/quo-thread-orchestrator/runner.js under aurora-worker.service. It calls Moonshot’s API directly (NOT through Portkey/gateway). The model is controlled by one env var.
Specialists (acquisitions, dispo, betterfiles) are a SEPARATE routing path — they go through the OpenClaw gateway → Portkey → Anthropic. This skill does NOT cover specialist swaps.
Swap A — change the Kimi model variant (1 minute)
Use this when training ships a new Kimi variant or you want to A/B test.
Edit master.env:
sed -i 's/^AURORA_MODEL=.*/AURORA_MODEL=kimi-k2-turbo/' /home/opsadmin/.openclaw/master.env# If the line doesn't exist, add it:grep -q '^AURORA_MODEL=' /home/opsadmin/.openclaw/master.env || \ echo 'AURORA_MODEL=kimi-k2-turbo' >> /home/opsadmin/.openclaw/master.env
Restart the worker (it re-reads master.env on each tick, but restart guarantees the in-flight processes pick it up):
systemctl --user restart aurora-worker.service
Validate the new model is loading:
journalctl --user -u aurora-worker --since '1 min ago' -o cat | grep '"model":' | head -3
Should show "model":"kimi-k2-turbo" in run_start events.
Known Moonshot/Kimi model IDs
Model ID
Use for
moonshot-v1-128k
default — proven on Aurora’s tool-calling loop
moonshot-v1-32k
smaller context, cheaper
kimi-k2-turbo
faster output, similar quality
kimi-k2.5
newer revision (verify stable on tool-use before flipping)
Add a provider abstraction layer in runner.js that reads AURORA_PROVIDER (=moonshot|anthropic|openai)
For anthropic: use the Portkey route already configured in agents/aurora/agent/models.json at http://127.0.0.1:18900/aurora — convert the request body from OpenAI chat-completions format to anthropic-messages format
Adapt response parsing (OpenAI: choices[0].message; Anthropic: content[] with type=tool_use/type=text)
Adapt tool-calling format (OpenAI: tool_calls[]; Anthropic: content[].input for tool_use blocks)
This is ~200 LOC of careful adapter work — not a config change. The aurora-on-anthropic-saturation-2026-04-21 history (memory: project_aurora_quo_live_phase_a) explains why the team moved to Moonshot in the first place.
If you actually need this, scope it as a separate phase and budget 4-8 hours including testing.
Concurrency context (why this matters)
Provider
Concurrent cap
Moonshot/Kimi (current)
~500-10000 RPM, no hard concurrent cap
Anthropic Max plan 20x
3 concurrent, hard cap, returns 502 max_plan_pool_saturated
Anthropic API tier
RPM/TPM rate-limited, no concurrent cap
Aurora was historically blocked by Anthropic Max plan cap=3. Moonshot removes that ceiling. Don’t switch back to Anthropic Max plan without first either (a) upgrading to API tier, (b) raising the Max plan tier, or (c) adding a serialization queue inside Aurora.
Validation after any swap
Worker active: systemctl --user is-active aurora-worker.service → active
No login/auth errors in logs: journalctl --user -u aurora-worker --since '1 min ago' -o cat | grep -iE 'auth|401|403|api.key' → empty
First run_complete succeeds: send one @-mention in Quo, watch: