MIHOMO CORE · GPL-3.0 OPEN SOURCE

Clash DownloadsRouting Guides

Choose a client by platform, organize connections with rule-based routing, and consult the configuration guides for DNS, TUN, and subscription fields.

Open-Source CoreYAML ConfigurationProxy Groups and Rule Sets

“Route traffic by rule.” Match domains, IP addresses, and processes in order.

“Route app traffic through the core.” TUN provides a path for apps that don't use the system proxy.

“Keep configuration modular.” Update node subscriptions and local overrides separately.

“Start troubleshooting with DNS.” Compare DNS results with connection logs.

“Choose a client for your OS.” Check the architecture first, then compare client features.

Core reference mihomo Core license GPL-3.0 Configuration format YAML Routing basics rules / proxy-groups

CONFIGURATION / CONFIGURATION FEATURES

Rules, Traffic Capture, and Configuration Sources

The client provides the interface; the core handles connections. These snippets illustrate how mihomo fields relate to one another. They are not complete configurations for connecting to a proxy service. Check the core used by your client to confirm which fields it supports.

Route connections with explicit rules.Check matches in order, then use a final catch-all.

In rule mode, the core checks the rules list from top to bottom and uses the first match. Domain suffixes are useful for grouping services, IP ranges can handle LAN addresses, and process rules rely on information provided by the operating system. Unlike sending all traffic through one proxy, rule-based routing can keep local resources on a direct connection. To troubleshoot, check the matched rule in the connection details, then inspect the relevant proxy group. Switching nodes alone won't fix rules in the wrong order. This example sends private network addresses direct and places MATCH at the end. To proxy traffic, replace it with the name of a defined proxy group.

rules: checked from top to bottomMATCH catches everything else
config.yaml
mode: rulerules:  - DOMAIN-SUFFIX,lan,DIRECT  - IP-CIDR,192.168.0.0/16,DIRECT,no-resolve  - IP-CIDR,10.0.0.0/8,DIRECT,no-resolve  # Replace with a defined proxy group to route traffic through a proxy  - MATCH,DIRECT
Read the rule syntax →

When reading a config, identify which layer each field belongs to

A toggle shown in the interface, the configuration written to disk, and the content loaded by the core may all be different layers. For example, the system proxy is an operating system setting, mixed-port is a listening endpoint in the core, and whether a browser uses the system proxy depends on the browser itself. Troubleshoot in order: “app request → local endpoint → matched rule → proxy group → remote route,” rather than relying on the connection status shown in the interface. After enabling logs, find the new connection for your test domain and note the matched rule and proxy group before deciding which field to change.

These snippets explain the configuration structure. Before copying them, check that the fields aren't already present in the original file, use spaces for indentation, and keep group names consistent with their references. Subscription updates may regenerate the configuration, so put persistent rules in an override workflow supported by your client. For a first-time setup, follow the guide to import and verify your configuration. For field definitions, merge order, or rule syntax, see the configuration reference. Separating these tasks reduces the troubleshooting effort caused by changing too many variables at once.

CLIENTS / PLATFORM DOWNLOADS

Clash Clients for Every Platform

The download page organizes clients by operating system, architecture, and system requirements. Desktop and mobile platforms have different permission models. Configurations may transfer, but system traffic capture needs to be checked again.

Windows

For everyday desktop use, start with Clash Plus, then compare how Clash Verge Rev, FlClash, and other clients manage configurations. Confirm your system architecture before installation. After importing a configuration, enable the system proxy, open a new browser connection, and check the matched rule. If you need to capture game or command-line traffic, check TUN support and permissions. Launch at startup only starts the app; verify separately whether the system proxy and connection mode are restored.

Go to downloads

macOS

Choose the right installer for Apple Silicon or Intel, then compare Clash Plus, Clash Verge Rev, or FlClash. macOS first-run warnings, network extension permissions, and proxy settings are separate steps—not one catch-all issue. If connections fail after switching networks or waking your Mac, first check the proxy settings for the active network service. When migrating from an older client, keep your subscription and override files, and make sure the old process has exited.

Go to downloads

Android

Start with the platform information for Clash Plus, Clash Meta for Android, FlClash, or Surfboard. Configuration format support varies by product. On first connection, check the system VPN permission. If the connection drops when the app runs in the background, check battery optimization and background activity restrictions. Test on the same network, verify one app first, and then decide whether to use per-app routing. This helps distinguish background restrictions from rule issues.

Go to downloads

iOS

The download page links to Clash Plus on the App Store and lists its official site, clashplus.io. After installation, import your configuration through the client, grant the required network permission, and choose rule mode and an available route. Process matches, file paths, and extended fields from a desktop configuration may not carry over, so check them one by one. If a subscription won't import, first check the source format and link. Don't post a private subscription URL in a public forum.

