Clash Open Source Ecosystem Map: Core Forks, Desktop Clients, and Mobile Implementations

A practical breakdown of popular projects by core, interface, and platform—clarifying how similarly named tools fit together and evolved.

When searching for Clash, you will often see Clash, Clash Meta, mihomo, Clash Verge Rev, Clash Nyanpasu, FlClash, and OpenClash listed together. They are not different installers for one program, nor are they all maintained by the same team. Some projects provide proxy cores, others only provide a graphical interface, while some target routers, Android, or specific desktop systems.

The key to understanding these projects is not memorizing names first, but identifying their layer: the core that handles connections, the client that manages configuration, the platform component that takes over system traffic, or the subscription service that distributes nodes and rules. Once the layers are clear, choosing versions, checking compatibility, and troubleshooting become much more straightforward.

Clash Ecosystem Explained in Four Layers

A working Clash setup is usually made up of several components. A name containing Clash does not necessarily include the original Clash core; likewise, a project without Clash in its name may still read common Clash configurations. These projects are better understood as components that fit together, not as versions in a single product line.

Subscriptions and local configuration
        ↓
Graphical client / Web control panel
        ↓
Clash-family cores: Clash, Clash Meta, mihomo
        ↓
System proxy / TUN / router forwarding
        ↓
Destination network

Layer 1: Subscriptions and Configuration

A subscription URL usually returns a YAML configuration that may include proxy nodes, proxy groups, routing rules, DNS settings, and rule-set references. A subscription service is neither a client nor a core. The client periodically downloads and manages the configuration; the core actually parses it and handles connections. If a subscription uses fields specific to one fork, switching to an older core may cause parsing errors.

Layer 2: Clients and Control Panels

Desktop clients typically provide subscription updates, proxy-group switching, connection views, log display, system-proxy toggles, and TUN management. They may bundle a core or allow you to switch core files. A Web control panel connects to the core through an external control interface and displays its status; it does not handle traffic forwarding itself.

Layer 3: Proxy Cores

The core listens on ports, resolves DNS, matches rules, selects proxy groups, establishes proxy connections, and writes logs. The same graphical client can behave differently when paired with another core, including changes to supported fields and runtime behavior. When troubleshooting, record both the client version and core version instead of simply writing “latest Clash version.”

Layer 4: System Traffic Capture

A system proxy affects only applications that follow the operating system’s proxy settings. TUN mode creates a virtual network interface and can cover more applications that ignore system proxy settings. Router deployments use firewall rules, policy routing, and DNS forwarding to capture traffic from devices on the local network. All three entry points can hand connections to the core, but their permissions, DNS paths, and troubleshooting methods differ.

The Relationship Between Original Clash, Clash Meta, and mihomo

The original Clash was a foundational core of the early ecosystem. It established the familiar structures for YAML configuration, rule matching, proxy groups, and external control interfaces. Many desktop clients, router plugins, and subscription templates were built around these interfaces. After the original repository stopped receiving ongoing maintenance, the ecosystem did not stop as a whole; it shifted toward maintained forks and compatible implementations.

Clash Meta originally developed as a fork of the original Clash, adding proxy protocols, rule capabilities, DNS behavior, TUN support, and configuration fields. The project name later transitioned toward mihomo. Today, “Meta core” and “mihomo core” generally describe different stages of the same development path, not two separate cores that must be installed together.

Name Project role How to understand it today Configuration notes
Clash Early core Source of many configuration formats and interfaces Does not recognize some fields added by later forks
Clash Meta Extended core fork Former name used during mihomo’s evolution Common in older documentation, directory names, and client interfaces
mihomo Actively maintained core project A common core for modern Clash clients Check fields against the documentation for the relevant version

mihomo maintains broad compatibility with common Clash configurations, but compatibility does not mean every field can be migrated in both directions without conditions. When using rule-set providers, specific DNS options, new protocol parameters, traffic sniffing, or extended rule types, follow the target core’s current documentation. Handing a mihomo configuration directly to an old original core most commonly results in unknown fields, failed proxy-group references, or rule-provider loading errors.

A Desktop Client Is a Shell, Not Another Name for the Core

Windows, macOS, and Linux users usually encounter a graphical client first. The client combines configuration files, the core process, the system proxy, and the tray menu in one interface, but it remains a separate layer from the core. A client update may change only the interface and platform integration; a core update may change protocol, DNS, or rule behavior. Release notes that list application and core versions separately are a direct reflection of this layered design.

