Xiaomi MiMo Provider Integration Guide for OpenClaw

Learn how to use Xiaomi MiMo pay-as-you-go and Token Plan models with OpenClaw. This guide covers provider ids, authentication, and CLI flags for developers.

Read this when

  • You want Xiaomi MiMo models in OpenClaw
  • You need Xiaomi MiMo auth or Token Plan setup

Xiaomi MiMo is the API platform for MiMo models. The included xiaomi plugin (enabledByDefault: true, no installation required) registers two text providers and one speech (TTS) provider:

  • xiaomi - pay-as-you-go keys (sk-...)
  • xiaomi-token-plan - Token Plan keys (tp-...) with regional endpoint presets
PropertyValue
Provider idsxiaomi (pay-as-you-go), xiaomi-token-plan (Token Plan)
Auth env varsXIAOMI_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>
APIOpenAI-compatible chat completions (openai-completions)
Speech contractspeechProviders: ["xiaomi"]
Base URLsPay-as-you-go: https://api.xiaomimimo.com/v1; Token Plan: token-plan-{cn,sgp,ams}.xiaomimimo.com/v1
Default modelsxiaomi/mimo-v2.5, xiaomi-token-plan/mimo-v2.5-pro
TTS defaultmimo-v2.5-tts, voice mimo_default; voicedesign model mimo-v2.5-tts-voicedesign

Getting started

Get the right key

Generate a pay-as-you-go key from the Xiaomi MiMo console, or go to your Token Plan subscription page and copy the regional OpenAI-compatible base URL along with the corresponding tp-... key.

Run onboarding

Pay-as-you-go:

openclaw onboard --auth-choice xiaomi-api-key

Token Plan:

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

Alternatively, pass the keys directly:

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"

Verify the model is available

openclaw models list --provider xiaomi
openclaw models list --provider xiaomi-token-plan

Tip

Onboarding checks the key format and alerts you when a tp-... key is entered in the pay-as-you-go flow, or a sk-... key is entered in the Token Plan flow.

Pay-as-you-go catalog

Model refInputContextMax outputReasoningNotes
xiaomi/mimo-v2.5text, image1,048,576131,072YesDefault model
xiaomi/mimo-v2.5-protext1,048,576131,072YesFlagship

Token Plan catalog

Pick the Token Plan auth choice that corresponds to the regional base URL shown in Xiaomi's subscription UI:

Auth choiceBase URL
xiaomi-token-plan-cnhttps://token-plan-cn.xiaomimimo.com/v1
xiaomi-token-plan-sgphttps://token-plan-sgp.xiaomimimo.com/v1
xiaomi-token-plan-amshttps://token-plan-ams.xiaomimimo.com/v1
Model refInputContextMax outputReasoningNotes
xiaomi-token-plan/mimo-v2.5-protext1,048,576131,072YesDefault model
xiaomi-token-plan/mimo-v2.5text, image1,048,576131,072YesMultimodal

xiaomi-token-plan requires a regional base URL to function. The supported approach is a bundled Token Plan onboarding choice or an explicit models.providers.xiaomi-token-plan config block with baseUrl set. The provider is not available without one of these.

Reasoning models

mimo-v2.5 and mimo-v2.5-pro support OpenClaw's /think directive with levels off, minimal, low, medium, high, xhigh, and max (default high).

Text-to-speech

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

PropertyValue
TTS idxiaomi (mimo alias)
AuthXIAOMI_API_KEY
APIPOST /v1/chat/completions with audio
Defaultmimo-v2.5-tts, voice mimo_default
OutputMP3 by default; WAV when configured
{
  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.",
      },
    },
  },
}

Built-in voices: mimo_default, default_zh, default_en, Mia, Chloe, Milo, Dean. The preset-voice model mimo-v2.5-tts uses audio.voice, so OpenClaw sends speakerVoice for that model.

The voicedesign model mimo-v2.5-tts-voicedesign generates the voice from a natural-language style prompt instead of a preset voice id. Set style to the desired voice description. OpenClaw sends it as the user message, sends the spoken text as the assistant message, and omits audio.voice for this model.

{
  tts: {
    provider: "xiaomi",
    providers: {
      xiaomi: {
        model: "mimo-v2.5-tts-voicedesign",
        format: "wav",
        style: "Warm, natural female voice with clear pronunciation.",
      },
    },
  },
}

For channels that request a voice-note synthesis target (Discord, Feishu, Matrix, Telegram, and WhatsApp), OpenClaw transcodes Xiaomi output to 48kHz mono Opus with ffmpeg before delivery.

Config example

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

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: 131072,
          },
          {
            id: "mimo-v2.5",
            name: "Xiaomi MiMo V2.5",
            reasoning: true,
            input: ["text", "image"],
            contextWindow: 1048576,
            maxTokens: 131072,
          },
        ],
      },
    },
  },
}

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

Auto-injection behavior

The xiaomi provider is auto-enabled 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.

Model details

  • mimo-v2.5 - pay-as-you-go default and Token Plan multimodal V2.5 route.
  • mimo-v2.5-pro - flagship reasoning model and Token Plan default.

Note

Pay-as-you-go models use the xiaomi/ prefix. Token Plan models use the xiaomi-token-plan/ prefix.

Troubleshooting

  • 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.