Files
openclaw/docs/providers/xiaomi.md
NianJiu da5d1a6215 feat(xiaomi): add Token Plan provider support
Adds first-class Xiaomi Token Plan provider support with regional onboarding/configuration, token-plan key prefix validation, runtime pricing/catalog metadata, and docs/test coverage.

Keeps Token Plan model catalog discovery runtime-owned so region-specific base URLs are required and the provider cannot silently fall back to the static SGP manifest catalog.

Fixes #86169.

Verification:
- node scripts/run-vitest.mjs src/plugins/provider-discovery.runtime.test.ts extensions/xiaomi/index.test.ts src/plugins/manifest-model-catalog.test.ts src/model-catalog/manifest-planner.test.ts
- git diff --check
- autoreview --mode local: clean, no accepted/actionable findings
- CI run 26678998539: all relevant checks passed; check-prod-types failed on unrelated browser unused-function issue already present on origin/main

Co-authored-by: NianJiuZst <3235467914@qq.com>
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-05-30 11:37:36 +02:00

11 KiB

summary, read_when, title
summary read_when title
Use Xiaomi MiMo pay-as-you-go and Token Plan models with OpenClaw
You want Xiaomi MiMo models in OpenClaw
You need Xiaomi MiMo auth or Token Plan setup
Xiaomi MiMo

Xiaomi MiMo is the API platform for MiMo models. OpenClaw includes a bundled Xiaomi plugin with two text-provider presets:

  • xiaomi for pay-as-you-go keys (sk-...)
  • xiaomi-token-plan for Token Plan keys (tp-...) with regional endpoint presets

The same plugin also registers the xiaomi speech (TTS) provider.

Property Value
Provider ids xiaomi (pay-as-you-go), xiaomi-token-plan (Token Plan)
Plugin bundled, enabledByDefault: true
Auth env vars XIAOMI_API_KEY, XIAOMI_TOKEN_PLAN_API_KEY
Onboarding flags --auth-choice xiaomi-api-key, --auth-choice xiaomi-token-plan-cn, --auth-choice xiaomi-token-plan-sgp, --auth-choice xiaomi-token-plan-ams
Direct CLI flags --xiaomi-api-key <key>, --xiaomi-token-plan-api-key <key>
Contracts chat completions + speechProviders
API OpenAI-compatible (openai-completions)
Base URLs Pay-as-you-go: https://api.xiaomimimo.com/v1; Token Plan presets: token-plan-{cn,sgp,ams}...
Default models xiaomi/mimo-v2-flash, xiaomi-token-plan/mimo-v2.5-pro
TTS default mimo-v2.5-tts, voice mimo_default

Getting started