Clash Verge Rev

Clash Verge Rev is a cross-platform desktop client commonly used on Windows, macOS, and Linux. Built around mihomo, it provides subscription management, proxy switching, system proxy controls, TUN, connection history, and logs. Rev in the name indicates a community continuation project; it should not be confused with similarly named historical projects that have different maintenance statuses.

These clients suit desktop environments where multiple configurations need visual management. During installation, check both the operating system and processor architecture, such as Windows x64 versus ARM64 or Intel versus Apple silicon on macOS. An architecture mismatch is an installer-selection issue and has nothing to do with whether the subscription is valid.

Clash Nyanpasu

Clash Nyanpasu also operates at the desktop graphical layer, offering configuration management, core control, and system integration. It can use similar subscription content to Clash Verge Rev, but the interface, configuration storage, upgrade process, and platform details differ. The two are generally alternatives; running both at once is not necessary to “complete” the feature set.

ClashX Names

The macOS ecosystem has long included similarly named projects such as ClashX, ClashX Pro, and ClashX Meta. Their maintenance sources, core combinations, and licensing models are not identical. When you encounter one, also check the repository source, latest release, core type, and supported macOS architectures. The presence of “X” or “Meta” alone cannot tell you whether a project is still suitable for your current system.

When moving between desktop clients, avoid copying the entire application data directory. Besides YAML files, it may contain databases, window state, service permissions, system-proxy backups, and old core files. A more reliable approach is to keep the subscription URL and verified local override rules, import them again in the new client, and then restore TUN, DNS, and launch-at-startup settings one by one.

How Mobile, Router, and Web Panel Implementations Differ

Mobile projects must package a core while also complying with the system’s VPN APIs and background-execution limits. Android clients generally use a local VPN service to route app traffic into the core, which is why the status bar shows a VPN connection. Here, VPN refers to the system traffic entry point; it does not mean that the subscription nodes necessarily use a traditional VPN protocol.

Android Clients

Clash Meta for Android was once a common Android implementation of the Meta line, and many older guides still show its interface. To decide whether it remains suitable, check the project’s maintenance status and the core’s update history. Cross-platform projects such as FlClash can also run on Android and use a modern Clash-family core to process configurations. App data directories and local backup formats are usually not interchangeable, but a standard subscription URL can be imported again.

If only the browser works on Android while some apps cannot connect, check per-app routing, bypass lists, VPN permission, battery-saver restrictions, and the IPv6 path. If every domain fails, start by checking DNS logs and the configuration parsing result. Mobile issues should not be addressed simply by changing nodes repeatedly, because system restrictions and core configuration belong to different layers.

iOS and iPadOS

iOS requires system mechanisms such as Network Extension to capture network traffic, while app distribution and background resources are also constrained by platform rules. The market includes network tools that can read some Clash-style configurations or subscriptions, but their names, cores, and compatibility ranges differ. Supporting proxy groups alone does not make a tool part of the original Clash project.

Before importing, confirm whether the app supports a complete Clash YAML file, a node list produced by subscription conversion, or its own configuration format. If a subscription uses mihomo-specific rules and DNS fields, a mobile app may ignore, convert, or reject them. In that case, prepare the format required by the target app instead of repeatedly importing the same desktop configuration.

OpenClash and Router Deployment

OpenClash is a management and integration project for the OpenWrt environment. It downloads and starts the core, generates runtime configuration, integrates with the firewall, handles DNS forwarding, and provides a management page. Actual traffic is still handled by the selected core. OpenClash, mihomo, and OpenWrt represent a management plugin, a proxy core, and a router operating system respectively; none can replace another.

Router deployment adds LAN forwarding, policy routing, transparent proxying, and DNS hijacking beyond what a desktop client requires. A node shown as available in the client does not mean the router path is correct. If LAN devices cannot connect, mainland-China domains resolve incorrectly, or some devices repeatedly reconnect, check the core logs, DNS upstreams, IPv4 and IPv6 rules, firewall chain, and bypass-router gateway settings in that order.

Web Control Panels

Web panels such as Yacd and MetaCubeXD read proxy groups, connections, and logs through a control interface. They are user interfaces, not proxy cores. Closing the browser page usually does not stop the proxy service; conversely, an open panel does not prove that the core has correctly captured traffic. When a panel cannot connect, check the control address, listening scope, authentication key, and firewall instead of changing the node protocol.

