YAML
# Basic structure example; traffic goes direct by defaultmixed-port: 7890allow-lan: falsemode: rulelog-level: infodns:  enable: true  enhanced-mode: fake-ip  nameserver:    - https://dns.alidns.com/dns-queryrules:  - MATCH,DIRECT
mihomo · Configuration structure exampleUTF-8 / 2 spaces
Or start with the YAML manual’s configuration overview →

mihomo core · YAML configuration reference

Clash client downloadsand YAML configuration docs

Choose a client for your platform, learn routing rules and proxy groups from real YAML examples, then check the connection log to see how your configuration behaves.

Open-source codeChinese docsField reference

Find installation links by operating system

CONFIGURATION / MIHOMO

From traffic ingress to routing egress

The client imports configuration, displays connections, and interacts with the operating system; the core parses fields, handles DNS, and routes traffic. When troubleshooting, first check whether traffic reaches the core, then inspect the matched rule and final egress. The five configuration areas below cover common adjustments. Examples explain the structure and do not include usable proxy nodes.

Routing rules determine which egress a connection uses. The core checks rules in order, applying the first match, so put exact domain matches before broader rules and catch-all rules last. You can define rules directly or manage them centrally in rule sets. Unlike global mode, rule-based routing lets different destinations use different policies. After making changes, check the connection page for the destination domain, matched rule, and proxy chain. Don’t judge routing solely by whether a page loads in your browser.

rulesrule-providersMATCH
# Put specific rules first and the catch-all rule last
rules:
  - DOMAIN,example.com,DIRECT
  - DOMAIN-SUFFIX,example.org,DIRECT
  - IP-CIDR,192.168.0.0/16,DIRECT,no-resolve
  - MATCH,DIRECT

Explore field types, rule syntax, and merge examples →

OPEN SOURCE / PROJECT BOUNDARIES

How Clash, mihomo, and clients fit together

Understand how the projects fit together before choosing an installation and configuration path. Open-source repositories provide code, release notes, and issue discussions. Similar client interfaces don’t mean they use the same core, integrate with the system in the same way, or merge configuration identically.

Project history: the original project and its successors

The original Clash project’s maintenance status has changed, and several independent projects now carry the ecosystem forward. mihomo evolved from Clash.Meta and is one of its actively developed core branches. Search results still include old guides, clients, and configuration screenshots. Check which core an article covers and whether it matches your current software. A name containing Clash doesn’t guarantee that a field is supported or that projects are officially affiliated.

When migrating an old configuration, preserve the logic of your nodes, proxy groups, and rules, then check core support field by field. Don’t assume that a file being importable means every field is active. Some clients rewrite ports, controller settings, or TUN options before startup, so the running configuration may differ from the subscription file. When they do, use the client’s exported runtime configuration and core logs to troubleshoot.

Open-source ecosystem: interface and traffic handling are maintained separately

Graphical clients such as Clash Verge Rev and FlClash provide configuration management, proxy selection, connection lists, and system proxy controls. mihomo handles lower-level tasks such as protocol connections, rule matching, and DNS. A client may bundle the core with its installer or offer a separate core update; updating the interface and updating the core are not necessarily the same thing. When reviewing project documentation, check both client releases and core changes, especially new fields, default changes, and platform service updates.

Open-source code makes implementations available for inspection, and issue discussions can help identify compatibility differences in specific environments. That doesn’t mean one configuration will work on every device. This site organizes client download links and Chinese-language instructions; it doesn’t speak for project maintainers or provide proxy nodes or subscription services. Software downloads, configuration sources, and network services are separate parts of the setup. Check each one when troubleshooting.

How the core turns configuration into connections

A connection typically enters the core through a system proxy or virtual network adapter, then rules are matched against its destination and DNS results, and a proxy group selects the egress. Proxy configuration describes node protocols, proxy groups organize possible egress routes, and rules decide where traffic goes. Once you understand these three layers, you can change nodes without rewriting every rule, or adjust rules without reinstalling the client. Node service availability must be checked separately, including authentication, server status, and your local network.

