Back to Extension Docs

Features

Complete catalog of what MR Multi Model AI Coder does today. Every feature listed here is wired up and tested.

Providers & Routing

9 AI backends behind a unified interface. Full model tables and setup guides in the Providers documentation.

ProviderAuthTransportFree?
ClaudeAPI keyAgent SDKPaid
MR CoderOAuth connectAgent SDKWith subscription
Kilo CodeCLI OAuthSubprocess9 free models
QwenAPI key or CLISSE / SubprocessFree trial
OpenRouterAPI keyHTTPS SSE16 free models
OllamaNoneLocalhostFree forever
OpenAI CodexAPI key or CLISSE / SubprocessPaid (free trial)
Google GeminiAPI key or CLISSE / SubprocessFree tier
HuggingFaceHF tokenHTTPS SSEFree tier
  • -Provider lock per session — the provider chosen on the first turn sticks for the life of that chat tab.
  • -Hot-swap provider or model mid-conversation — click a different chip, transcript replays automatically.
  • -Availability probing — Ollama chip probes with a 2-second timeout so the chip reflects live status.
  • -Preflight mismatch detection — pasting wrong key types triggers clear error messages.

Chat Experience

  • -Multi-tab chats — every conversation is a real VS Code editor tab. Drag, split, pin, close independently.
  • -Three entry points to start a chat: sidebar button, editor title bar icon, and status bar entry.
  • -Streaming responses with a three-dot indicator and an immediate stop button.
  • -Up/Down arrow cycles through previous prompts (terminal-style). Draft is preserved.
  • -Enter sends, Shift+Enter inserts a newline. IME composition respected.
  • -Auto-scroll pauses when you scroll up. A 'Jump to latest' button appears for new content.
  • -Per-message actions on hover: Copy, Edit & resend, Regenerate.

Markdown Rendering

  • -Assistant messages render as real Markdown — fenced code blocks, inline code, bold, italic, headings, lists, blockquotes, links.
  • -Code blocks have a one-click Copy button with a success checkmark.
  • -Safe React-element renderer — no dangerouslySetInnerHTML, no XSS surface.

Agentic Loop (Tool Approvals)

Every tool the model wants to run goes through a typed approval flow with visual feedback.

ToolDisplayDefault Mode
Read / Grep / GlobCompact summaryAuto-allowed
Edit / Write / MultiEditInline unified diffPrompt
Bash / BashOutputCommand in monospacePrompt
Custom / MCP toolsName + input previewPrompt
  • -Inline diff shows before/after at the line level with compressed unchanged runs.
  • -Open side-by-side VS Code diff editor if you prefer.
  • -Tool message rows collapse to a single line with click to expand.
  • -Long tool outputs collapse past 24 lines with a 'Show more' toggle.
  • -TodoWrite renders as a live checklist with in-progress and completed states.

Attachments

  • -@file mentions in the composer with fuzzy case-insensitive workspace search.
  • -@terminal mention attaches the active terminal's last-command output.
  • -Paperclip button opens the native OS file picker — multi-select from any drive.
  • -Shift+drop files from VS Code file explorer or OS.
  • -Paste screenshots (Ctrl+V) — saved locally and auto-attached.
  • -Click attachment chip to preview; x button to remove before sending.
  • -Auto-attach editor selection setting — selected code gets inlined in the message.
  • -Validation: binary files rejected, files over 10 MB blocked, files over 1 MB prompt confirmation.

Sessions, Checkpoints & Rewind

  • -Persistent sessions saved locally — restorable from the sidebar.
  • -Automatic per-turn checkpoints before any Edit/Write/MultiEdit.
  • -Rewind via the rewind icon on any user message — Fork, Restore, or Both.
  • -Past Conversations picker with date buckets and metadata.
  • -Carry-over summary with /fork <summary> to seed new sessions.

Context Management

  • -Auto-compact fires when context window crosses the threshold (default 80%).
  • -Context replay on provider/model switch — recent turns prepended as transcript.
  • -Adaptive replay size auto-scales to the target model's context window.
  • -Live context readout below the composer — input/output tokens, context %, cost.

