• mihomo core
  • YAML config
  • Routing rules

Clash Clients
Downloads and Setup

Choose a client for your platform and explore subscription imports, routing rules, and config fields.

Open-Source Ecosystem English Guides Config Reference

CLIENT ROUTES

Choose a Clash client for your platform

Check your operating system and processor architecture, then review the available downloads and setup instructions.

Check the package, config, and traffic routing separately

The same platform does not mean downloads are interchangeable. Check processor architecture on desktop devices and system requirements on mobile devices; the package format must also match how your operating system installs software. If you're new to Clash, start with a GUI client: import a subscription from the config page, choose a policy from the proxy page, then check the logs to confirm the connection. A standalone core does not include a config editor, tray menu, or system proxy toggle.

The client reads the config and handles connections; the config provider maintains the subscription. After installation, you'll still need a working subscription URL or local config file. Don't treat an arbitrary webpage URL as a subscription, and don't reinstall multiple clients to fix the same config error. Whether an existing config can be migrated depends on the fields and protocols supported by the target core, as well as the client's override mechanism—not on how similar the software names sound.

System proxies, mobile VPNs, and TUN are different ways to route traffic through a client. A desktop system proxy usually affects only apps that honor that setting; command-line tools may also need proxy environment variables. TUN involves a virtual network interface, routing, and permissions, so it's best enabled after the basic connection works. The downloads page groups platform options and installation guides; for help choosing, see the client selection guide.

View all clients →

CONFIG ROUTEBOOK

Rules, Proxy Groups, and DNS

Trace how traffic is routed back to the relevant fields, then explore config snippets as needed.

Put specific rules first and fallback rules last

In rule mode, connections are checked against rules in file order. Once a rule matches, its policy applies and no later rules are checked. Domain rules work well for specific sites; IP rules are useful for known ranges. When combining them, consider how DNS resolution works and how broadly each rule applies. Put specific conditions first, broader geographic rules next, and MATCH last as a fallback. A rule can target DIRECT, REJECT, or a defined proxy group. When troubleshooting, check the matched rule in the connection log; this is often more useful than repeatedly switching nodes.

rules:
  - DOMAIN-SUFFIX,local,DIRECT
  - IP-CIDR,192.168.0.0/16,DIRECT,no-resolve
  - DOMAIN-KEYWORD,github,Proxy
  - GEOIP,CN,DIRECT
  - MATCH,Proxy
mihomocore
GPL-3.0mihomo open-source license
5 platformsClient downloads covered

Config snippets explain fields; they aren't complete subscriptions

The examples above show parts of the rules, proxy-groups, and DNS structures; they don't include real proxy servers. Before adding a snippet to an existing config, check whether the same top-level field is already present. Defining rules or dns twice can produce parsing differences or cause the later section to override the earlier one. YAML uses spaces for indentation; keep indentation consistent at each level and preserve the relationship between list items and their parent fields.

A toggle in the client interface doesn't always change the original subscription file. Some settings are merged at runtime; others take effect through an override file. Check the active config and logs to confirm. For rules you want to keep, use an override method explicitly supported by the client. Direct edits to an auto-updating subscription file may be overwritten the next time it refreshes. See the complete config reference for field relationships and merge behavior.

SOURCE & MAINTENANCE

The Clash Open-Source Ecosystem and Maintenance

Distinguish the core, client, and config source to see whether a guide applies to your setup.

Project history: similar names, different maintenance paths

Clash began as a rule-based proxy project and grew into an ecosystem of config formats, graphical interfaces, and different cores. After the original project and some early clients stopped being maintained, the community continued development along separate paths. Older tutorials in search results may describe a legacy interface, an outdated core, or an archived download. Don't assume a guide applies just because its title says Clash. Check the client name, the core it uses, and the features covered.

This site covers legacy clients separately from current options. Downloads, ratings, and unverified claims about community size aren't substitutes for choosing a client that fits your needs. Discontinued clients may help when understanding an older setup or migrating data; for everyday use, favor options that are actively maintained and meet your system requirements. Before migrating, back up your config and overrides, then check proxy protocols, proxy group references, rule-set paths, and startup settings. That way, you won't miss local customizations when moving a subscription URL.

Core and interface: separate roles for connections and controls

