Providers

Xiaomi MiMo

Xiaomi MiMo is the API platform for MiMo models. The bundled xiaomi plugin (enabledByDefault: true, no install step) registers two text providers plus a speech (TTS) provider:

  • xiaomi - pay-as-you-go keys (sk-...)
  • xiaomi-token-plan - Token Plan keys (tp-...) with regional endpoint presets
Property Value
Provider ids xiaomi (pay-as-you-go), xiaomi-token-plan (Token Plan)
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>
API OpenAI-compatible chat completions (openai-completions)
Speech contract speechProviders: ["xiaomi"]
Base URLs Pay-as-you-go: https://api.xiaomimimo.com/v1; Token Plan: token-plan-{cn,sgp,ams}.xiaomimimo.com/v1
Default models xiaomi/mimo-v2-flash, xiaomi-token-plan/mimo-v2.5-pro
TTS default mimo-v2.5-tts, voice mimo_default; voicedesign model mimo-v2.5-tts-voicedesign

Getting started

  • Get the right key

    Create a pay-as-you-go key in the Xiaomi MiMo console, or open your Token Plan subscription page and copy the regional OpenAI-compatible base URL plus the matching tp-... key.

  • Run onboarding

    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"
  • Verify the model is available

    bash
    openclaw models list --provider xiaomiopenclaw 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

    Token Plan catalog

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

    Auth choice Base URL
    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 131,072 Yes Default model
    xiaomi-token-plan/mimo-v2.5 text, image 1,048,576 131,072 Yes Multimodal

    xiaomi-token-plan needs a regional base URL to resolve. The supported path is a bundled Token Plan onboarding choice or an explicit models.providers.xiaomi-token-plan config block with baseUrl set; the provider is not offered without one of those.

    Reasoning models

    mimo-v2-pro, mimo-v2-omni, 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). mimo-v2-flash has no reasoning support.

    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
    json5
    {  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.",        },      },    },  },}

    Built-in voices: mimo_default, default_zh, default_en, Mia, Chloe, Milo, Dean. Preset-voice models (mimo-v2.5-tts, mimo-v2-tts) use audio.voice, so OpenClaw sends speakerVoice for those models.

    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.

    json5
    {  messages: {    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

    json5
    {  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:

    json5
    {  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-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.
    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).
    Was this useful?
    On this page

    On this page