Why the Same Subscription Behaves Differently Across Projects

Successful import only means that the client received some content; actual operation still requires configuration parsing, resource downloads, DNS initialization, local listener setup, and system traffic capture. Projects use different defaults at these stages, so the same subscription can produce different results on two devices.

  1. Different core versions: Newer rule types, protocol parameters, or DNS fields may not be recognized by an older core.
  2. Different client overrides: A client may automatically change the port, control interface, TUN, DNS, or configuration directory.
  3. Different rule resources: If a remote rule set fails to download, policies may lack key matches; the logs usually show a provider error.
  4. Different system entry points: Desktops use the system proxy, mobile devices use a local VPN, and routers use transparent proxying, so the capture scope naturally differs.
  5. Different DNS paths: System DNS, core DNS, browser Secure DNS, and router forwarding may coexist, so the final query does not necessarily reach the same resolver.
  6. Policy selections are not synchronized: The default proxy group in the configuration may differ from the selection saved on an older device, so recheck the active policy after importing.

For troubleshooting, start with the shortest path: confirm that the configuration parses, select a known-working node, temporarily disable extra overrides, keep only the necessary DNS and rules, and test the core’s listening port. After a direct core test succeeds, enable the system proxy or TUN. This separates configuration, core, and system-capture issues.

Check in this order:
1. Does the subscription return YAML successfully?
2. Has the core finished parsing the configuration?
3. Are proxy and rule resources loaded?
4. Has the local listening port been established?
5. Is the system proxy or TUN capturing traffic?
6. Are DNS queries following the expected path?
7. Are rules matching the intended proxy group?

Start with the log level set to info and observe configuration loading, DNS, rule sets, and connection errors. Increase verbosity only temporarily when tracing a specific request, so repeated entries do not obscure key errors. When adjusting rules, DNS, or TUN, change only one variable at a time and keep a recoverable copy of the original configuration.

Choose a Project by Maintenance, Platform, and Configuration Needs

When choosing a Clash-family project, verify its maintenance status first, then the platform and architecture, and finally whether the required features are provided by the corresponding core. Similar project names, prominent search results, or a large number of old tutorials cannot replace these checks.

Use case Required project layer What to check
Windows, macOS, or Linux desktop Desktop client with mihomo core OS version, processor architecture, and TUN permissions
Android phone or tablet Mobile client with local VPN integration Maintenance status, background restrictions, and per-app routing
iPhone or iPad A network tool compatible with the platform’s system mechanisms Configuration format, distribution method, and field compatibility
OpenWrt router OpenClash, the core, and firewall integration Device architecture, storage space, DNS, and IPv6
Headless Linux server mihomo command line and service management Configuration path, run user, ports, and logs

If the goal is simply to proxy desktop browsers and ordinary applications, an actively maintained desktop client usually requires fewer manual steps. If you need to capture games, command-line programs, or software that ignores the system proxy, evaluate TUN. To apply routing consistently across a local network, consider a router deployment, but make sure you can troubleshoot firewall and DNS issues. A server usually does not need a desktop shell; running mihomo directly under systemd is clearer.

Configuration migration should center on standard YAML, subscription URLs, and self-managed rules rather than a client’s internal database. Record core-specific fields separately and confirm that the next project supports them. When following an older guide, first verify its project name, publication date, and core era before deciding which steps still apply.

A Practical Method for Reading the Ecosystem Map

When you encounter a new project name, locate it with four questions: Does it include a proxy core? Is that core original Clash, the former Meta line, or mihomo? Does it capture traffic through the system proxy, TUN, a local VPN, or a router firewall? Is its configuration standard Clash YAML, an extended format, or an independent format? Once all four answers are clear, the project’s place in the ecosystem is usually clear as well.

The Clash ecosystem continues through cooperation among many independent projects. mihomo provides modern core capabilities; desktop and mobile clients handle platform interaction; OpenClash handles router integration; Web panels provide remote control; and subscription and rule projects provide configuration data. They can be combined, but their release schedules, maintenance teams, and compatibility boundaries remain independent. Check each layer when choosing a setup and trace the data path step by step when troubleshooting—it is more accurate than calling every component a “Clash client.”

Continue with Installation and Configuration

Choose a client by operating system and processor architecture first, then verify the core type, subscription format, and system traffic-capture method.

Download Clash