Scheduled Messages

Schedule a message to fire at a specific time — useful for long tasks, follow-up prompts, or timed reminders.

TEXT
/schedule                    → guided flow
/schedule refactor the auth  → skips message prompt
/schedule list               → view pending schedules
/schedule cancel <id>        → cancel a schedule

If VS Code is closed when the scheduled time passes, a notification shows what was missed with Send Now / Reschedule / Delete options.

Voice (Read Aloud)

Every reply has a play button that reads it aloud. Code blocks are summarised (“Code block in TypeScript, 12 lines”) instead of read out. Links are read by their label and file paths by their file name; markdown symbols and emoji are skipped. Stop Reading Aloud in the command palette stops playback.

TEXT
/autospeak on      → read each reply of THIS chat aloud when it finishes
/autospeak off     → stop auto-play in this chat (play buttons still work)
/autospeak status  → whether this chat auto-plays, and which voice is used

Voices: Deepgram Aura-2 with your own Deepgram API key, or the free system voice. Add the key in Settings → Speech to Text & Text to Speech → Deepgram settings. It is stored with your other credentials, never in settings.json. Deepgram bills per character.

Voice Input (Speech to Text)

Push-to-talk: click the microphone in the chat composer (or press Ctrl+Alt+V, ⌘⌥V on macOS), speak, and click again. The words are inserted where the cursor is, for you to review before sending. Esc cancels. Speech to text uses Deepgram Nova-3 with your own Deepgram API key.

Wake word:say “hello coder” followed by your request and it is sent hands-free — or say “hello coder” alone, wait for the chime, then the request. A request spoken while a reply is still being written is added to that turn, like a typed one.

TEXT
/hello-coder on      → turn the wake word on and start listening in this window
/hello-coder off     → turn it off and close the microphone
/hello-coder status  → whether it is on, and whether this window is listening

Privacy and cost: listening never starts by itself — after a reload, press Start listening in the composer. While listening, speech is detected on your machine and only what you say is sent to Deepgram (billed by audio length); replies being read aloud are ignored. The status bar shows when the microphone is listening. Desktop VS Code records with the system microphone (built in on Windows; SoX on macOS; arecord, SoX or ffmpeg on Linux). In web access the browser records — this needs an HTTPS address and your permission.

Cost & Usage

Every turn reports token usage — input, output, and cache reads/writes — plus an estimated cost for the turn and a running total for the session. Cache reads are shown separately because they are billed at a fraction of fresh input.

TEXT
/cost    → this session's tokens and estimated cost
/usage   → MR Coder token usage (rolling window, weekly, monthly)

The context meter in the chat header shows how much of the model's window is in use, so you can see compaction coming before it happens.

Web Remote Access & Tunnel

Open your workspace from any browser. Opt-in via mrMultiCoder.webAccess.enabled.

  • - Two-port design: an auth proxy in front, the VS Code Server internal-only behind it
  • - JWT session cookies, bcrypt-hashed passwords, brute-force rate limiting
  • - Per-user project permissions — restrict a user to specific folders
  • - Extension allowlist enforced by VS Code 1.96+
  • - Optional Cloudflare tunnel for a public domain

Full setup and the security model in the Web Remote Access guide.

MCP Servers (Model Context Protocol)

Connect external tools and endpoints from a visual modal — type /mcp in any chat, or use the MCP button in the composer. API keys go to your OS keychain, never to settings.json.

PresetAuthWhat you get
Jira (Atlassian)Email + API token (Basic)Projects, epics, stories, tasks and issues
FigmaOAuth or Personal Access TokenDesign tokens, components, frames → code
StitchAPI keyList projects, generate screens → code
Anthropic CompatibleAPI key (x-api-key)Any /v1/messages gateway, as a chat provider
OpenAI CompatibleAPI key (Bearer)Any /chat/completions gateway, as a chat provider
Custom ServerPick your own headerAny MCP server reachable over HTTP

