mihomo core · Open-source clients

Clash Clients/Downloads & Setup

Clash Wiki helps you choose a client and learn about subscription imports, rule-based routing, and mihomo configuration.

Open-source coreConfiguration guidesReal-world rule syntax

Platforms, rules, and the core

The client provides the interface; the core handles connections and applies rules. Understand the difference before choosing an installer or configuration method.

Five platformsChoose by deviceDesktop / Mobile / Linux
Rule modeFirst match decides the policyrules → policy
mihomoOpen-source proxy coreconfig.yaml / GPL-3.0

CLIENT / PLATFORM

Clash downloads by platform

Check your operating system and processor architecture before comparing clients. The downloads page lists installers, requirements, and archive status for each platform; this page does not link directly to installers.

Windows

Start with Clash Plus, then compare Clash Verge Rev, FlClash, and Clash Nyanpasu. For a first connection, import a configuration and enable the system proxy. Consider TUN only if you need to handle apps that ignore system proxy settings. Before downloading, check your processor type under “About” in system settings—don’t infer the architecture from the computer’s brand.

Go to downloads

macOS

Apple Silicon and Intel require different installers. Compare Clash Plus, Clash Verge Rev, and FlClash; ClashX Meta is available as an archived option. Check your chip under “About This Mac,” then follow the client’s prompts to grant network permissions. After installation, check the proxy status of your active network service to prevent settings left behind by an older client from interfering with connections.

Go to downloads

Android

Compare Clash Plus, Clash Meta for Android, FlClash, and Surfboard. Android clients typically use system VPN permission to route traffic, unlike desktop clients that configure browser proxy settings. On first launch, grant permission, then choose a configuration and proxy group. If the connection drops when the screen locks, check battery optimization and background activity restrictions. Configuration formats vary between clients.

Go to downloads

iOS

The downloads page links to Clash Plus on the App Store and to the official site at clashplus.io. After installing, follow the app’s prompts to import a configuration and allow it to add a VPN configuration. If you have connection issues, first check that your subscription is compatible with the app, then review your policy selection and system VPN status. Don’t copy desktop instructions for installing services, setting listening ports, or configuring firewalls.

Go to downloads

Linux

For desktop Linux, choose between Clash Verge Rev and FlClash. Check your distribution’s package format and processor architecture first. Servers, routers, and similar environments typically run the mihomo core directly, so you’ll need to manage the configuration directory, process permissions, and service startup yourself. Terminal apps may not honor the desktop system proxy; set proxy environment variables or specify a proxy address as documented by each app.

Go to downloads

CONFIG / GLOSSARY

Clash Configuration Explorer

First understand how traffic reaches the core, then see how rules choose an outbound route. The snippets below explain individual fields; they are not complete, runnable configurations. Proxy is an example policy group name that must be defined separately.

Rule-based routing: choose a policy by condition

Rule-based routing sends different connections through different outbound routes. In the configuration file’s rules list, match connections by domain suffix, keyword, or destination address. The core checks rules from top to bottom; the first match determines the policy, and later rules are ignored. Rules and proxy groups serve different purposes: a rule selects a group, while the group selects the actual proxy node. Put specific domain rules before broader ones, and usually place MATCH last. To troubleshoot, check which rule a connection matched before changing rule order or the group’s selection.

config.yaml · rules
mode: rule
rules:
  - DOMAIN-SUFFIX,github.com,Proxy
  - DOMAIN-KEYWORD,adservice,REJECT
  - GEOIP,CN,DIRECT
  - MATCH,Proxy
More on this →

Auto-advance stops when you click or focus with the keyboard. Use the arrow keys to switch entries, Home to go to the first, and End to go to the last.

SOURCE / PRACTICE

Open-source ecosystem and configuration references

Clash Wiki is a resource for client downloads and configuration. Core capabilities are documented by the project; interface steps depend on the client you choose. Similar client names do not guarantee identical settings, maintenance status, or permission requirements.

How Clash, Clash Meta, and mihomo relate

Clash established a configuration style centered on YAML, proxy groups, and rule-based routing. After the original project was discontinued, the community continued to develop compatible implementations. mihomo follows the Clash Meta project line and continues to evolve support for proxy protocols, rule providers, domain sniffing, and network traffic capture. That’s why Clash Meta in older guides and mihomo in current documentation often refer to the same core development lineage. However, this does not mean every field in an old configuration works the same way today.

