Open-source clients · mihomo core

Clash DownloadsRule-based Routing

Choose a client for your system, understand protocol support through the mihomo core, manage connection routing with routing rules, and follow the setup guide to get started.

Routing rulesOpen-source coreDocumentation
CORE / RULE ENGINE

mihomo

The core project that continues Clash.Meta's development, handling rules, protocols, and DNS.

LICENSE / CORE LICENSE

GPL-3.0

The mihomo source code license; check each GUI client's license separately.

PROTOCOLS
SSVMessTrojanVLESSHysteria2TUIC

Clash Rules and Core Features
From incoming connections to outbound policies

The client provides the interface; the core handles connections. Understand the difference before deciding whether a configuration can be migrated, a protocol is supported, or traffic is actually reaching the rule engine.

Routing Rules

Rules are evaluated from top to bottom. Once a rule matches, its policy is applied; evaluation does not continue to later ordinary rules. Domain suffixes are useful for grouping sites, IP ranges for handling local network destinations, and rule providers for managing large sets of conditions. Put specific exceptions first, broader matches next, and finish with a MATCH catch-all. If a connection behaves unexpectedly, check the matched rule and outbound policy before changing the order. Switching nodes alone won't fix overlapping rules.

mihomo Core

mihomo builds on Clash.Meta with expanded protocol, DNS, and routing support. The core and client are separate: check the target core and supported fields before migrating a configuration.

Multi-protocol Support

SS, VMess, Trojan, VLESS, and QUIC-based protocols have different requirements. Match the proxy type to your server, then check transport access, UDP support, and certificates before comparing speeds.

Importing Subscriptions

Check whether your subscription provides a full configuration or only nodes. Keep local overrides separate from remote updates, and treat subscription URLs as private credentials.

TUN Mode

TUN routes app traffic through a virtual network adapter. Check permissions, DNS, and conflicts with other VPNs. Rules still decide the outbound route; enable TUN only when the system proxy is insufficient.

Proxy Group Policies

Groups give rules a stable outbound name. Choose manual selection, automatic testing, or failover to suit your needs. Verify group references and members after updates; low latency does not guarantee high throughput.

Cross-platform Clients

Choose an actively maintained client for your device. Check desktop CPU architecture or mobile VPN permissions. Routing logic can transfer between platforms, but proxy settings and background behavior differ.

Clash Configuration ExamplesRules, proxy groups, and DNS

config.yaml · rules
mode: rule
rules:
  - DOMAIN-SUFFIX,example.com,Proxy
  - IP-CIDR,192.168.0.0/16,DIRECT,no-resolve
  - GEOIP,CN,DIRECT
  - MATCH,Proxy
mode: rule
Enables rule mode. In global or direct mode, connections aren't routed according to this standard rules list.
DOMAIN-SUFFIX
Matches the specified domain and its subdomains. Proxy in this example must be the name of a proxy group defined in your configuration.
IP-CIDR / no-resolve
Matches a local network range. no-resolve means this IP rule won't actively trigger a DNS lookup; it doesn't disable DNS entirely.
GEOIP / MATCH
Matches against GeoIP data first, then handles the remaining connections. This example illustrates rule order; it isn't a complete configuration for every use case.

Clash Downloads for Every Platform
Choose by operating system and processor architecture

Desktop and mobile installation steps differ. The download page lists clients, architecture options, and system requirements. First identify your device's platform, then open the relevant list. Except on Linux, start with Clash Plus; other clients are alternatives for different interface preferences and feature needs.

Windows

A rules-based proxy for desktop browsers, developer tools, and everyday apps. Start with Clash Plus, then compare Clash Verge Rev, FlClash, and Clash Nyanpasu. Check system and processor requirements before installing. If you need TUN, install the service and grant permissions as prompted by the client. When migrating a Clash for Windows configuration, keep backups of your subscriptions and rules instead of copying the entire old app directory. System proxy and launch at startup are separate settings; check each one individually.

Go to downloads →

macOS

Choose an installer for Apple Silicon or Intel. Clash Plus, Clash Verge Rev, and FlClash are good options to compare. When you first launch the app, review the system permission prompts. System proxy, launch at login, and network extension permissions are separate settings. If you use command-line tools, check whether they read the system proxy; a working browser connection doesn't mean terminal traffic is routed through the client. Archived clients are best for referencing old configurations, not as the default choice.

Go to downloads →

Android

