Local-first desktop GUI for AI coding CLIs
Claude Code · Codex · 15+ providers · sessions · multi-agent · fleet view · scheduling
What is it · Capabilities · Quick start · Providers · Architecture · License
English · 简体中文
MiWarp wraps AI coding CLIs (Claude Code, Codex, …) in a native desktop app, so you get the power of the terminal agent plus a proper visual interface — chat history with diffs, multi-session management, cross-session forwarding, and remote access from your phone.
Everything stays on your machine under ~/.miwarp/. The app itself has no cloud backend; only the LLM API calls go over the network.
It's not an Electron app — built on Tauri v2 (Rust + system WebView), so the install is ~50 MB and RAM usage stays under 200 MB for a normal session.
Developers who already use Claude Code / Codex from the terminal and want:
- a visual chat interface with proper markdown, tool cards, and diffs (instead of scrolling terminal output)
- persistent history — every prompt, every response, every file change, searchable
- multi-provider switching — Anthropic, DeepSeek, Kimi, Zhipu, OpenRouter, local Ollama, … without restarting
- session management — fork, resume, rename, forward messages between sessions
- remote access — pair your phone, run from the browser, schedule tasks to run while you're away
If you just want a chatGPT-style web UI, this isn't it. If you spend hours a day in claude code and want it to feel less like 1995, this is.
- Visual tool cards — every Claude Code tool call (Read, Edit, Bash, Grep, Write, WebFetch, …) rendered inline with syntax-highlighted diffs, structured output, one-click copy
- Rich content — markdown with syntax highlighting, thinking blocks, image attachments, file diffs, collapsible tool-burst groups
- Visual blocks — inline Mermaid diagrams and Vega-Lite charts rendered without leaving the chat
- Inline slash commands —
/model,/diff,/todos,/tasks,/doctor,/stats,/preview,/ralph, … rendered natively - Drag & drop — images, PDFs, directories, path references
- Cross-session forward — three-layer session target selector (title / last-message preview / meta), explicit Cancel / Forward pair
- Run history & replay — browse every past session, full event replay, resume or fork from any point, soft-delete with recovery
- Workspace grouping — sessions grouped by project (cwd); full path shown once per group, not in every row
- Event-driven sidebar — run list refreshes from the bus-event stream, no polling
- Rewind — checkpoint and selectively revert file changes with dry-run preview
- CLI session import — discover and import existing Claude Code CLI sessions
- Unified error shape — every IPC call returns
{code, message, data, retryable}so the UI can react consistently
- 15+ LLM providers (Anthropic official, DeepSeek, Kimi, Zhipu, Bailian, DouBao, MiniMax, Xiaomi MiMo, Tencent Hunyuan, SiliconFlow, …)
- 3 API gateways (Vercel AI Gateway, OpenRouter, AiHubMix, ZenMux)
- Local inference (Ollama, CC Switch, Claude Code Router) + any Anthropic-compatible endpoint
- Hot-swap between providers without restarting a session
- CLI auto-sync — runtime health probed periodically (path, version, login, capability), auto-recommended install for missing CLIs
- Team dashboard — read-only view of Claude Code multi-agent teams (task lists, status, message flow), with live file-watcher updates
- Multi-agent page — orchestrate parallel sessions, presets, and team-runs
- Command capability manifest — runtime declares which sub-commands it supports so the UI can show/hide affordances without guessing
- Employee / fleet overview — see all agents, runtimes, and their health at a glance
- Local MCP server (Streamable HTTP) — exposes a subset of the IPC surface to other tools on the same machine via a typed MCP contract
- Browser lite runtime — embedded WebView runtime (Chrome profile-based) for sandboxed automation, registered alongside the system WebView
- Runtime diagnostics observer — bounded ring buffer of recent runtime events for post-mortem
- Mobile pairing — QR-code pair a phone or tablet as a remote terminal
- Embedded web server — token-authenticated HTTP + WebSocket relay; LAN access or cloudflared / ngrok tunnel
- iOS WebSocket contract — first-class transport for iOS companion apps (validated by an architecture contract check)
- Scheduled tasks — cron-style recurring prompts with retry / abort signal integration
- Ralph loop — auto-iterate a prompt until a completion condition is met
- Hook manager — upstream CLI hooks for event-driven automation
- Plugins center — discover, install, enable / disable plugins; visual source / form mode editors for plugin manifests
- Skills — first-class community skills registry with on-demand fetch and import
- Skill sources — register external skill sources (e.g. Git repos) and check updates in-place
- MCP marketplace — discover MCP servers, view status, reconnect / toggle
- File explorer — syntax highlighting, markdown preview, image preview, git diff
- Memory editor —
CLAUDE.md(user + project scope) with live preview - Agent editor — visual editor for custom agent definitions (
.md) with form / source modes - Permission rules — user + project level, with batch Allow / Deny
- Workspace settings — per-project overrides (cwd alias, default runtime, environment)
- Usage analytics — per-model token breakdown, cost tracking, daily heatmap
- Doctor diagnostics — system health for CLI, platform, SSH, proxy, local LLM endpoints
- 12 themes (Codex, Midnight, Ocean, Dracula, Nord, Morandi, Carbon Pink, Deep Sea Milk, Aurora Pomelo, Pomegranate Mist, Aurora Lime, Dev Preview) with full light / dark variants
- Light / dark / system mode with live OS follow (works even when Settings is closed)
- Custom keybindings with chord support and conflict detection
- English / 简体中文 i18n with key alignment + placeholder validation enforced by CI
- System tray with native notifications and screenshot hotkey
- In-app update checker (signed updater for desktop, GitHub fallback for browsers)
- In-app release notes — read what shipped directly inside the app
- Command palette — fuzzy-find across pages, sessions, and actions
Grab the latest signed installer from Releases:
- macOS — universal
.dmg(Apple Silicon + Intel), signed and notarized. - Windows —
.msi/.exeproduced and signed by CI.
Linux desktop builds have been retired — Linux still works as a dev environment (run from source via
npm run tauri dev), but no packaged installer is shipped. The recommended path for end users is macOS / Windows or Option B / C below.
git clone https://github.com/Yhazrin/MiWarp.git
cd MiWarp
./scripts/setup.sh # add --yes to skip prompts
npm run tauri devThe setup script auto-detects missing deps (Xcode CLI Tools, Homebrew, Node.js, Rust) and installs them.
Prerequisites
macOS
xcode-select --install
brew install node
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | shLinux (Debian / Ubuntu)
sudo apt install libwebkit2gtk-4.1-dev build-essential curl wget file \
libxdo-dev libssl-dev libayatana-appindicator3-dev librsvg2-dev
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | shWindows
Install Rust from https://rustup.rs and Node.js from https://nodejs.org.
Then
git clone https://github.com/Yhazrin/MiWarp.git
cd MiWarp
npm install
npm run tauri devThe setup wizard walks you through:
- CLI detection — auto-detects Claude Code / Codex, offers install if missing
- Authentication — OAuth or API key for your provider
- Ready to chat
Re-run anytime from Settings → Setup Wizard.
| Provider | Endpoint | Auth |
|---|---|---|
| Anthropic | Official API | API Key |
| DeepSeek | api.deepseek.com/anthropic |
Bearer |
| Kimi (Moonshot) | api.moonshot.cn/anthropic |
Bearer |
| Kimi For Coding | api.kimi.com/coding/ |
Bearer |
| Zhipu (智谱) | open.bigmodel.cn/api/anthropic |
Bearer |
| Zhipu (智谱 Intl) | api.z.ai/api/anthropic |
Bearer |
| Bailian (Coding Plan) | coding.dashscope.aliyuncs.com/apps/anthropic |
Bearer |
| Bailian (百炼 API) | dashscope.aliyuncs.com/apps/anthropic |
Bearer |
| DouBao (豆包) | ark.cn-beijing.volces.com/api/coding |
Bearer |
| MiniMax | api.minimax.io/anthropic |
Bearer |
| MiniMax (China) | api.minimaxi.com/anthropic |
Bearer |
| Xiaomi MiMo (小米) | api.xiaomimimo.com/anthropic |
Bearer |
| Xiaomi MiMo (Token Plan) | token-plan-cn.xiaomimimo.com/anthropic |
Bearer |
| Tencent Hunyuan (混元) | api.hunyuan.cloud.tencent.com/anthropic |
Bearer |
| SiliconFlow (硅基流动) | api.siliconflow.com/ |
Bearer |
| Platform | Endpoint | Auth |
|---|---|---|
| Vercel AI Gateway | ai-gateway.vercel.sh |
Bearer |
| OpenRouter | openrouter.ai/api |
Bearer |
| AiHubMix | aihubmix.com |
Bearer |
| ZenMux | zenmux.ai/api/anthropic |
Bearer |
| Platform | Endpoint |
|---|---|
| Ollama | localhost:11434 |
| CC Switch | localhost:15721 |
| Claude Code Router | localhost:3456 |
| Custom | Any Anthropic-compatible endpoint |
┌─────────────────────────────────────────────────────────┐
│ MiWarp Desktop (Tauri v2) │
│ ┌─────────────────────────────────────────────────┐ │
│ │ Frontend (Svelte 5 + SvelteKit static) │ │
│ │ • chat UI · tool cards · settings · themes │ │
│ └─────────────────────────────────────────────────┘ │
│ │ IPC │
│ ┌─────────────────────────────────────────────────┐ │
│ │ Backend (Rust) │ │
│ │ • session_actor (per-run process lifecycle) │ │
│ │ • turn_engine (phase / timeout) │ │
│ │ • storage (runs, events, settings, …) │ │
│ │ • web server (mobile pairing) │ │
│ │ • scheduler · hook manager │ │
│ └─────────────────────────────────────────────────┘ │
│ │ stream-JSON / PTY / pipe │
│ ┌─────────────────────────────────────────────────┐ │
│ │ Claude Code CLI / Codex CLI │ │
│ │ (long-lived child processes) │ │
│ └─────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────┘
Tech stack
| Layer | Tech |
|---|---|
| Framework | Tauri v2 (Rust + WebView) |
| Frontend | Svelte 5 + SvelteKit (adapter-static) |
| Styling | Tailwind CSS v3 + CSS variables |
| Terminal | xterm.js |
| Markdown | marked + highlight.js |
| Sanitize | DOMPurify |
| i18n | Custom lightweight runtime (en + zh-CN) |
| Testing | Vitest + Rust unit tests |
Data storage — everything at ~/.miwarp/, no cloud:
~/.miwarp/
├── settings.json # user settings
├── keybindings.json # custom shortcuts
├── runs/ # session history
│ └── {run-id}/
│ ├── meta.json # run metadata
│ ├── events.jsonl # event log
│ └── artifacts.json # summary
└── …
Platform support — actively developed and tested on macOS and Windows (both ship signed CI artifacts). Linux still works as a dev environment but is not packaged for end users. Bug reports and platform-specific fixes are welcome.
npm install # install dependencies
npm run tauri dev # dev mode with hot reload
npm test # run vitest
npm run lint # eslint
npm run format # prettier
npm run check # svelte-check (type)
npm run i18n:check # i18n key alignment
npm run verify # full CI gate (lint + format + check + i18n + test + build + rust)See CONTRIBUTING.md for code conventions, commit style, and PR guidelines.
Copyright 2025-2026 MiWarp Contributors.
