mihomo core · Desktop and mobile clients

Clash clientsDownloads and guides

Choose a client for your operating system, manage connections with subscription imports and rule-based routing, and explore configuration guides.

Open sourceYAML configurationSetup guides

GPL-3.0 licensedmihomo / Clash Meta coreYAML configuration

Rules and menus are illustrative static UI. Setting names vary by client.

Clash Configuration and Connection Management

Explore configuration settings, from subscriptions to outbound policies.

Clash is an ecosystem of tools that uses configuration files to define proxies, policy groups, and routing rules. Graphical clients provide the interface for settings and subscription management, while the core parses configurations, handles connections, and routes traffic. After installing a client, add a subscription or local configuration compatible with its core, then choose an outbound mode. Opening the app alone does not mean your traffic is being proxied.

For your first setup, start with rule mode and the system proxy: make sure the configuration loads, check that a policy group has a working outbound selected, then review rule matches in the connection log. Consider TUN only if you need to handle apps that ignore system proxy settings. These five common configuration areas explain what key fields do; the examples are not complete, ready-to-use configurations.

rules · Rule mode
mode: rule
rules:
  - DOMAIN-SUFFIX,github.com,PROXY
  - DOMAIN-KEYWORD,google,PROXY
  - GEOSITE,category-ads-all,REJECT
  - GEOIP,LAN,DIRECT
  - GEOIP,CN,DIRECT
  - MATCH,PROXY

Rule-based routing sends different traffic to different outbound policies, which is useful for handling developer tools, websites, and LAN services at the same time. Rules are checked from top to bottom; the first match determines the policy. Put more specific domain rules first and leave MATCH as the fallback at the end. In this example, PROXY must be defined as a policy group in the full configuration; DIRECT and REJECT are built-in policies. After making changes, check the matching rule on the Connections page to pinpoint the cause instead of repeatedly switching global modes. Domain-set rules also depend on the relevant rule data being available.

Similar feature names don't mean every client handles settings the same way. GUIs such as Clash Verge Rev and FlClash expose some fields in their settings panels, while others are still managed in YAML. Mobile clients are also subject to the system VPN interface and background restrictions. If you can't find a setting, check the client documentation and supported core features instead of following instructions for another platform. For step-by-step help, see the Clash setup guide. For protocol compatibility and core differences, see Protocol guide.

Download a Clash Client for Your Operating System

Check your operating system and processor architecture before choosing an installer.

Installers and System Requirements

Windows: For a first install, start with Clash Plus, then compare Clash Verge Rev, FlClash, and Clash Nyanpasu based on how you prefer to manage configurations. After installing, import a subscription and set up the system proxy. Grant additional permissions only if you need TUN or service mode. If your browser works but another app doesn't, first check how that app connects to a proxy. For Microsoft Store apps, see Clash UWP loopback setup.

macOS: Apple Silicon and Intel Macs need installers for different architectures. Check About This Mac to identify your chip before downloading. Follow the client-specific instructions to configure subscriptions in Clash Plus, Clash Verge Rev, or FlClash. If you prefer menu bar controls, also check whether the client is still maintained and review its permission prompts. TUN mode may require an additional service; permission to install an app is not the same as permission to create a network interface.

Android: Choose from Clash Plus, Clash Meta for Android, FlClash, and Surfboard. Their configuration formats aren't all the same, so confirm that your provider's format is supported before importing. The first time you connect, Android will ask for VPN permission. If another VPN app is running, resolve the conflict first. If connections drop in the background, check battery optimization and background activity restrictions; increasing the subscription refresh frequency is unlikely to help.

iOS: The download page links to Clash Plus on the App Store and its official website, clashplus.io. Import a compatible configuration in the app, grant the requested network permissions, then check your rules and policy groups. Desktop steps for installing services or setting system proxy ports don't apply directly to phones. Check each client's documentation for the configuration fields it supports.

Linux: Desktop users can choose Clash Verge Rev or FlClash, with an installer that matches their distribution's package system. For servers and routers, run the mihomo core directly and manage configuration files, service startup, and logs yourself. A GUI client is suited to everyday interactive use; a standalone core deployment requires familiarity with file permissions and network routing. For help choosing, see the client comparison guide.

Switching from an Older Client

Archived download links for Clash for Windows and ClashX Meta are available for compatibility with older setups. For a new installation, choose a client that is still maintained. Before migrating, note your subscription source, policy group selections, and local overrides. Reimport them in the new client and check that the configuration parses correctly. Fields recognized by an older interface may no longer be recommended, and newer protocols may require a more recent core. For details on discontinued clients, see archived client notes.

Running multiple clients at once can cause conflicts over the system proxy, listening ports, or TUN routes. Before testing a new client, quit the old one and make sure it has restored the proxy settings; then enable the new settings step by step. If you need to launch at startup, keep only the startup entry you actually use. See how to start Clash at login for the full steps. This helps prevent a misdirected proxy or occupied port after signing in.

The Clash Open-Source Ecosystem and mihomo Core

Understand the difference between clients, cores, and configuration sources, then check compatibility in project documentation.

Core Families and Project Origins

The Clash ecosystem includes the original core, later forks, and GUI clients built around these cores. Clash Meta became a major fork in this evolution, and mihomo continues related core development. Historical names may still appear in client titles, configuration guides, or subscription format options. To determine what a client supports, check the core it actually uses rather than inferring protocol support from the app's name.

mihomo source code and documentation are available through its public project repository, which includes build instructions, configuration references, and issue-tracking resources. The code is licensed under GPL-3.0. Public source code helps explain how features work and why they change, but GUI clients have their own interfaces, release schedules, and permission management. This site organizes ecosystem links and guides; refer to each project for its publisher and specific licensing terms.

Configuration Compatibility and Feature Limits

Configurations typically include proxy entries, policy groups, rules, and DNS settings. A core's support for a protocol doesn't guarantee that the client provides a GUI for configuring it. Conversely, a setting in the interface only works if the core supports it. If an import fails, check the logs for the field or protocol name, then confirm the subscription's output format. Don't treat YAML syntax errors, expired links, and unreachable networks as the same problem.

The basic approach to domain rules often carries over when migrating a configuration, but providers, geodata, network stacks, and DNS fields can differ. Keep a working copy of the original configuration and migrate local changes one at a time to make problems easier to trace. Choose among SS, VMess, Trojan, VLESS, Hysteria2, and TUIC based on server support, network conditions, and device resources. See the protocol and core reference for details.

Updates and Connection Checks

Client updates, core updates, subscription updates, and rule-data updates are separate operations. A client update may change the interface or system integration; a core update affects configuration parsing and protocol support; a subscription update retrieves a fresh configuration from your provider; and a rule-data update changes domain or IP lists. If a website is routed incorrectly, check the matching rule and the data source in use before reinstalling the app.

Record your current settings before updating. Afterward, check them in the same order: does the configuration load, are the policy groups present, is app traffic reaching the client, and which rule matches the destination? Comparing logs and the effective configuration before and after is more reliable than checking whether a single webpage opens. When reporting an issue, include your operating system, client name, reproduction steps, and redacted logs. Remove subscription URLs and credentials before sharing.

Look up common terms in the glossary. GeoIP data and domain lists serve different purposes, and clients may manage their updates separately; see Clash GeoIP updates for details. Whether a subscription remains usable and a server is reachable depends on the configuration source and network conditions. Installing a client does not automatically provide a working outbound connection.

Clash Guides and Core References

Find the right guide, from common settings to core differences.

Clash Download