Choosing a Client 10-minute read

Clash, mihomo, and Clash Verge Rev Explained: A Guide to the Project Lineage

From the archived original Clash core to mihomo and today’s desktop clients, understand how the projects relate and how to choose between them.

First, distinguish the core, the client, and the subscription

Search for a Clash client for Windows and you’ll often see Clash, Clash Meta, mihomo, Clash Verge Rev, and Clash for Windows mentioned together. These names refer to different layers of the stack. Identify which project handles network connections and which provides the interface, then check config compatibility. This helps prevent you from following an old guide’s instructions for buttons that no longer exist in your client.

LayerExamplesWhat it does
Proxy coreClash、mihomoListens on proxy ports, resolves DNS, matches rules, and opens outbound connections.
Desktop clientClash Verge RevManages configs, switches proxy groups, displays logs, and handles the core process and system integration.
ConfigurationSubscription-provided YAMLProvides proxies, proxy groups, rules, and possibly settings such as DNS.

Think of a connection as three steps: an app sends traffic to the local proxy, the core selects an outbound route based on the config, and the client displays the running status. The client does not provide working proxy nodes. After installing it, you still need to import a subscription you’re authorized to use or configure it manually.

Project lineage: from Clash to mihomo

Original Clash and Clash Premium

Original Clash is a Go-based proxy core created by Dreamacro. Many desktop clients manage it by launching the core process and calling its control API. Clash Premium was a separate core release line from the same period, with features not available in the original open-source core, but its complete source code was never released. When reading older guides, don’t assume the Clash Premium feature list applies to the open-source version of Clash.

Around November 2023, the original project stopped being publicly maintained, and its repositories and release channels changed. People often refer to this period as the “archiving” of the original project, but it involved repository removals, preserved mirrors, and third-party backups—not every release channel was simply switched to read-only. Older builds may still run, but without maintenance you can no longer count on the original maintainers for compatibility fixes or security updates.

Clash.Meta and mihomo

Clash.Meta began as a core fork in the Clash ecosystem and was later renamed mihomo. It is maintained by the MetaCubeX community. Clash Meta, Clash.Meta, and “Meta” in some program filenames often refer to this project lineage in older documentation. The rename didn’t mean a sudden switch to an unrelated config system, but supported features still depend on the core version in use.

mihomo retains Clash-style YAML configuration, proxy groups, and rules while expanding protocol and network-handling support. For example, a config with a type: hysteria2 proxy requires a core that supports that protocol. Simply renaming an old client’s interface to “Meta” won’t add protocol support. If you see an error such as unsupported proxy type, check the core’s capabilities first rather than repeatedly changing the subscription URL.

  • Origins: Clash is the original core project; Clash.Meta is one of the forks that developed from it.
  • Name change: mihomo is the name adopted by Clash.Meta in its later development. The old name may still appear in guides and settings.
  • Maintenance: Community-led development does not mean the original author has resumed maintenance, nor that every product with “Clash” in its name comes from the same team.

How Clash Verge Rev and the core work together

Clash Verge Rev is a desktop client that continues the Clash Verge interface project and uses mihomo to handle proxy connections. It is neither another name for mihomo nor a “Windows edition” of the original Clash. Installers typically bundle the interface and its companion core, so you can import a config, start the proxy, and view logs from one window.

In Clash Verge Rev, you can follow the sidebar path “Profiles” to import a subscription, “Proxies” to select a proxy group, and “Logs” to check connection errors. Button labels and settings groups may change between versions, but these pages have fairly consistent roles. To enable the system proxy or TUN mode, open “Settings” and check the relevant toggle. Don’t confuse selecting a node on the Proxies page with enabling traffic capture.

Action or symptomLayer involvedCheck first
Subscription import button does nothingClientInterface messages, subscription request, and config parsing errors.
Proxy protocol not recognizedCoreCore version and support for the relevant protocol.
Browser works, but some apps can’t connectTraffic captureWhether the app follows the system proxy, and whether TUN is needed.
Connection routed through the wrong proxy groupConfig and rulesActive config, rule order, and selected proxy group.

Clash for Windows is a separate desktop client, often abbreviated to CFW. It is not a catch-all term for every Clash client on Windows, nor an old name for Clash Verge Rev. Older CFW guides may refer to pages such as Profiles, Proxies, and General. When switching clients, find the equivalent feature instead of copying old file paths or service installation steps.

Config compatibility: similar YAML doesn’t mean drop-in compatibility

