Windows
Graphical clients such as Clash Plus and Clash Verge Rev support both system proxy and TUN virtual adapter modes, and run on Windows 10/11 with installers for both x64 and ARM64.
Go to DownloadOpen-source ecosystem · mihomo core clients actively maintained
A download and configuration guide for Clash clients on Windows, macOS, Android, iOS, and Linux: clients run on the mihomo core, with support for rule-based routing and TUN mode. Download links, a quick-start walkthrough, and advanced configuration each get their own dedicated page.
Each of the five platforms has its own client and installer format. Click a card to jump straight to that platform's section on the download page, which also lists system requirements and archived notes for clients that are no longer maintained.
Graphical clients such as Clash Plus and Clash Verge Rev support both system proxy and TUN virtual adapter modes, and run on Windows 10/11 with installers for both x64 and ARM64.
Go to DownloadInstallers cover both Intel and Apple Silicon. The client lives in the menu bar and supports enhanced mode for taking over all traffic; older Macs can fall back to the archived ClashX Meta build.
Go to DownloadRoot-free proxying via VpnService, with per-app proxy rules and automatic subscription updates. Separate APKs are available for ARM64 and ARMv7 devices.
Go to DownloadClash Plus is available directly on the App Store. Subscription import and rule-routing logic match the desktop clients, with no extra configuration tools needed.
Go to DownloadA deb package and graphical client are available; for servers and routers, you can deploy the mihomo core binary directly and run it as a systemd service.
Go to DownloadA headless core binary covering AMD64, ARM64, ARMv7, and MIPS architectures, aimed at server and router users; desktop users should stick with one of the graphical clients above.
Go to DownloadEach entry below documents one core capability as a spec sheet item: what problem it solves, how to use it, with a matching config snippet on the right as a quick reference. Full parameter details are in the advanced configuration page.
Traffic is split across different exits based on conditions like domain suffix, IP ownership, or process name: local sites go direct, target services go through the proxy, and ad domains get rejected outright. Rules are matched top to bottom, the first hit wins, and a trailing MATCH catches whatever's left. Compared to routing everything through the proxy, this keeps local access fast and avoids the extra latency of sending all traffic the long way round; rules can be written inline or pulled from remote rule-providers that refresh automatically on a daily schedule.
rules:
- DOMAIN-SUFFIX,openai.com,PROXY
- GEOIP,CN,DIRECT
- MATCH,PROXY
# config.yaml · rules
A system proxy only affects apps that respect the proxy setting — command-line tools, game clients, and some desktop software bypass it entirely. TUN mode creates a virtual network adapter at the OS level, capturing all of a device's traffic at the network layer and handing it to the core to process under one rule set, without relying on individual apps to cooperate. On desktop, the first activation requires installing a service component and granting admin rights; on mobile, VpnService achieves the same effect. It's typically paired with Fake-IP to cut down on DNS round trips.
tun:
enable: true
stack: system
auto-route: true
# config.yaml · tun
A proxy group bundles multiple nodes and defines how one gets picked: select for manual choice, url-test for periodically pinging a test URL and auto-switching to the lowest-latency node, fallback for trying nodes in list order, and load-balance for spreading connections across several nodes. interval sets the test cycle and tolerance sets a switching margin so two nodes with near-identical latency don't flip back and forth; groups can also nest inside each other, letting you build a "region groups plus auto-pick" structure.
proxy-groups:
- name: AUTO
type: url-test
url: http://www.gstatic.com/generate_204
interval: 300
tolerance: 50
# config.yaml · proxy-groups
A subscription link is generated by your provider, and the client fetches it periodically to pick up the latest node list. proxy-providers decouples node sources from local rules: multiple subscriptions can merge into the same proxy groups, and refreshing nodes won't wipe out local changes; health-check probes nodes on a schedule and drops the ones that fail. Graphical clients also offer override and merge mechanisms that layer personal rules and DNS settings on top of a subscription, so switching subscriptions doesn't mean rewriting the whole config.
proxy-providers:
main:
type: http
url: "your-subscription-link"
interval: 86400
# config.yaml · proxy-providers
DNS resolution quality directly determines how accurate routing decisions are. With enhanced-mode set to fake-ip, the core returns a virtual address from a reserved block for every domain; when an app connects to that virtual address, the core matches rules by domain directly, skipping the wait for a real lookup, so connections open faster and local DNS poisoning gets bypassed entirely. For cases that need a real IP — LAN printers, some multiplayer games — add them to the fake-ip-filter exception list to fall back to conventional resolution.
dns:
enable: true
enhanced-mode: fake-ip
fake-ip-range: 198.18.0.1/16
# config.yaml · dns
The core ships with a built-in HTTP control API: switching nodes, running latency tests, listing connections, and streaming logs are all available through the external-controller address. Graphical client dashboards are built on top of this same API, and you can also connect web panels like metacubexd or yacd to manage a running core remotely from a browser — especially useful for headless instances on routers, NAS boxes, or servers.
external-controller: 127.0.0.1:9090
secret: "your-password"
# config.yaml · external-controller
From install to a verified connection, the standard flow is just three steps. This is the short version — see the full guide for exact UI locations, platform differences, and common errors.
Pick the installer for your platform on the download page. Clash Plus is the top pick across all platforms; on Windows/macOS, grant the service component permissions when prompted during setup — you'll need them later to turn on TUN mode.
Copy the subscription link from your provider and paste it into the client's "Subscriptions / Profiles" page. The client fetches the node list and generates a config automatically — once imported, you'll see all the proxy groups on the proxy page.
On the proxy page, choose a group and a node, turn on the system proxy (or TUN mode), and visit a target site to confirm it works. Then use the built-in latency test to compare nodes and switch your main group to whichever one scores lowest.
Project history.Clash started out as a rule-based proxy core written in Go; its clear YAML config format and flexible routing rules grew into a full client ecosystem. After the original repository was archived, the community continued maintenance under the name mihomo, building on the Meta fork with backward-compatible configs and ongoing additions like domain sniffing and more outbound protocols.
Core vs. client.The graphical clients listed on this site — Clash Plus, Clash Verge Rev, FlClash, and others — all wrap the mihomo core: the core handles protocol implementation, rule matching, and DNS, while the client handles subscription management, the UI, and system integration (system proxy, TUN service, launch on startup). Core upgrades ship bundled with client releases, so most users never need to update the core separately.
Release cycle.Each client is published in versioned releases on open-source platforms; the links on our download page always point to the latest stable release and show the version number. Clients that are no longer maintained (Clash for Windows, ClashX Meta) are archived separately with a badge, so existing users can still retrieve older installers, though we no longer recommend fresh installs of them.
Community collaboration.Both the core and the major clients are fully open and auditable, with bug reports and feature work flowing through issues and pull requests. The GeoIP/GeoSite databases that routing rules depend on are also published regularly by community repositories, and clients can update them with a single click.
git clone https://github.com/MetaCubeX/mihomo.git
Four of the most common questions with one-line answers; full walkthroughs and screenshots are on the help page.
mihomo is the continuation of the Clash Meta fork, with a backward-compatible config format; it's what runs under the hood in every mainstream graphical client today. See the full explanation →
First check whether the service component installed correctly and whether admin rights were granted, then confirm DNS is enabled and auto-route is turned on. See the troubleshooting steps →
Not necessarily: first confirm the test URL is reachable and your local network is fine, then narrow it down layer by layer — node, route, and local settings. See how to narrow it down →
This usually means the subscription returned content that isn't in Clash format. Ask your provider for a Clash/mihomo-specific subscription link, or check whether the link got truncated. See how to fix it →
Practical articles on picking nodes, configuring proxy groups, and migration plans — the three most recent posts, newest first.
A migration path for when a client stops being maintained: check whether your config and subscription can be reused as-is, export local overrides, pick a still-maintained replacement for your platform, and see what needs to be reconfigured afterward.
Read More →A beginner-friendly method for picking nodes: how to read latency numbers, how traffic multipliers affect your usage, how region choice relates to what you're accessing, and how common protocols differ in speed and stability.
Read More →Breaks down the decision logic and key parameters (url/interval/tolerance) behind three automatic proxy group types, comparing when each fits best — chasing low latency, ensuring availability, or spreading load — with config examples.
Read More →