Go to downloads

Linux

On desktop Linux, compare Clash Verge Rev and FlClash, and choose a package format for your distribution. Whether apps use the system proxy depends on the desktop environment and how each app is launched; terminal programs usually need proxy environment variables set explicitly. Server and router users can visit the core section to manage the mihomo process, configuration directory, and service startup separately. Before enabling TUN, check routes and permissions. If you're working remotely, keep a way to restore access.

Go to downloads

Installing the client doesn't mean your proxy configuration is ready to use

The client, configuration, and remote proxy service each have a different role. The client provides the interface and runtime environment; the configuration describes nodes, rules, and DNS; the remote service determines whether an exit is reachable. Our platform pages help you choose software and don't promise access to working nodes. If you're searching for “free Clash nodes,” check their source, authorization, and privacy risks. Private subscriptions usually contain access credentials, so hide the full URL and node authentication details before sharing a screenshot. If you already have a configuration, import it and check the logs for unsupported fields.

For a first connection, follow the guide and keep the verification steps simple: choose a configuration, select an exit in a proxy group, enable the proxy mode that suits your system, then visit a test page and inspect a new connection. Don't run multiple tools that change system proxy settings or routes at the same time. To compare maintenance status and feature support, see the client comparisons. If you're connected but can't access the internet, start with the FAQ troubleshooting section; it's more useful than repeatedly reinstalling.

SOURCE / OPEN SOURCE AND SCOPE

The mihomo Core and Its Client Ecosystem

Trust comes from inspectable code, clear configuration structures, and repeatable verification steps. This site provides an English-language index and explanations without treating every client as if it had the same capabilities.

Project history: from Clash configuration syntax to mihomo

Clash established a configuration approach that uses YAML to describe nodes, proxy groups, and rules. mihomo carries on that approach in rule-based proxying and continues to evolve its protocol support, rules, and network traffic capture. Older guides may refer to Clash, Clash Meta, or newer client names from different points in a project's history. Check the documentation for the core you're actually running, rather than judging compatibility by a file extension or window title. If a field isn't recognized, note the full error and field location, then check the core documentation.

Open-source ecosystem: core licenses don't cover client details

You can inspect mihomo's source code and GPL-3.0 license in its public repository. GUI clients build on the core with features such as configuration import, system proxy settings, tray menus, and permission services. Check each project's distribution method, license, and platform support separately. A client using a particular core doesn't automatically inherit every feature of other clients. This site separates software downloads from configuration references, so settings in one interface aren't mistaken for core fields available on every platform.

How it runs: the interface and the final configuration

A client typically reads a subscription, applies overrides and merges local settings, then passes the generated configuration to the core. What you see in the subscription view may not match what's running. The loaded configuration and connection logs are more useful for troubleshooting than an “import successful” message. Rule targets must refer to existing nodes or proxy groups, provider names must match their references, and DNS listening addresses need to fit the system's request path. Optional features such as sniffing, process rules, and TUN also depend on system permissions and client implementation.

Updates: check the app, subscriptions, and rule sets separately

Updating the client, updating the core, refreshing a subscription, and updating geolocation databases are separate operations. Software updates can change field or permission behavior; subscription refreshes can replace nodes and proxy groups; rule-set updates can change domain classifications. For easier troubleshooting, change one type of content at a time and keep a copy of the previous configuration. After an update, check startup logs, proxy group references, and rule matches for commonly used services. Don't consider verification complete just because the interface opens. Find package details on the download page; the homepage provides platform links and a suggested order for reading the configuration guides.

Troubleshooting scope: restore connectivity, then narrow down the cause

When something goes wrong, first turn off the system proxy or TUN and check whether your regular network connection comes back. If the underlying network is still down, troubleshoot it first. Once it's working, check the local listening port, DNS requests, node reachability, and matched rules in that order. When reporting an issue, include your operating system, client name, core in use, sanitized logs, and the most recent configuration change. Don't share passwords, subscription URLs, or controller credentials publicly. These details make issues easier to reproduce and help distinguish client integration problems from core configuration issues.

Browse the public source code

The command below downloads the mihomo repository source code. It doesn't install a client or enable the system proxy. See the repository documentation for build and runtime requirements.

git clone https://github.com/MetaCubeX/mihomo.git

Open the mihomo source repository ↗

NOTES / CONFIGURATION GUIDES

Recent Configuration and Troubleshooting Guides

Start with real issues that come up after importing a configuration, and explore DNS resolution, proxy modes, and how configuration fields relate. Adapt examples to your own setup, and keep a copy of the original file before making changes.