A client is an app with a user interface; the core is the program that handles network connections. A client may bundle a particular core or let you switch cores. To determine whether a feature is available, check core support, whether the client exposes the relevant setting, and whether your system meets the permission requirements. An app’s name alone, without details about its runtime environment, is usually not enough to tell whether a configuration will work as-is. Platforms such as iOS have their own network traffic handling mechanisms, so desktop implementation details may not apply.

Trace configuration fields to public documentation

To verify a field, start with the mihomo configuration documentation, then check the mihomo source repository for notes, release history, and issue discussions. Public source code can help explain implementation and pinpoint problems, but that doesn’t mean every graphical client offers the same options or uses the same labels. This site breaks common concepts into individual entries and keeps full setup instructions in the advanced guide, rather than treating interface steps and low-level parameters as one universal workflow.

When reading examples, distinguish complete files from partial snippets. Policy names used in rules must exist in the configuration; files referenced by rule-providers must be present; and DNS listeners and control APIs need ports not already in use. YAML uses spaces for indentation—never tabs. Before saving, validate the configuration in your client, reload it, and check the logs for success. If the interface still shows the old configuration, check which entry is active instead of importing the same link again.

Configuration updates and the limits of local edits

App, core, and subscription updates affect different layers. An app update may change the interface or service components; a core update may change protocol implementation or field behavior; a subscription update may replace servers, proxy groups, and rules. Before upgrading, keep a working copy of your current configuration and local overrides, and read the relevant release notes. Afterward, test existing connections before enabling new features one at a time. A successful subscription update does not guarantee that a server is available, and a completed installation does not mean the system proxy now handles every app.

For long-term use, let the subscription manage remote content and local overrides handle personal preferences. For example, add rules for a few work domains or keep your preferred local listening address and DNS settings. Override, merge, and processing behavior varies between clients. Check the final generated configuration, not just the partial content in the editor. If you need to merge multiple subscriptions, account for duplicate proxy group names, repeated rules, and outbound dependencies. These topics are covered in the Advanced Configuration Guide; they’re best left until after your first connection.

Troubleshoot using connection logs

Break “can’t connect to the internet” into four stages: traffic capture, DNS resolution, rule matching, and outbound routing. Whether the browser uses the system proxy, whether the core sees the connection, whether the domain resolves as expected, and which policy the connection hits are more useful clues than repeatedly changing configurations. If the core has no connection record, check how traffic is captured first. If a record shows the wrong policy, check rule order and group selection. If the policy is correct but the connection still fails, check the subscription, proxy protocol, and outbound network. Change one setting at a time so you can identify the cause from the result.

A latency test measures performance for a specific target, protocol, and set of network conditions; it cannot replace testing the app you actually use. Websites, video apps, and command-line tools may use different DNS resolvers, connection reuse, and transport protocols. To verify a setup, choose a specific app, check its connection record, and confirm the outbound route matches your rules. When sharing troubleshooting details, keep the error type and necessary fields, but remove subscription access parameters, server passwords, and personal network identifiers. For more specific steps, see Frequently Asked Questions.

A sensible order for your first setup

If you already have a working subscription, install a client that matches your system architecture. Import the subscription on the configuration page and set it as active. Then select Rule mode, choose a proxy node in the group you’ll use, and enable the system proxy or mobile VPN connection. First check that your usual apps can connect, then verify that the rules behave as expected. This order tests configuration validity, traffic capture, and outbound selection separately, making it easier to see where something went wrong instead of enabling every network option and guessing afterward.

Look into TUN only if the target app ignores the system proxy or you need to capture more traffic. Before enabling it, turn off other VPNs that may change routes and note your current DNS and proxy settings. Follow the client’s prompts to install services or grant permissions. If network problems arise, undo your latest changes and restore a known working setup. The Getting Started guide walks through importing, selecting, routing, and testing; the glossary explains terms as you go. They serve a different purpose from the advanced guide.

NOTES / RECENT

Clash configuration guides

Go from common tasks to specific settings. Learn what node measurements mean before choosing one, check core differences before migrating a configuration, and start with subscriptions and proxy modes if you’re new.

The Linux penguin icon is from Font Awesome and used under CC BY 4.0. Platform graphics are used only to identify system download pages.