A similar basic structure makes migration between clients relatively straightforward. Common configs include fields such as proxies, proxy-groups, and rules. But newer protocols, rule extensions, DNS options, and client-specific overrides can all introduce differences. Also distinguish between a subscription that provides a complete config and one that returns only a list of proxies: the latter usually needs a client template to add proxy groups and rules.

Check the minimum settings first

This snippet illustrates how the fields relate; it does not include proxies or proxy groups and should not replace an existing complete config. 7890 is the mixed proxy port used in this example, not a universal default. Use the listening port shown in your client’s “Settings” instead.

mixed-port: 7890
allow-lan: false
mode: rule
log-level: info
  • mixed-port: Accepts both HTTP and SOCKS proxy connections on the same port.
  • allow-lan: false: Does not expose the proxy to devices on your local network. Keep this restriction if you’re only using it on this device.
  • mode: rule: Selects a route based on rules; it does not send every connection through a remote proxy.
  • log-level: info: Keeps standard logs available for checking config loading and runtime issues.

Distinguish the original subscription from the active config

Before starting the core, a client may merge settings for ports, DNS, TUN, extra rules, or script processing. As a result, the value in the subscription file may differ from the one actually in use. When troubleshooting, check the client’s active config or config preview and confirm the details in the logs. Don’t rely only on the original YAML downloaded to your computer.

The control API is not a proxy port. external-controller sets the listening address for the core’s control API, which the client uses to read status and switch settings. If you enable the API yourself, bind it to 127.0.0.1 and set a secret. Don’t expose it on every network interface just to fix a client connection issue. Never include subscription URLs, control secrets, or proxy credentials in public screenshots.

Choosing a Windows client: consider how you need to route traffic

For most Windows users, choose a desktop client that is actively maintained, clearly identifies its core, and has accessible documentation. Don’t compare clients by screenshots alone, or assume that “built-in mihomo” will automatically fix every network issue. The system proxy, TUN, and service mode each solve different problems.

  1. Start by testing the basic connection with the system proxy. Import a config, choose a working node, enable the system proxy, and visit the site you want to reach. Only apps that follow the system proxy setting will use this route.
  2. Then decide whether you need TUN. Some games, command-line tools, and apps with their own proxy settings don’t follow the system proxy. TUN captures traffic through a virtual network interface and routing, but its actual coverage also depends on route exclusions, DNS settings, and app behavior.
  3. Install service mode if the client requires it. Service mode typically helps perform tasks that need elevated permissions, such as managing a virtual network adapter or routes. It does not provide proxy nodes or replace a subscription.
  4. Keep the logs accessible. Make sure you can check core startup errors, DNS errors, and rule matches. Being able to pinpoint a problem matters more than adding toggles.

In Windows PowerShell, run the command below to check whether a process is still using the example port. The last column shows the process PID. A listening entry only means that a program has the port open; it doesn’t prove that the program is the client currently on screen.

netstat -ano | findstr ":7890"

If your client uses a port other than 7890, replace the number in the command with the actual port shown in Settings. Then open Task Manager → Details and find the process by PID. Quit the relevant program normally, then try starting the new client again. This is usually a clearer way to identify the cause than repeatedly changing ports.

Migration checklist: switch from an older client to a mihomo client

The goal isn’t to copy the old software’s entire directory, but to restore a working config and verify how the new client captures traffic. Old caches, databases, and service registrations usually shouldn’t be moved directly into another client.

  1. Record your current setup. Save the subscription URL, any manually added rules, selected proxy groups, and local port. Keep backups on your device and remove credentials before sharing them.
  2. Disable traffic capture in the old client. Turn off its startup entry, system proxy, and TUN, then quit the app. If you need to remove its service, use the uninstall option provided by that client.
  3. Import the subscription again. Import it from the new client’s “Profiles” page. Check for YAML parsing errors and unsupported proxy types, then activate the config.
  4. Test in stages. Check the system proxy first, then rule mode, and finally TUN. Change one setting at a time so you can use the logs to identify what changed.
  5. Check your network after quitting. Exit the new client, confirm that Windows proxy settings have been restored, and check that your usual apps can connect. If something is wrong, first look for leftover proxy settings or routes.

Keep these three relationships in mind: Clash is where the project history began, mihomo carries the core forward and expands its capabilities, and Clash Verge Rev provides a graphical interface for managing them. When choosing a client, check its maintenance status; when following a guide, check the interface names; and when checking compatibility, check the core version. That turns the question “What is this software called?” into “How should it be configured on this Windows device?”

Download Clash