Windows
Ideal for everyday desktop use. The download page lists graphical clients and explains installation, configuration imports, and system proxy integration.
Go to DownloadsiOS clients and configuration guides
From choosing a client to importing a subscription, the steps follow real-world workflows. Find client links for five major platforms, configuration guides, and troubleshooting steps here.
Platform Downloads
Each operating system uses different packages and permission models. Select your current device first, then compare available clients, system requirements, and installation methods on the download page.
Ideal for everyday desktop use. The download page lists graphical clients and explains installation, configuration imports, and system proxy integration.
Go to DownloadsFor both Intel- and Apple-silicon Macs. Check your processor architecture before choosing a package, then follow the client prompts to authorize the network extension or system proxy.
Go to DownloadsFor phones, tablets, and some TV devices. The download page separates common processor packages and provides links for graphical clients and subscription configuration.
Go to DownloadsFor iPhone and iPad. The client works through a system network extension, allowing you to import subscriptions, choose proxy groups, and configure on-demand connections.
Go to DownloadsFor desktop Linux, servers, and router environments. Most users can choose a graphical client, while advanced users can continue to the mihomo core options.
Go to DownloadsCore Configuration
These four configuration panels cover the operations used most often. Use the index above to jump to a section; each panel follows the practical setup sequence.
Traffic Mode
Rule mode works well for long-term use. The client checks domains, IPs, processes, or rule sets from the top of the configuration downward, then passes a match to the assigned proxy group. Send everyday services directly, route selected requests through a proxy group, and keep local access paths for LAN addresses.
Global mode sends most traffic through one policy, making it useful for quickly checking whether a node works, but it is not a good basis for complex configurations. If some websites load while others do not, confirm the current mode first, then check which rule matched the affected domain.
Network Access
Allow LAN lets other devices on the same network connect to this device's proxy port. Enable it only when sharing is actually needed, and make sure the listen address, system firewall, and port settings agree. On iPhone, Local Network permission affects LAN device discovery and access; it is not exactly the same as the proxy connection itself.
DNS hijacking sends system DNS requests to the client's DNS module, keeping resolution results aligned with rule evaluation. When configuring it, check enable, the listen address, enhanced mode, upstream servers, and fallback conditions together. Changing just one address usually will not fix a problem caused by rules, the network, or a node.
Subscription
Subscription URLs are usually generated by the service provider, and the client downloads the configuration again at the configured interval. Before enabling automatic updates, update it manually once and confirm that the file parses correctly, proxy groups open normally, and rule references produce no errors. This separates an expired URL, a blocked connection, and a configuration syntax problem.
Updating a subscription replaces the content supplied remotely, so temporary local edits may disappear. For DNS, rule, or proxy-group changes that must persist, use the client's supported override and merge features instead of editing the subscription source directly. If an update fails, check URL accessibility, system time, and network permissions first.
On Demand
On-demand connections use iOS network conditions to trigger the client, such as automatically connecting on cellular data, a specified Wi-Fi network, or an unknown network. Before configuring this feature, complete one manual connection, confirm that iOS created the corresponding VPN configuration, and allow the client to add its network extension.
Write rules from specific conditions to general ones so a broad rule does not match too early. You can set a home network to disconnect or ignore, and cellular data to connect. If the client reconnects frequently, reduce duplicate conditions first, disable high-frequency health checks next, and then review Low Power Mode and the system's background status.
Quick Start
Complete one short, verifiable path before configuring automatic updates, overrides, and on-demand connections. This makes it easier to identify where a problem occurs.
On the download page, open the iOS section and choose a client for iPhone or iPad. On the first connection, iOS will ask to add a VPN configuration; authorize it with your device passcode, Face ID, or Touch ID. Confirm the request in the system dialog, and do not repeatedly toggle the connection before importing a configuration.
Copy a valid subscription URL, then choose Import from URL on the client's configuration or subscription page. After the download completes, open the configuration and confirm that proxy-group names, rule lists, and the DNS section load correctly. Then open the proxy-group selector and choose a node or an automatic policy for your use case; do not connect just because the configuration name appears.
Enable rule mode and connect, then open one site that should connect directly and another that should use a proxy. If the results are unexpected, check the rule name and proxy group in the connection log instead of changing several settings in succession. Confirm the traffic path first, then determine whether the cause is a rule, DNS, a node, or the local network.
Open Source Context
Clients, cores, and configuration formats operate at different layers. Understanding how they relate helps prevent interface, network, and core issues from being investigated as if they were the same problem.
Clash established a widely adopted YAML configuration structure covering proxy nodes, proxy groups, rules, DNS, and runtime ports. After the original project stopped receiving active maintenance, the community continued using this approach while developing compatible implementations, rule data, and graphical clients. The core concepts in older guides therefore remain useful, but support for specific fields should be verified against the current core documentation.
mihomo is one of the actively maintained Clash-compatible cores. It parses configurations, establishes proxy connections, runs rules, and handles DNS. Graphical clients on Windows, macOS, Android, iOS, and Linux typically add subscription management, system proxy integration, network extensions, log viewing, and policy switching outside the core. Interface labels may differ, but the underlying concepts are broadly the same.
Public source code allows the community to inspect configuration fields, behavior changes, and known issues. When something goes wrong, record the operating system, client name, active mode, configuration source, and reproducible steps before deciding whether to inspect the client project or the core project. “It doesn't work” is rarely enough to locate a problem; field errors, rule names, and network status in the logs provide much more useful evidence.
Client updates, core updates, and subscription updates are three separate paths. A client update mainly changes the interface and system integration; a core update may change field support and network behavior; a subscription update replaces the nodes, policies, and rules delivered by the provider. When behavior changes, adjust one layer at a time and keep the last working configuration so rollback and comparison remain clear.
mihomo source
git clone https://github.com/MetaCubeX/mihomo.git
Common Checks
Most first-use issues can be traced to one of four areas: the subscription, the mode, the proxy group, or the system state.
First confirm in a browser that the subscription URL is still accessible, then check the system time, network permissions, and the update time shown in the client. If the URL opens but the client cannot parse it, verify that the returned content is a valid configuration.
Check the system VPN status, current mode, proxy-group selection, subscription validity, and DNS resolution in that order. Change only one condition at a time and test again after each change so multiple actions do not hide the real cause.
For everyday use, prefer rule mode so each request can be sent directly or through a proxy according to the rules. Global mode is useful for briefly verifying whether the selected node can handle traffic, but it does not replace checking which rule matched.
When the remote subscription updates, local edits made directly to its source may be overwritten. Put DNS, rule, or proxy-group changes that must persist into the client's supported override or merge configuration.
Latest Guides
Recent articles cover speed, DNS, and Clash running in the iPhone background. Each one is organized around symptoms, causes, and the recommended order of operations.
Break speed issues into the node itself, the route in between, and local device settings. Identify the bottleneck through latency tests, direct-connection comparisons, DNS adjustments, and rule cleanup.
Read MoreReview DNS toggles, enhanced mode, upstream servers, fallback filtering, and listen settings, then explain how these fields work together during rule evaluation.
Read MoreUnderstand why the iOS network extension stays active, then reduce unnecessary background activity by lowering high-frequency checks, simplifying rules, and adjusting on-demand connections.
Read More