The direct-connection example in the configuration card shows YAML structure only; it does not establish a proxy connection. For actual use, import a configuration with real nodes from a trusted source and make sure the groups referenced by rules exist. YAML indentation uses spaces, and list items must stay at the correct level. Check spelling for domains, node names, and proxy group names. Run the client’s configuration check before reloading to avoid having to troubleshoot syntax errors and network issues at the same time.

Updates: keep a rollback path and verify changes

Before upgrading, save your current configuration and any local overrides, then read the relevant project’s release notes. Subscription updates typically refresh nodes and remote rules; client updates change the interface and system integration; core updates affect lower-level behavior. These updates cover different things. If connections fail after an upgrade, first check whether the runtime configuration changed, then inspect permissions, service status, and logs. Don’t upgrade while also changing DNS and routing modes, or it will be hard to tell what caused the difference.

To verify changes, start a new connection and check the matched rule, proxy chain, and egress—not just the tray icon. Existing connections may keep their original egress, and browser caches can hide configuration changes. Before sharing logs, remove subscription URLs, credentials, and personal network information. To discuss an issue, share only the relevant fields, system details, and steps to reproduce it; don’t publish a complete private configuration.

View mihomo source code

If Git is installed, run the command below to clone the repository. Cloning the source code does not install a client or configure your system proxy. For everyday use, choose a graphical client from the download page.

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

Open the mihomo repository ↗ / See what this site maintains →

CLIENTS / PLATFORM SELECTION

Choose a Clash client for your operating system

Check your operating system and processor architecture before opening the matching platform page. On desktop systems, AMD64 usually means x64; it isn’t limited to one processor manufacturer. ARM64 is a different architecture. The download page lists client options, system requirements, and installation instructions. These links take you to the right platform.

Windows clients

Start with Clash Plus, or compare Clash Verge Rev and FlClash based on the features you need. Check your system architecture before installing. For your first connection, test the system proxy before enabling the TUN service. If your browser works but a particular app doesn’t, check whether it uses the system proxy. UWP apps may also be affected by loopback restrictions.

Go to downloads →

macOS clients

Choose the right installer for Apple Silicon or Intel. Client interfaces, menu bar controls, and background network services have different permission requirements; follow the system prompts after installation. If you already use another VPN or network filter, check what traffic each app handles to avoid multiple tools changing the default route at the same time.

Go to downloads →

Android clients

Choose an installer for your device’s architecture, import a configuration, and grant permission to establish a VPN connection. If you need the connection to stay active, check battery optimization and background activity settings. App selection in Clash Android determines which apps are included in traffic interception; routing rules determine where those connections go once they reach the core.

Go to downloads →

iOS clients

The download page links to Clash Plus on the App Store and the official site, clashplus.io. After installation, import your configuration and allow the VPN configuration when prompted. Client support for configuration formats and fields varies. Check that your YAML file is compatible, then verify that proxy groups and rules imported correctly.

Go to downloads →

Linux clients

Desktop users can explore Clash Verge Rev and FlClash, then choose a package format for their distribution. Server and router users can find mihomo in the core section of the download page. Running the core from the command line means managing configuration paths, permissions, and services yourself. A graphical client’s system proxy switch is not the same as routing all system traffic through the core.

Go to downloads →

Browse all clients → Want to compare interfaces, platform support, and maintenance status? Compare clients.

Three things to check after installation

First, confirm that the configuration loaded. A successful import doesn’t mean the nodes are usable; check the configuration validation result and proxy groups. Second, confirm that traffic reaches the core. After enabling the system proxy, make a new request in a browser that supports it, then check the connection list for a matching entry. Third, confirm that traffic takes the expected route. The matched rule and proxy chain in a connection record explain the result better than a single latency number.

In global mode, connections usually go to the GLOBAL proxy group; in rule mode, the rules determine where they go. Switching modes won’t fix node authentication errors or replace DNS and system permission settings. For your first setup, keep things simple: use one traffic interception method, confirm it works, then add per-app routing, TUN, or custom rules. See the user guide for the full setup and the YAML manual for field details.

READING / PRACTICAL NOTES

Connection checks, latency tests, and platform troubleshooting

These practical guides focus on specific tasks: start with repeatable ways to verify your setup, then learn what test results can and can’t tell you about system integration. If Clash can’t connect, use connection records to trace traffic ingress, DNS resolution, or egress. That’s more effective than repeatedly switching clients.

Browse all articles →