Start with Clash Plus, or compare Clash Meta for Android, FlClash, and Surfboard. Make sure the installation package matches your device architecture, then grant system VPN permission after importing your subscription. Battery optimization may interrupt background connections, but don't disable every power restriction right away. First check what happens after the screen locks, then make changes as needed. Subscription formats vary between cores, especially for node-only links, so check which import methods the client supports.

Go to downloads →

iOS

Use the download page to open the Clash Plus App Store listing. The product website is clashplus.io. After installing, follow the client setup flow to import your subscription and allow it to create a VPN configuration. Mobile network routing differs from desktop system proxy settings, so don't follow desktop service installation steps. If connection behavior changes when switching between Wi-Fi and cellular, first check network conditions and node reachability before adjusting protocol or DNS settings.

Go to downloads →

Linux

For a graphical desktop client, compare Clash Verge Rev and FlClash, choosing a package that matches your distribution. For servers, routers, or environments where you manage services yourself, see the mihomo core download options. The core alone isn't a complete GUI client; you'll need to manage its working directory, configuration path, permissions, and service process. Before enabling TUN, check existing routes and DNS services. On remote devices, keep a way to restore access so a routing mistake doesn't cut off your management connection.

Go to downloads →

Clash Open-source Ecosystem
Project relationships and maintenance boundaries

Download links, GUI clients, proxy cores, and subscription services each serve different purposes. Understanding where one ends and another begins makes it easier to choose a client and troubleshoot problems than treating everything as the same software.

Original Clash, Meta, and mihomo

Clash established a way of working centered on rules, proxy groups, and YAML configuration. Clash.Meta extended that system and later continued development under the mihomo name. They share history and configuration concepts, but they aren't interchangeable executables. Basic rules in older Clash configurations are usually easy to understand and migrate; check the target core's documentation for newer protocols, DNS extensions, and TUN fields. Don't apply every option from an old guide to a current client without checking.

To tell whether a guide applies, first check whether it covers a GUI or a core, then confirm its configuration fields match your current environment. Client controls may generate or override configuration, so check both the interface and the configuration file. When troubleshooting, noting the core name, error logs, and steps to reproduce the issue is more useful than describing the client's appearance alone.

Source Code Licenses and Client Boundaries

The mihomo source code is licensed under GPL-3.0. Development history, issue discussions, and configuration implementation can be found in the project repository. An open-source license describes the terms for using, modifying, and distributing source code; it doesn't mean every third-party GUI client uses the same license. Each client project maintains its own interface, packaging, and platform integrations. Check the relevant product documentation for supported features. This site organizes download links and technical guides; its name doesn't imply affiliation with every upstream project.

Clients handle local rules and connections, but installing one doesn't automatically provide a working subscription. Users configure their own subscriptions, and the relevant service provider manages account information. When troubleshooting, you can share the configuration structure and error messages after removing sensitive fields. Hide the full subscription URL, credentials, and any personal network data unrelated to the issue.

Check Configuration Before and After Updates

Client updates and subscription updates are separate processes: the former changes the interface, core, or system integration; the latter changes remote configuration and node data. Save your configuration and local overrides before updating a client. After updating a subscription, check proxy group members, rule sources, and the actual outbound route. If a setting stops working, check the core logs for changed fields, failed resource loads, or missing references before rolling back or editing the configuration. Changing several options at once after an update makes it harder to identify the cause of a problem.

For long-term use, keep a brief record of configuration changes, noting only the reason and fields involved—not credentials. When switching devices, recheck system proxy settings, network permissions, and startup behavior. These are usually local settings and don't migrate with a subscription. For old guides covering archived clients, use them to understand the concepts rather than treating the old app as the default installation choice.

Reading Source Code and Reproducing Issues

To check how a field behaves, visit the MetaCubeX/mihomo project repository for documentation, commit history, and issue discussions. Before relying on an existing report, confirm the runtime environment. To reproduce an issue, narrow the configuration step by step: keep the required inbound settings, one working outbound, and the fewest possible rules, then add DNS, rule sets, and TUN back in. This helps separate effects caused by subscription content, client-generated configuration, and core behavior.

The command below retrieves the source code; it doesn't install a GUI client or create a system proxy. Most users can choose a client directly from the download page. Before building or modifying the code, developers should read the repository's build requirements and license files. When reporting an issue, provide reproducible steps and don't upload a full configuration containing a private subscription.

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

Clash Technical Notes
TUN, cores, and routing in practice

Understand the underlying concepts and configuration trade-offs, one issue at a time. If you're new, first verify a basic connection, then read the guide for your specific question. Advanced settings aren't required by default.