Clash Open-Source Ecosystem: mihomo, FlClash, Clash Verge Rev, and More
Learn how the original Clash evolved, why Clash Meta became mihomo, and how the core differs from GUI clients. Compare FlClash, Clash Verge Rev, platform support, and who each client suits.
Start by separating four layers: core, client, configuration, and service
Search for a Clash download and you may see mihomo, FlClash, Clash Verge Rev, and Clash for Windows listed together. They serve different roles. Before choosing, work out whether you need a proxy core to handle traffic or a client with subscription management and system settings. That distinction can help you avoid downloading the wrong software or making a faulty migration.
| Layer | Examples | Main role |
|---|---|---|
| Proxy core | mihomo | Listens on proxy ports, handles DNS, matches rules, and opens outbound connections. |
| GUI client | FlClash、Clash Verge Rev | Imports configurations, manages the core process, displays logs, and coordinates the system proxy and TUN. |
| Configuration and rules | YAML configuration, rule-providers | Defines proxy servers, proxy groups, DNS behavior, and traffic routing. |
| Connection service | Proxy servers from a subscription provider | Provides remote server addresses, credentials, and available exit nodes. |
Installing FlClash successfully does not give you a working remote connection by itself. The client usually needs a valid configuration and an outbound selected from a proxy group. Conversely, an active subscription does not guarantee that an outdated core can recognize every protocol and field it contains.
How the original Clash, Clash Meta, and mihomo are related
The original Clash is where the ecosystem began—not a catch-all name for every client
The original Clash is a Go-based rule proxy project that established widely used YAML configuration and rule syntax. Clash Premium also existed historically, with a feature set that did not entirely match the open-source version. When following older guidance about TUN, rule sets, or scripts, check which core it refers to at the time; those capabilities are not shared by every Clash project.
Around November 2023, the original Clash and some related clients saw public project changes, including discontinued maintenance and repository removals. Old installers and mirrors may still be available, but being able to launch software is not the same as ongoing support for new protocols and operating systems. Before using a new configuration, identify the specific project and check its maintenance status.
Clash Meta later adopted the name mihomo
Clash Meta was a fork developed within the Clash ecosystem and was later renamed mihomo. Older documentation, configuration guides, and some interfaces may still use the name Meta. If you see “Meta core,” check which mihomo version it refers to.
mihomo continues to expand support for protocols, DNS, rules, and TUN, but it is not simply the original project with a new filename. Check the version of mihomo actually running and its documentation to confirm whether a field is supported. YAML support in a client does not mean it can interpret every mihomo-specific extension.
- An older guide says Clash: Check whether it means the configuration ecosystem in general or the original core specifically.
- A subscription says Meta: Check which protocols, rules, and DNS fields the configuration actually uses.
- An installer says FlClash: That is the GUI client name; check the core version separately.
FlClash vs. Clash Verge Rev: platform support and differences
FlClash and Clash Verge Rev are both GUI clients, not subscription services. Start by narrowing down your options by operating system, then compare configuration management and system integration. The table summarizes each project's platform focus; check the relevant release for available architectures and installer formats.
| Project | Technology and core | Platforms and use cases |
|---|---|---|
| FlClash | Flutter interface powered by the mihomo core. | Windows, macOS, Linux, and Android; suited to users who want a similar experience on desktop and Android. |
| Clash Verge Rev | Tauri desktop client powered by the mihomo core. | Windows, macOS, and Linux; suited to users focused on desktop configuration management and system integration. |
| Clash for Android | Legacy Android client; not interchangeable with a current mihomo client. | Android; the original project is no longer maintained, so check protocol compatibility when migrating old configurations. |
| Clash for Windows | Legacy GUI client; the name does not identify its core. | Previously available for Windows, macOS, and Linux; the original project is no longer maintained. |
Android and iOS clients are not interchangeable
FlClash is available for Android, but that does not mean there is an official iOS installer. Clash Verge Rev is not an Android client either. iOS users need a client designed for that platform and should check subscription formats, rule syntax, and network extension support. Android APKs and desktop installers cannot be used on iOS.
Even for the same platform, check the processor architecture
For macOS, check whether your device uses Apple silicon or Intel and choose the appropriate arm64 or x64 installer. Android packages commonly distinguish between arm64-v8a and armeabi-v7a. On Linux, check which package format your distribution supports. Confirm your device architecture in system settings, then choose the right client from the download page.
The UI technology stack alone does not tell you whether a connection will be faster or more reliable. Remote service quality, network paths, protocol choice, DNS, and rule matching often have a greater impact. Compare clients using the same configuration and network conditions, not results from different subscriptions.
Why can the same mihomo core produce different results after import?
A subscription URL does not always return just a list of proxies. It may return a complete YAML file, node data that the client needs to parse, or different formats depending on request parameters. First distinguish between downloading a subscription, parsing its configuration, and establishing a connection; then investigate where the difference occurs.
- Different core versions: Clients may bundle different mihomo versions. A newer field may cause errors in an older core or fail to work as expected.
- Different configuration handling: A client may alter DNS, ports, rules, or proxy groups through overrides, merges, or subscription processing. The same source subscription does not guarantee identical final configurations.
- Different proxy group selections: A rule may target a proxy group with the same name, while each client has a different selection saved for that group. Expand the group to confirm the active outbound.
- Different runtime environments: System proxy settings, TUN permissions, firewalls, existing VPNs, and DNS caches can all change the traffic route.
Understand configuration dependencies with a minimal rule snippet
This is a rule snippet, not a complete, standalone subscription. Before using it, make sure you have a proxy group named PROXY with a working outbound configured. Rules are checked from top to bottom; after a match, later rules are not evaluated.
rules:
- DOMAIN-SUFFIX,example.org,DIRECT
- IP-CIDR,192.168.0.0/16,DIRECT,no-resolve
- MATCH,PROXY
Here, example.org illustrates a domain-suffix rule. no-resolve means this IP rule will not trigger a domain lookup; it does not disable DNS for the entire client. If the import reports that PROXY cannot be found, check the proxy group definition instead of repeatedly reinstalling the client.
Who handles the system proxy, mixed port, and TUN?
The client coordinates system settings; the core handles incoming connections. For example, on mixed port 7890, mihomo can accept both HTTP and SOCKS5 proxy requests on the same port. When you enable the system proxy in a client, it points the operating system's proxy settings to the corresponding endpoint. This port is only an example; use the value in your current configuration.
mixed-port: 7890
allow-lan: false
mode: rule
In this example, allow-lan: false prevents other devices on the local network from accessing the proxy through this endpoint. If you only use the proxy on this device, there is no need to enable LAN access just to troubleshoot connectivity. The system proxy also does not capture every app: programs that ignore the system proxy settings may still connect directly.
TUN is a way to route traffic through the core, not a new remote node
TUN routes traffic to the core through a virtual network interface, which can help with apps that do not follow system proxy settings. On desktop, it usually requires administrator privileges, a service component, or system authorization. On Android, traffic is typically captured through the system VPN interface. The permission requirements and system limitations differ between the two.
TUN will not fix an expired subscription or replace correct DNS and routing settings. Other VPNs, virtual network adapters, or security software on the same device may conflict with it. If enabling TUN disrupts local printers, LAN services, or domain access, check route exclusions and DNS handling rather than immediately switching all your proxy nodes.
- The browser works, but one app fails: Check whether the app uses the system proxy before trying TUN.
- Testing two clients in turn: Quit the first client before launching the next to avoid both using
7890or repeatedly changing the system proxy. - Problems only start after enabling TUN: Compare with TUN disabled and check permissions, routes, and other VPNs. Avoid changing the subscription and rules at the same time.
Migrating from an old client: keep results verifiable in four steps
Migration is about separating reusable configuration from client-specific state, not copying the entire old program directory. A new client may not recognize the old client's database, cache, or settings files; overwriting files can cause additional problems.
- Save what you need. Back up your subscription URL, custom configuration, and rules. Note the old port, proxy group selection, and DNS settings. Subscription URLs may contain access tokens, so do not include them in public screenshots.
- Start with a basic configuration. Quit the old client, import the subscription into FlClash, and select the current configuration. Check for parsing errors, then use the system proxy to test common sites. Hold off on TUN and custom overrides for now.
- Restore settings one at a time. Add back rules, DNS, LAN access, and TUN in that order, changing only one setting at a time. If something fails, check that setting and its logs.
- Record runtime details. Keep the client version, mihomo version, operating system, error message, and reproduction steps. Client and core versions use separate numbering schemes and cannot be used interchangeably.
If you used a complete YAML configuration, keep its structure during migration and then deal with client overrides. If you only imported a list of nodes, check how the new client creates proxy groups and rules. Do not assume that local rules from the old client will appear automatically just because you switched interfaces.
Choose by your needs, not by how new or old the name sounds
- Need it on both Windows and Android: Consider FlClash and check the protocols, configuration handling, and permissions required on each platform.
- Manage multiple configurations mainly on desktop: Compare how FlClash and Clash Verge Rev handle configuration switching, overrides, and system integration, then choose the one that best fits your workflow.
- For routers, servers, or automation: Consider running mihomo directly. You will need to manage configuration, processes, logs, and permissions yourself, and may not need a GUI client.
- Sticking with an unmaintained legacy client: First check whether it can parse your new subscription and whether it is compatible with your current operating system, then plan a migration.
A practical order is: operating system support, core capabilities, subscription compatibility, traffic routing method, and finally interface preference. For a side-by-side look at platform support, see the client comparison. If the configuration imports but you cannot connect, use troubleshooting to distinguish configuration errors from system proxy and DNS issues. This helps separate choosing the wrong client from problems with the current configuration.