Miffan Feature Compatibility Matrix

September 24, 2026 · View on GitHub

Last reviewed: August 24, 2026

This matrix describes capabilities implemented by the Miffan client. A check mark means the client has an integration; the selected provider, endpoint, account, and model must also support the feature. Compatible gateways sometimes expose only a subset of the underlying protocol.

Legend: ✓ built in · Conditional depends on provider/model · — not applicable

Model protocols

IntegrationAuthenticationStreamingReasoningTool callsMultimodal inputModel discovery
OpenAI Chat Completions-compatibleAPI key or custom headers✓ConditionalConditionalConditionalConditional
OpenAI Responses-compatibleAPI key or custom headers✓ConditionalConditionalConditionalConditional
OpenAI CodexEligible ChatGPT subscription sign-in✓ConditionalConditionalConditionalAccount-provided models
Google Gemini APIAPI key✓ConditionalConditionalConditional✓
Google Vertex AIService-account configuration✓ConditionalConditionalConditionalConfigured models
Anthropic Claude-compatibleAPI key or custom headers✓ConditionalConditionalConditionalConditional

Across these integrations, Miffan supports custom base URLs, request paths, headers and body fields, HTTP/SOCKS5 proxies, connection tests, per-model capability settings, context limits, and optional balance queries where an endpoint provides them.

Content and conversation

CapabilitySupportNotes
Text chat and streaming✓Editing, regeneration, branches, folders, favorites, and full-text search
Reasoning display and tool resultsConditionalRequires a compatible model/endpoint
Images, audio, video, and file inputsConditionalDepends on model modality and provider protocol
Document text extraction✓PDF, DOCX, PPTX, and EPUB are parsed locally when used as prompts
Rich response rendering✓Markdown, HTML, code highlighting, LaTeX, tables, Mermaid, images, and diffs
Image generationConditionalRequires a configured model/endpoint with image output
Conversation export✓Markdown and image export
Android share and selected-text translation✓Share content into an assistant or translate selected text in a floating window

Search and page retrieval

CategoryBuilt-in integrations
Search providersBing, RikkaHub, Zhipu, Doubao, Tavily, Exa, SearXNG, LinkUp, Brave, Metaso, Ollama, Perplexity, Firecrawl, Jina, Bocha, Grok, Tinyfish, Serper
Custom searchJavaScript adapter
Model-native searchConditional; currently exposed for compatible Gemini models
Page retrievalProvider-specific scraping where available, plus configurable content services

Search results and queries are sent to the selected search endpoint. Keys, quotas, geographic availability, and scraping behavior differ by service.

Speech and audio

CapabilityBuilt-in integrations
Speech recognitionOpenAI Realtime, DashScope, Volcengine, MiMo, Step
Text-to-speechAndroid system, OpenAI, OpenRouter, Gemini, MiniMax, Qwen, Groq, xAI, MiMo, ElevenLabs, Step, Fish Audio
Assistant audio playback✓

Assistants, tools, and extensions

CapabilitySupportNotes
Isolated assistant configuration✓Model, prompt, memory, parameters, history, tools, visual identity, and injections
MCP✓SSE and Streamable HTTP, custom request headers, OAuth, and per-assistant server selection
Skills✓Workspace-owned Skills under /workspace/.miffan/skills are discovered automatically; legacy global bindings migrate one-way on use
Built-in local tools✓Time, clipboard, JavaScript, TTS, user questions, screen time, calendar, and extension management
Local Linux workspace✓Per-workspace files, editor, terminal, and AI file/shell tools; PRoot is not a security container
Remote SSH workspaces✓Multiple hosts/project roots, SFTP files, persistent interactive terminals, assistant file/shell tools, and target-specific execution approvals; requires an existing network connection
SSH key management✓Generate/import keys, copy public keys, view/export private keys, and optional passphrase-encrypted backups
Web access to conversations✓Optional embedded server, localhost/LAN modes, password authentication, and mDNS

For an MCP service that requires a static bearer key, add its URL under Settings → MCP and enter Authorization as the custom header name and Bearer <remote-tool-key> as its value. Replace <remote-tool-key> with the key issued by that MCP service; it is separate from a model API key. The Android header field sends the entered value literally and does not expand ${VAR} placeholders. An explicit Authorization header is used as entered, so Miffan does not add a second OAuth bearer token. For services that use OAuth instead, follow their OAuth sign-in flow.

Enable the server and bind it to an assistant as described in the extension help. Check which tools were discovered, whether each tool is enabled, and any approval prompt before a call. Tool discovery and client approval do not establish server-side permission or waive service charges. Settings and backups may contain credentials; see PRIVACY.md and do not share real keys, private conversations, or unsanitized logs when asking for help.

Storage and portability

CapabilitySupport
Local conversations, settings, and files✓
Selective local backup and restore✓
WebDAV backup✓
S3-compatible backup✓
Chatbox importProviders and conversations
Cherry Studio importProviders
RikkaHub migrationCompatible backup import; the two apps remain isolated and can coexist

For data-flow details and security boundaries, see PRIVACY.md and SECURITY.md.