mihomo is an actively developed open-source proxy core in the Clash ecosystem, following the development path of Clash Meta. The core handles protocols, rule matching, DNS, and network connections. A GUI client provides controls for subscriptions, policy selection, logs, system proxies, and service management. Their release schedules may differ. To check whether a field is supported, consult the current core documentation and the client's integration details instead of assuming every client with Clash in its name supports it.

The same feature may also work differently across interfaces. For example, launch at startup might start only the interface or also launch a background service. Closing the main window may just hide it rather than stop the proxy. Check the actual running state, not just the toggle label. On mobile, distinguish the system VPN status from whether a node can connect: a connected VPN only confirms that the traffic tunnel is up; it doesn't prove the destination website is reachable.

Open-source basis: review code, licenses, and change history

mihomo's source code and license are available in its public repository. GPL-3.0 describes the open-source licensing terms for that project; it does not mean every GUI client or subscription service uses the same terms. Source code, release notes, and issue discussions can help clarify feature limits and known issues. When using software, follow applicable local laws, network policies, and service terms. Public source code and your active configuration are separate concerns, so check where your config comes from.

This site provides links to clients and documentation. It does not represent every listed project or provide proxy accounts or subscription services. Subscription URLs may contain credentials, so redact URL parameters, account details, server addresses, and other sensitive information before sharing logs or screenshots. When asking for help, include your operating system, client name, steps to reproduce, and relevant error messages. Keep useful diagnostic details, but never post your full subscription in a discussion forum.

Updates: clients, cores, and subscriptions are separate

Client updates usually affect the interface and integrated components; core updates may change protocol support or field behavior; subscription updates replace the nodes and rules published by the config provider. Treat these as separate operations. A successful subscription refresh doesn't mean the client is up to date, and installing a new client doesn't give an old subscription new features. Read release notes before upgrading, back up a working config, and note where local overrides are stored so you can compare changes if something behaves differently.

When troubleshooting an issue after an update, first check whether the config loaded, then verify rule targets and proxy group references, and finally compare DNS, ports, and traffic routing settings. Avoid changing everything at once, or you won't know what caused the result. The downloads page lists client options, the setup guide walks through the first connection, and the complete config reference explains fields. Following that order helps separate installation, config, and network issues.

METACUBEX / MIHOMO

View mihomo source code

Cloning the repository lets you read the code and project documentation. It won't install a GUI client or create a proxy subscription.

Open project repository ↗
git clone https://github.com/MetaCubeX/mihomo.git

First connection: troubleshooting checklist

On the config page, first confirm that the subscription has downloaded and is selected as the active config; simply seeing it in the list isn't enough. Next, check that the proxy groups referenced by your rules have an available target, choose rule mode, and enable a traffic routing method suitable for your device. Open a specific website and check the connection log for its domain, matched rule, and egress. If the connection doesn't appear in the log at all, first check whether the app is routing traffic through the client instead of assuming the node is down.

If some websites work and others don't, compare a failed request with a successful one. Did DNS resolution fail, or did the connection time out after it was established? Is the entire proxy group failing, or does only one rule point to the wrong target? A latency test is only a connectivity check under specific conditions; it can't replace a real request. After following the quick start guide for the basics, enable features like TUN, custom DNS, and launch at startup one at a time to keep troubleshooting straightforward.

Common troubleshooting questions

Why can't I connect after importing a Clash subscription?

First confirm that the config is enabled, then check the proxy group selection, operating mode, and system proxy. A successful import only means the config was read. Follow the first-connection steps →

Clash can't access the internet. Should I change DNS first?

First check whether the request reaches the client, then distinguish DNS resolution failures from connection failures. Avoid changing multiple fields at once. Troubleshoot common issues →

What's the difference between rule mode and global mode?

Rule mode routes traffic based on rules, global mode uses the global policy, and direct mode connects without a proxy. Changing modes is not the same as changing how traffic is routed through the client. Compare the modes →

How can I keep local rules from being overwritten by subscription updates?

Use an override or merge method supported by your client, then check the generated active config. Don't edit only the original auto-downloaded file. Learn about overrides and merging →

READING NOTES

Clash Config and Usage Guides

Explore config structure, client controls, and proxy modes.