Xiaomi MiMo Behavior
This page covers the toggles and notes for Xiaomi MiMo (aistudio.xiaomimimo.com).
MiMo is a fairly simple chat UI once it loads, but the loading part is, frankly, weird, as it's heavily geoblocked in some regions. If the browser can't reach MiMo at all, the provider may fail with ERR_CONNECTION_REFUSED before the normal sign-in flow even has a chance to appear.
Geoblocking
If MiMo is unavailable from your location, use a system-wide VPN or MiMo's provider-specific proxy setting. A browser proxy is usually enough because IntenseRP passes it to Playwright/Patchright when launching the MiMo browser context. Extension-based VPNs like Browsec DON'T work.
Modes (model IDs)
In IntenseRP, the model you send through the OpenAI-compatible API is usually a behavior preset. MiMo always produces thinking-style text internally, so these modes mainly decide whether IntenseRP forwards or filters that text.
| Model ID | Behavior |
|---|---|
mimo-auto |
Uses your MiMo Behavior settings |
mimo-chat |
Filters MiMo <think>...</think> text from the API response |
mimo-reasoner |
Forwards MiMo <think>...</think> text to the API client |
When Use Universal Model Names is enabled, intenserp-auto, intenserp-chat, and intenserp-reasoner work the same way for MiMo when it's the active provider.
Real MiMo model selection (web UI)
IntenseRP can switch MiMo's real model picker in the web UI:
Settings -> Provider Behavior -> Xiaomi MiMo -> Model
Supported options right now:
- MiMo-V2.5-Pro (default)
- MiMo-V2.5
If Use Universal Model Names is enabled, these real model picker entries also appear as request-level model IDs:
| Real model | Example IDs |
|---|---|
| MiMo-V2.5-Pro | mimo-v2-5-pro-auto, mimo-v2-5-pro-chat, mimo-v2-5-pro-reasoner |
| MiMo-V2.5 | mimo-v2-5-auto, mimo-v2-5-chat, mimo-v2-5-reasoner |
Those IDs switch the MiMo web UI model for that request, then apply the auto / chat / reasoner behavior on top.
Thinking
MiMo does not expose a Thinking toggle in the web UI. The provider stream can include <think>...</think> text, and IntenseRP can either forward it or strip it before sending the response to your API client.
Send Thinking
Settings -> Provider Behavior -> Xiaomi MiMo -> Send Thinking
When enabled, IntenseRP forwards the streamed <think> text. When disabled, IntenseRP filters it out and only sends the answer text.
Mode IDs can override this
mimo-chat forces thinking output off for that request. mimo-reasoner forces it on. mimo-auto follows the setting above.
Count Tokens
MiMo's response stream can include token usage metadata. When Count Tokens is enabled, IntenseRP forwards that as OpenAI-style usage fields (prompt_tokens, completion_tokens, total_tokens) when the stream provides it.
Settings -> Provider Behavior -> Xiaomi MiMo -> Count Tokens
This is enabled by default.
Search
MiMo does not currently expose a Search toggle in the web UI, so IntenseRP does not provide one either.
If a client sends search-style macros, they will not make MiMo browse the web. Tiny mercy: at least there is no extra search button to chase around the page.
Proxy
MiMo can be unavailable from some regions even when the rest of IntenseRP works normally. If that happens, the browser may show or log ERR_CONNECTION_REFUSED.
You can route only MiMo's provider browser through a proxy:
Settings -> Provider Behavior -> Xiaomi MiMo -> Proxy -> Use Proxy
Proxy URL
Settings -> Provider Behavior -> Xiaomi MiMo -> Proxy -> Proxy URL
Supported URL schemes:
http://127.0.0.1:8080
https://proxy.example:8443
socks4://127.0.0.1:1080
socks5://user:pass@127.0.0.1:1080
The scheme is the proxy type. If your proxy needs credentials, put them in the URL as user:pass@host.
Restart required
Proxy settings apply when the MiMo browser context is created. After changing them, stop and start the provider browser.
Global browser proxy
The global Browser Proxy URL under Browser & Runtime -> Browser Environment still exists. MiMo's provider-specific proxy overrides it only when Use Proxy is enabled for MiMo.
Popups and consent
MiMo can show a few blocking popups before the chat is usable. IntenseRP handles these automatically where possible:
- announcement popup close button
- cookie consent popup
- policy agreement checkbox + confirm button
Decline Cookies Automatically
Settings -> Provider Behavior -> Xiaomi MiMo -> Decline Cookies Automatically
When enabled, IntenseRP clicks MiMo's Decline All cookie button if it appears. This is enabled by default.
File Upload Mode
Instead of typing the whole prompt into MiMo's textarea, IntenseRP can upload the prompt as a .txt file. This is useful for longer prompts.
Settings -> Provider Behavior -> Xiaomi MiMo -> Send As Text File
Text File Message
MiMo requires text alongside an uploaded file. If the textarea is empty, the send button stays disabled.
Settings -> Provider Behavior -> Xiaomi MiMo -> Text File Message
Default:
File Upload Timeout
How long IntenseRP waits for MiMo to finish parsing the uploaded text file.
Settings -> Provider Behavior -> Xiaomi MiMo -> File Upload Timeout
| Default | 30 seconds |
Message Send Timeout
How long IntenseRP waits for MiMo's send button to become available after entering text.
Settings -> Provider Behavior -> Xiaomi MiMo -> Message Send Timeout (s)
| Default | 8 seconds |
Reuse Matching Chat
Reuse Matching Chat regenerates the last matching MiMo chat instead of creating a new chat when the prompt and relevant settings match.
Settings -> Provider Behavior -> Xiaomi MiMo -> Reuse Matching Chat
MiMo also supports Search Older Matching Chats:
Settings -> Provider Behavior -> Xiaomi MiMo -> Search Older Matching Chats
That keeps up to 7 older cached MiMo chats per account/profile so duplicate prompts can reuse more than just the latest chat.
See also: Search Older Matching Chats
MiMo quirks and timing
MiMo streams through an EventStream request. IntenseRP waits for that request to appear, then tees the response through Chrome DevTools Protocol and converts it into OpenAI-style SSE chunks.
Completion Request Timeout
How long IntenseRP waits after clicking Send or Regenerate for MiMo's chat request to appear.
Settings -> Provider Behavior -> Xiaomi MiMo -> Quirks -> Completion Request Timeout (s)
| Default | 150 seconds |
| Minimum | 5 seconds |
First Chunk Timeout
How long IntenseRP waits for MiMo's response stream to produce its first chunk after the request starts.
Settings -> Provider Behavior -> Xiaomi MiMo -> Quirks -> First Chunk Timeout (s)
| Default | 150 seconds |
| Minimum | 5 seconds |
Provider-side filtering
MiMo can stop some requests with a provider-side sensitive_query event. When that happens, IntenseRP returns a clear error instead of forwarding MiMo's canned blocked-response text.
There is no MiMo anti-censorship recovery flow yet, sadly.
The sensitive-query event, unlike the DeepSeek refusal event, appears to happen mid-stream and there's no way to recover the missing content.
In my testing, politics (especially related to the "usual Chinese tells") are heavily banned. Sexual content and stuff like that can be more or less easily bypassed with good prompting, though you will need to put effort. It's not as easy to work with as, say, DeepSeek or GLM.
Login notes
MiMo uses a Xiaomi account login page. Auto Login can fill the account and password fields, accept Xiaomi's login agreement checkbox, submit the form, and then wait for the redirect back to MiMo.
If the flow stalls or starts requiring 2FA, CAPTCHAs, etc., you'll be asked to finish the login manually in the browser. Persistent Sessions are heavily recommended so you do not need to repeat that dance every time.
See: Login & Sessions
UI language requirement
The MiMo driver expects the web UI to be English (en-*). If the page language is not English, IntenseRP may not be able to find the right controls reliably (just like with all other providers) as it relies on the text of some buttons, labels, divs, etc.
If you see a MiMo UI language warning:
- Change MiMo/Xiaomi account language to English
Try againin IRP- Restart the provider browser if needed
Per-message macros
You can add simple [[...]] macros to the latest user message to override a few MiMo settings for that request only. IntenseRP strips the macros before sending the message to MiMo.
| Macro | Effect |
|---|---|
[[think]], [[r1]] |
Force thinking output on |
[[nothink]], [[no_think]], [[r0]] |
Force thinking output off |
[[file]], [[sendfile]] |
Force Send As Text File on |
[[nofile]], [[no_file]] |
Force Send As Text File off |
Scope
Only macros from the latest user message apply. They do not persist across requests.
Quick Reference
| Setting | What It Does | Default |
|---|---|---|
| Model | Selects MiMo's real model picker | MiMo-V2.5-Pro |
| Send Thinking | Forwards <think> text to the API client |
Off |
| Count Tokens | Returns token usage when MiMo provides it | On |
| Send As Text File | Uploads the prompt as .txt |
Off |
| Text File Message | Text pasted alongside uploaded file | Please read the attached file and respond to it. |
| File Upload Timeout | Seconds to wait after upload | 30 |
| Message Send Timeout (s) | Seconds to wait for send button | 8 |
| Decline Cookies Automatically | Clicks MiMo's Decline All cookie button | On |
| Use Proxy | Routes only MiMo's browser through a proxy | Off |
| Proxy URL | HTTP/HTTPS/SOCKS proxy URL for MiMo | (empty) |
| Reuse Matching Chat | Regenerates on duplicate prompts | Off |
| Search Older Matching Chats | Reuses up to 7 older matching MiMo chats | Off |
| Completion Request Timeout (s) | Seconds to wait for MiMo's backend request | 150 |
| First Chunk Timeout (s) | Seconds to wait for MiMo's stream to start | 150 |