Create a pay-as-you-go key in the [Xiaomi MiMo console](https://platform.xiaomimimo.com/#/console/api-keys), or open your Token Plan subscription page and copy the regional OpenAI-compatible base URL plus the matching `tp-...` key. Pay-as-you-go:
```bash
openclaw onboard --auth-choice xiaomi-api-key
```

Token Plan:

```bash
openclaw onboard --auth-choice xiaomi-token-plan-sgp
```

Or pass the keys directly:

```bash
openclaw onboard --auth-choice xiaomi-api-key --xiaomi-api-key "$XIAOMI_API_KEY"
openclaw onboard --auth-choice xiaomi-token-plan-sgp --xiaomi-token-plan-api-key "$XIAOMI_TOKEN_PLAN_API_KEY"
```
```bash openclaw models list --provider xiaomi openclaw models list --provider xiaomi-token-plan ```

Pay-as-you-go catalog

Model ref Input Context Max output Reasoning Notes
xiaomi/mimo-v2-flash text 262,144 8,192 No Default model
xiaomi/mimo-v2-pro text 1,048,576 32,000 Yes Large context
xiaomi/mimo-v2-omni text, image 262,144 32,000 Yes Multimodal
The default model ref is `xiaomi/mimo-v2-flash`. The provider is injected automatically when `XIAOMI_API_KEY` is set or an auth profile exists.

Token Plan catalog

Choose the Token Plan auth choice that matches the regional base URL shown in Xiaomi's subscription UI:

  • xiaomi-token-plan-cn -> https://token-plan-cn.xiaomimimo.com/v1
  • xiaomi-token-plan-sgp -> https://token-plan-sgp.xiaomimimo.com/v1
  • xiaomi-token-plan-ams -> https://token-plan-ams.xiaomimimo.com/v1
Model ref Input Context Max output Reasoning Notes
xiaomi-token-plan/mimo-v2.5-pro text 1,048,576 32,000 Yes Default model
xiaomi-token-plan/mimo-v2.5 text, image 1,048,576 32,000 Yes Multimodal
Token Plan onboarding validates the key shape and warns when a `tp-...` key is entered into the pay-as-you-go path, or an `sk-...` key is entered into the Token Plan path.

Text-to-speech

The bundled xiaomi plugin also registers Xiaomi MiMo as a speech provider for messages.tts. It calls Xiaomi's chat-completions TTS contract with the text as an assistant message and optional style guidance as a user message.

Property Value
TTS id xiaomi (mimo alias)
Auth XIAOMI_API_KEY
API POST /v1/chat/completions with audio
Default mimo-v2.5-tts, voice mimo_default
Output MP3 by default; WAV when configured
{
  messages: {
    tts: {
      auto: "always",
      provider: "xiaomi",
      providers: {
        xiaomi: {
          apiKey: "xiaomi_api_key",
          model: "mimo-v2.5-tts",
          speakerVoice: "mimo_default",
          format: "mp3",
          style: "Bright, natural, conversational tone.",
        },
      },
    },
  },
}

Supported built-in voices include mimo_default, default_zh, default_en, Mia, Chloe, Milo, and Dean. mimo-v2-tts is supported for older MiMo TTS accounts; the default uses the current MiMo-V2.5 TTS model. For voice-note targets such as Feishu and Telegram, OpenClaw transcodes Xiaomi output to 48kHz Opus with ffmpeg before delivery.

Config example

{
  env: { XIAOMI_API_KEY: "your-key" },
  agents: { defaults: { model: { primary: "xiaomi/mimo-v2-flash" } } },
  models: {
    mode: "merge",
    providers: {
      xiaomi: {
        baseUrl: "https://api.xiaomimimo.com/v1",
        api: "openai-completions",
        apiKey: "XIAOMI_API_KEY",
        models: [
          {
            id: "mimo-v2-flash",
            name: "Xiaomi MiMo V2 Flash",
            reasoning: false,
            input: ["text"],
            contextWindow: 262144,
            maxTokens: 8192,
          },
          {
            id: "mimo-v2-pro",
            name: "Xiaomi MiMo V2 Pro",
            reasoning: true,
            input: ["text"],
            contextWindow: 1048576,
            maxTokens: 32000,
          },
          {
            id: "mimo-v2-omni",
            name: "Xiaomi MiMo V2 Omni",
            reasoning: true,
            input: ["text", "image"],
            contextWindow: 262144,
            maxTokens: 32000,
          },
        ],
      },
    },
  },
}

Pricing and compat flags come from the bundled plugin manifest, so the config example omits cost and compat to avoid diverging from runtime behavior.

Token Plan:

{
  env: { XIAOMI_TOKEN_PLAN_API_KEY: "tp-your-key" },
  agents: { defaults: { model: { primary: "xiaomi-token-plan/mimo-v2.5-pro" } } },
  models: {
    mode: "merge",
    providers: {
      "xiaomi-token-plan": {
        baseUrl: "https://token-plan-sgp.xiaomimimo.com/v1",
        api: "openai-completions",
        apiKey: "XIAOMI_TOKEN_PLAN_API_KEY",
        models: [
          {
            id: "mimo-v2.5-pro",
            name: "Xiaomi MiMo V2.5 Pro",
            reasoning: true,
            input: ["text"],
            contextWindow: 1048576,
            maxTokens: 32000,
          },
          {
            id: "mimo-v2.5",
            name: "Xiaomi MiMo V2.5",
            reasoning: true,
            input: ["text", "image"],
            contextWindow: 1048576,
            maxTokens: 32000,
          },
        ],
      },
    },
  },
}

Pricing comes from the bundled manifest (Token Plan models include tiered cache-read pricing), so the config example omits cost.

The `xiaomi` provider is injected automatically when `XIAOMI_API_KEY` is set in your environment or an auth profile exists. `xiaomi-token-plan` needs a regional base URL, so the supported path is the bundled Token Plan onboarding choice or an explicit `models.providers.xiaomi-token-plan` config block. - **mimo-v2-flash** — lightweight and fast, ideal for general-purpose text tasks. No reasoning support. - **mimo-v2-pro** — supports reasoning with a 1M token context window for long-document workloads. - **mimo-v2-omni** — reasoning-enabled multimodal model that accepts both text and image inputs. - **mimo-v2.5-pro** — Token Plan default with Xiaomi's current V2.5 reasoning stack. - **mimo-v2.5** — Token Plan multimodal V2.5 route.
<Note>
Pay-as-you-go models use the `xiaomi/` prefix. Token Plan models use the `xiaomi-token-plan/` prefix.
</Note>
- If models do not appear, confirm the relevant key env var or auth profile is present and valid. - For Token Plan, confirm the chosen onboarding region matches the subscription page base URL and that the key starts with `tp-`. - When the Gateway runs as a daemon, ensure the key is available to that process (for example in `~/.openclaw/.env` or via `env.shellEnv`).
<Warning>
Keys set only in your interactive shell are not visible to daemon-managed gateway processes. Use `~/.openclaw/.env` or `env.shellEnv` config for persistent availability.
</Warning>
Choosing providers, model refs, and failover behavior. Full OpenClaw configuration reference. Xiaomi MiMo dashboard and API key management.