Jira scopes per question, not per connection. There is no project picker — Jira exposes no project-scoping header, so you narrow in the chat instead: “list my Jira projects” → “epics in PROJ” → “what's under PROJ-42?” to reach its stories and tasks. You only ever see what your Atlassian account can already see.

Servers are stored in mrMultiCoder.mcpServers — the same shape as Claude Code's config. Chat-capable endpoints (Anthropic/OpenAI Compatible) appear in the provider chip; tool servers stay in the tool plumbing.

Project Conventions (CODER.md)

Run /init to launch a wizard that asks seven questions and writes a single CODER.md at the repo root. It gets wired into every provider's memory file automatically.

  • -Max lines per file, tech stack, testing policy, comment style, commit style, dependency policy, off-limits paths.
  • -Idempotent — re-running /init never duplicates the reference block.
  • -CODER.md is loaded first in the auto-memory chain across all providers.

Security & Workspace Trust

  • -API keys live only in your OS secure keychain — never in configuration files, never synced, never logged.
  • -Workspace trust respected end-to-end — edit, write, and bash tools refuse to run in untrusted workspaces.
  • -CLI providers are never bundled — auto-detected on PATH with install hints.
  • -Proposed-content store is session-scoped and automatically cleaned up.

Developer Analytics Dashboard

A full-featured, self-contained analytics dashboard for tracking productivity, cost, and reliability. Full specification in the Analytics documentation.

  • -Productivity Score (0-100) with five weighted components.
  • -12 KPI cards with period-over-period deltas.
  • -Streak tracking, peak hours, efficiency trends, session quality.
  • -Cost intelligence — daily trends, cost per prompt, cost by project/provider.
  • -Model productivity ranking table.
  • -Export to CSV or JSON. All data is local-only.

Settings Reference

All 97 settings, prefixed with mrMultiCoder. Open them with MR Multi coder: Open Settings or search the prefix in VS Code settings.

