Xiaomi MiMo Provider Setup and API Integration

This page explains how to use Xiaomi MiMo models through OpenClaw, covering both usage-based and Token Plan providers, including setup, authentication, and regional endpoints.

Read this when

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

Xiaomi MiMo serves as the API gateway for MiMo models. Through the official external xiaomi plugin, two text providers and one speech (TTS) provider are exposed:

  • xiaomi: usage-based billing keys (sk-...)
  • xiaomi-token-plan: Token Plan keys (tp-...) that come with predefined regional endpoints
PropertyValue
Provider idsxiaomi (usage-based), 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>
APIChat completions compatible with OpenAI (openai-completions)
Speech contractspeechProviders: ["xiaomi"]
Base URLsUsage-based: 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

Install the plugin

openclaw plugins install @openclaw/xiaomi-provider
openclaw gateway restart

Get the right key

To get a usage-based key, head to the Xiaomi MiMo console and create one. For Token Plan access, go to your subscription page, copy the OpenAI-compatible base URL for your region, and grab the associated tp-... key.

Run onboarding

Usage-based billing:

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

Token Plan:

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

Keys can also be supplied 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

During onboarding, key format is checked. You will be alerted if a tp-... key ends up in the usage-based flow, or an sk-... key is placed 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 option that lines up with the regional base URL displayed in Xiaomi's subscription interface:

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

Resolving xiaomi-token-plan depends on having a regional base URL. Either a Token Plan onboarding choice or an explicit models.providers.xiaomi-token-plan config block with baseUrl set will satisfy this; without one of those, the provider is simply not available.

Reasoning models

mimo-v2.5 and mimo-v2.5-pro are both supported.

OpenClaw's /think directive accepts the levels off, minimal, low, medium, high, xhigh, and max, with high as the default.

Text-to-speech

Through the xiaomi plugin, Xiaomi MiMo is also registered as a speech provider for tts. The plugin invokes Xiaomi's chat-completions TTS endpoint, passing the text as an assistant message and, when provided, 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.",
      },
    },
  },
}

The built-in voice options are mimo_default, default_zh, default_en, Mia, Chloe, Milo, and Dean. For the preset-voice model mimo-v2.5-tts, the voice audio.voice is used, which means OpenClaw sends speakerVoice when that model is active.

With the voicedesign model mimo-v2.5-tts-voicedesign, the voice is derived from a natural-language style prompt rather than a preset voice id. Assign style to the desired voice description; OpenClaw then transmits it as the user message, the spoken text as the assistant message, and audio.voice is not sent for this model.

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

When a channel requests a voice-note synthesis target (Discord, Feishu, Matrix, Telegram, and WhatsApp), OpenClaw converts Xiaomi output to 48kHz mono Opus using ffmpeg before it is delivered.

Config example

{
  env: { vars: { 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,
          },
        ],
      },
    },
  },
}

Since pricing and compatibility flags are sourced from the plugin manifest, the config example leaves out cost and compat to stay consistent with runtime behavior.

Token Plan:

{
  env: { vars: { 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,
          },
        ],
      },
    },
  },
}

Token Plan billing draws from a fixed subscription's Credits instead of per-token USD pricing, so its catalog rows carry zero USD cost and the config example omits cost.

Auto-injection behavior

The xiaomi provider activates automatically when XIAOMI_API_KEY is present in your environment or an auth profile exists. xiaomi-token-plan requires a regional base URL, so the supported route is the Token Plan onboarding choice or an explicit models.providers.xiaomi-token-plan config block.

Model details

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

Note

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

Troubleshooting

  • If models are missing, verify that the relevant key env var or auth profile is present and valid.
  • For Token Plan, check that the chosen onboarding region matches the subscription page base URL and that the key begins with tp-.
  • When the Gateway runs as a daemon, make sure the key is accessible to that process (for instance in ~/.openclaw/.env or through env.shellEnv).

Warning

Environment variables defined exclusively within your interactive shell won't be seen by gateway processes managed by the daemon. To ensure they persist, set them through ~/.openclaw/.env or env.shellEnv configuration.

1,224 words · updated Aug 12, 2026