Xiaomi MiMo text and streaming pilot
This local source pilot selects Xiaomi MiMo's usage-priced mimo-v2.6-flash
model through https://api.xiaomimimo.com/v1/chat/completions. Its declared
scope is text generation and streaming. Source preparation, public contract
acceptance, installed-package acceptance, current account/API availability and
delivery are separate gates. This draft gives no live, delivered-provider or
provider-target credit.
Exact source facts
All pages below are on the vendor's own documentation host, mimo.mi.com, and
were retrieved on 2026-10-10 (hashes at the end).
- Context and output integers. The model table (
model.md) shows only the rounded labels1Mand128K, so nothing was expanded from it. The integers come from two vendor-authored client configurations that bind them to the exact idmimo-v2.6-flash: the OpenClaw guide ("contextWindow": 1048576,"maxTokens": 131072) and the OpenCode guide ("limit": { "context": 1048576, "output": 131072 }). Both namehttps://api.xiaomimimo.com/v1as the pay-as-you-go base URL. The two pages use different client schemas and agree. The API reference independently gives[1, 131072]as the required range ofmax_completion_tokensand a default of131072formimo-v2.6-flash; that parameter covers visible plus reasoning tokens. No first-party prose or spec table states the context integer; the OpenClaw and OpenCode snippets are the only bindings, and1048576equals1024 * 1024. - Route and auth. The API reference documents
https://api.xiaomimimo.com/v1/chat/completionsand two alternative headers,api-key: $MIMO_API_KEYandAuthorization: Bearer $MIMO_API_KEY. This entry uses the Bearer form. - Lifecycle.
mimo-v2.6-flashis current and is the named replacement for the retiringmimo-v2.5; it is not itself on a retirement schedule. The deprecation page givesmimo-v2.5andmimo-v2.5-proa 10:00 (UTC+8) switch on 2026-10-14 in its table and 18:00 (UTC+8) in a note on the same page. The discrepancy is preserved here; no exact switch instant is certified.
Billing
The API is usage-priced: the pay-as-you-go page says it "consumes the account
balance based on the actual Token usage". The promotions page describes bonus
credit, obtained through Refer & Earn or new-user registration, that "can be
used to offset pay-as-you-go API usage" and is "currently valid for 40 days".
It also says eligibility, credit amounts and payout rules vary by campaign. The
catalog therefore uses promotional-credit, following the
NAVER CLOVA Studio profile (src/lib/providers/catalog/naver-clova-studio.json).
This is not a free tier. Whether a payment method or identity verification is
required to obtain a working key was not established for the real-time API, the
credit amount and eligibility were not checked on an account, and prices are
not recorded (the pay-as-you-go page lists CNY and USD and they were not
converted).
Scope that is deliberately not declared
The capability booleans limit the pilot's declared scope; false is not
evidence that the vendor lacks a feature. Tools, vision, structured output and
SDK thinking controls are not declared because none has been probed. The
deprecation page notes that in thinking mode mimo-v2.6-flash ignores custom
temperature and top_p, so a thinking mode exists; this entry exposes no
control for it. Token Plan keys and base URLs are a separate subscription
product and are out of scope.
Known gaps the local contract cannot close
- Output-budget field name. The vendor's request reference lists only
max_completion_tokens. The SDK's shared chat-completions base sendsmax_tokens, and the suite pins that observed field. Whether the vendor honorsmax_tokens, ignores it (leaving the model's 131072 default) or rejects it is unverified. A catalog entry cannot rename the field; that would need a provider hook or a new catalog quirk, which is an operator decision. - Streaming usage option. A streaming request carries
stream_options: { "include_usage": true }. The vendor's reference documentsstreambut notstream_options. The suite does not observe how the vendor responds to the extra field. - Environment variable. The vendor's own examples name
MIMO_API_KEY. The catalog's derived primary variable isXIAOMI_MIMO_API_KEY, andMIMO_API_KEYis read as a fallback throughwire.apiKeyFallbackEnvVars, the mechanism the Sakana AI entry also uses. Removing the fallback is a one-line change if the maintainers prefer the pure convention. - Ceilings are source-bound only. The shared wire builder fits
max_tokensonly to runtime-discovered ceilings, so the catalog'scontextWindowandmaxOutputTokensnever appear on the wire, and no public CLI command or SDK export was found that reads them back. The owned endpoint cannot observe them; they rest on the cited source bindings alone.
Local public contract
test/continuous-test-suite-xiaomi-mimo-pilot.ts runs 12 cases through the
built public SDK and built CLI, with optional --package-root support for a
later installed consumer:
| Cases | Count | Required observation |
|---|---|---|
| SDK/CLI generate/stream default | 4 | Actual catalog default, route, Bearer header, unique user prompt, max_tokens: 32, stream mode, no tools/tool choice, and fresh answer |
| SDK/CLI generate/stream invalid explicit id | 4 | All wire preconditions pass before HTTP 400 rejection; no fallback or successful reply |
SDK and CLI generate, only MIMO_API_KEY | 2 | The vendor-documented variable alone reaches the wire as the Bearer credential |
| SDK generate, both variables set | 1 | XIAOMI_MIMO_API_KEY wins; the fallback's value never reaches the wire |
| SDK generate, no key | 1 | Refusal before any request, naming XIAOMI_MIMO_API_KEY |
The fixture strips real credentials before imports, uses temporary homes and
sets the provider route to its owned random-port listener. Public
MODEL_CONFIG_URL uses that same listener's HEAD /health and
GET /api/v1/models. A schema-valid empty registry keeps the provider's actual
catalog default in control. Positive metadata initialization requires the exact
ordered request pair; explicit CLI model paths require no metadata request.
CLI commands keep a 60-second deadline. The suite makes no vendor call, creates
no account and reads no secret.
The validated source invocation and public-suite command are:
pnpm exec tsx tools/verify-provider-onboarding.ts --catalog-stage source --provider xiaomi-mimo
pnpm exec tsx test/continuous-test-suite-xiaomi-mimo-pilot.ts
Provenance and remaining gates
The legacy evidence.rosterVerified slot carries the explicit
PUBLIC_DOCS_ONLY_NOT_ROSTER_VERIFIED marker and documentation methods; it has
no HTTP status, auth probe or roster. billingProbe is likewise documentation
only. liveMatrix is null. addedInPR holds the canonical introduction PR URL,
https://github.com/juspay/neurolink/pull/1977; it was PENDING_PR in the
first commit, before the PR existed. A URL alone is
not proof of merge, and source-stage admission gives no provider-count, roster,
live, installed-package or publication credit.
Authenticated roster, account creation, funding, live inference, installed consumer acceptance and delivery are separate and not done here.
Source receipts
Retrieved with a plain GET on 2026-10-10; the SHA-256 is of each response body.
| First-party source | Body SHA256 |
|---|---|
| Model table | 26a7f23c7a12410e10cc75610dc9e6c364a637495161f5d41bc2a21e1075ed84 |
| OpenClaw integration | 4fab15ca323ac46f8c9905d5a82d7cb02023220f17d20ba21c69dce5b540c924 |
| OpenCode integration | d39cb672b9f9da03f3da00e83c964849bfdf3f9d06ca54efbbabd5374aa8c376 |
| OpenAI-compatible API reference | 1be241b9a882b3c70954e8ec04031cb657b06c8e0b0bbb8511e5b6ec63b82ae7 |
| Promotions FAQ | 63e8515066b5ec06a61e71262b4a5f41b945f9bd4e540b76299f3437880223e7 |
| Pay-as-you-go pricing | f62427a339e91edbb252cc6b54cac92050d4254483b1e7eb97a234d6d32f947b |
| Deprecation schedule | f5c856884116df8ebba552550ec5c6912b1d0bd8edad66e2bf1e973da6270068 |