SettingDefaultDescription
providerclaudeActive backend provider for new sessions.
claude.backendanthropicRouting backend for the Claude provider.
claude.endpoint(empty)Override the Claude API endpoint
claude.credentials[]Claude credential profiles that coexist (real Anthropic key, qoder, etc.)
claude.activeCredentialId(empty)Which Claude credential profile is active for new sessions
claude.modelclaude-sonnet-4-6Default Claude model for new Claude-provider sessions
mrcoder.modelclaude-sonnet-4-6Default model for MR Coder sessions
kilo.cliPathkiloPath to the Kilo Code CLI binary
kilo.model(empty)Model identifier passed to the Kilo CLI
iflow.cliPathiflowPath to the iFlow CLI binary
iflow.model(empty)Model identifier passed to the iFlow CLI.
qwen.authModeapiHow to reach Qwen
qwen.cliPathqwenPath to the Qwen CLI binary (CLI auth mode only).
qwen.endpointhttps://dashscope.aliyuncs.com/compatible-mode/v1Base URL for the OpenAI-compatible /chat/completions endpoint
qwen.modelqwen3-coder-plusDefault Qwen model identifier sent as the model field in chat-completion requests
openrouter.modelnvidia/nemotron-3-super-120b-a12b:freeDefault OpenRouter model
ollama.endpointhttp://localhost:11434/v1Ollama's OpenAI-compatible endpoint
ollama.modelqwen2.5-coder:7bDefault Ollama model tag
codex.authModeapiHow to reach OpenAI: API mode (stored key) or CLI mode (spawn codex binary).
codex.cliPathcodexPath to the Codex CLI binary
codex.endpointhttps://api.openai.com/v1OpenAI API base URL
codex.modelo4-miniDefault OpenAI model
gemini.authModeapiHow to reach Gemini: API mode (stored key) or CLI mode (spawn gemini binary).
gemini.cliPathgeminiPath to the Gemini CLI binary
gemini.endpointhttps://generativelanguage.googleapis.com/v1beta/openaiGemini API base URL (OpenAI-compatible endpoint)
gemini.modelgemini-2.5-flashDefault Gemini model
huggingface.endpointhttps://router.huggingface.co/hf-inference/v1HuggingFace Inference API base URL (OpenAI-compatible)
huggingface.modelQwen/Qwen2.5-Coder-32B-InstructDefault HuggingFace model
qoder.cliPathqodercliPath to the Qoder CLI binary
permissionModedefaultDefault permission mode for new sessions.
allowedTools[]Tools to auto-approve regardless of permission mode.
disallowedTools[]Tools to always deny
approvalTimeoutSeconds0Seconds to wait for user approval before auto-denying a tool call
maxTurns1000Maximum number of agent turns per session before forcing a stop
maxAutoContinue5When a response is truncated (output limit, turn limit, or incomplete tool loop), automatically send a 'Continue' follow-up up to
maxToolRounds0Maximum tool-call rounds per turn before the loop is stopped
customSystemPrompt(empty)Additional instructions appended to the system prompt for every session.
autoCompactThreshold0.7Context usage fraction (0.0–1.0) at which to auto-compact the conversation
sizeCompactThreshold2000Trigger auto-compact when the session exceeds this many stored messages (regardless of context-window usage).
contextStrategyrolling-summaryHow to condense long conversations so the CLI provider doesn't overflow its context window.
rollingSummary.summarizeEveryNMessages25How many user messages to accumulate before the rolling summariser fires
rollingSummary.keepRawAfterSummary10How many recent user turns (with their assistant/tool responses) to keep verbatim alongside the rolling summary after compact
rollingSummary.summariserProviderautoWhich provider runs the rolling-summary LLM call
contextReplay.maxChars80000Maximum character budget for the context-replay prefix injected on session resume or provider swap
contextReplay.maxMessages50Maximum number of messages to include in the context-replay prefix.
contextReplay.perMessageCap4000Per-message character cap within the context-replay prefix
toolResultTruncateBytes50000Truncate tool results larger than this many bytes to preserve context budget.
loadProjectMemorytrueAuto-load CLAUDE.md / .mrcoder/MEMORY.md from the workspace into the system prompt.
loadGlobalMemorytrueAuto-load ~/.mrcoder/MEMORY.md into the system prompt at session start.
showMemoryInStatusBartrueShow a status-bar chip with the loaded project-memory size
sessionMemory.maxSummaries6Maximum number of compact summaries to keep in the per-session MEMORY.md file
swapSummariseautoWhether to run an LLM summarisation when switching to a provider with a smaller context window
showCostInStatusBartrueShow running token usage and estimated cost in the status bar (Claude provider only).
costCapUsdPerSession0Block sends after estimated session cost exceeds this many USD
telemetry.enabledfalseSend anonymous usage telemetry to help improve MR Multi coder
claude.extendedThinkingfalseEnable Claude's extended thinking (server-side reasoning)
claude.thinkingBudgetTokens32000Token budget for Claude's extended thinking when enabled
po.enabledfalseEnable the Product Owner agent — an automatic 'second pair of eyes' that reviews each turn, lists pending tasks, and (when complet
po.modepassiveProduct Owner behavior
po.autoCommitfalseWhen enabled and files changed, auto-commit the AI model's work as 'MR CODER PO' (secret + off-limits-path safety gates always app
po.model(empty)Model the Product Owner reviews with
po.snapshotViewEnabledtrueShow the PO Snapshots view in the sidebar
po.endpoint(empty)Optional URL the share-snapshot command POSTs to
po.endpointToken(empty)Optional bearer token sent with snapshot uploads
autoAttachSelectionfalseWhen you send a message, automatically attach the active editor selection (if any) as a fenced code block.
enableNewConversationShortcutfalseEnable Ctrl+N / Cmd+N to start a new conversation when the Conversations view is focused
analytics.enabledtrueEnable or disable analytics data collection
analytics.minutesPerTask5Estimated minutes saved per accepted AI suggestion
analytics.refreshIntervalSeconds30Auto-refresh interval for the analytics dashboard in seconds
analytics.goals.acceptanceRate0Target acceptance rate (%)
analytics.goals.dailyPrompts0Target daily prompts
analytics.goals.maxCostPerDay0Target max daily cost in USD
analytics.goals.maxResponseTimeMs0Target max response time in ms
tts.providerdeepgramVoice that reads replies aloud: deepgram (your key; falls back to the system voice without one) or system.
tts.voiceaura-2-thalia-enDeepgram Aura-2 voice used to read replies aloud.
tts.speed1Speaking rate for replies read aloud (0.7–1.5).
tts.playButtontrueShow a play/stop button on each reply.
tts.autoPlayfalseDeprecated and ignored — auto-play is per chat now: /autospeak on in the chat you want read aloud.
stt.pushToTalktrueShow the push-to-talk microphone button in the chat composer.
stt.wakeWordfalseTurn on the wake word (same as /hello-coder on|off). Listening starts only when you start it in a window.
stt.wakePhrasehello coderThe words that wake the chat.
stt.languageenSpeech-to-text language (BCP-47, e.g. en, en-GB, de; multi for mixed).
stt.keyterms[]Words to recognise better — project names, jargon (English only, up to 50).
hapticFeedback.enabledtrueEnable or disable haptic feedback sounds for chat events.
hapticFeedback.volume0.95Master volume level for haptic feedback sounds (0 = silent, 1 = full).
hapticFeedback.sounds.submit(empty)Absolute path to a custom sound file for message submit
hapticFeedback.sounds.responseComplete(empty)Absolute path to a custom sound file for response completion
hapticFeedback.sounds.question(empty)Absolute path to a custom sound file for AI asking a question (tool approval)
hapticFeedback.sounds.error(empty)Absolute path to a custom sound file for error events
hapticFeedback.sounds.taskComplete(empty)Absolute path to a custom sound file for task completion (refactor, generation with tools)
hapticFeedback.keyboardSounds.enabledtruePlay typing sounds when pressing keys in the chat input.
hapticFeedback.keyboardSounds.profileelectronicKeyboard sound profile.
hapticFeedback.onProgress.enabledfalseEnable ambient music playback while the AI is generating
hapticFeedback.onProgress.folderPath(empty)Absolute path to a folder containing audio files (*.wav, *.mp3, *.ogg, *.m4a) for progress playback.
hapticFeedback.onProgress.volume0.3Volume level for progress music (0 = silent, 1 = full).
webAccess.enabledfalseEnable VS Code Web remote access
webAccess.port18462Port for web remote access.
webAccess.projectsFolder(empty)Root folder containing your projects
webAccess.autoStartfalseAutomatically start the web server when VS Code opens.
webAccess.allowedExtensions["mr-innovations.mr-multi-coder"]Extension IDs allowed for installation in the web instance
webAccess.sessionTimeout24Web session timeout in hours
webAccess.maxSessions5Maximum concurrent web sessions.
tunnel.apiBaseUrlhttps://mr-coder.ioBase URL for the mr-coder.io API
tunnel.autoConnecttrueAutomatically start cloudflared when VS Code opens (if a tunnel is configured).
rollout.killSwitchfalseOperator kill-switch — when true, the extension disables itself on activation
rollout.killSwitchMessageThis MR Multi coder version has been disabled by the operator. Update to the latest version to restore functionality.Message shown to the user when the kill-switch is on
mcpServers{}MCP server configurations

Keyboard Shortcuts

ShortcutAction
Ctrl+Shift+AOpen Chat
Ctrl+Shift+Alt+ANew Conversation
Ctrl+EscapeToggle focus between editor and chat
Ctrl+Shift+LAdd editor selection to chat
Alt+KInsert @path mention for selection
Escape EscapeStop generation
EnterSend message
Shift+EnterNewline in composer
Up/DownCycle prior prompts

Full command reference with examples in the Commands documentation.