Project history: from rule-based proxy cores to a multi-client ecosystem
Clash first became widely used as a rule-driven proxy core with a structured configuration format. Around these capabilities, the community built desktop, mobile, and command-line clients. Different clients share concepts such as proxy nodes, policy groups, rules, DNS, and system proxies, but their interfaces, maintenance status, platform support, and extension capabilities are not identical. “Clash” therefore usually refers to a configuration and usage ecosystem, not one installer covering every platform.
Some early clients are no longer maintained, but they may still appear in searches because of older guides and legacy configurations. When choosing a client, put its current maintenance status, system support, and configuration compatibility ahead of interface preferences. The download center labels maintained and archived clients separately so names from old tutorials are not mistaken for the current first choice.
Open-source ecosystem: separate layers for code, configuration, and GUI clients
Open-source code lets the community inspect core behavior, configuration fields, and issue reports, while enabling different developers to build graphical interfaces for each platform. GUI clients handle profile management, system-proxy switches, tray actions, logs, and installation updates; the core reads YAML, establishes connections, matches rules, and handles DNS and TUN. When something fails, first identify whether the problem is in the interface, configuration, core, or system network layer. That is more effective than repeatedly reinstalling.
Subscription services are separate from the client itself. The client reads the configuration and executes its nodes, policy groups, and rules; the configuration source maintains the subscription content. Check the source for inactive nodes, subscription access, or traffic status. YAML parsing errors, occupied ports, a disabled system proxy, and TUN permission issues are better investigated through client logs and system settings.
Core relationship: Mihomo continues and expands common configuration capabilities
Mihomo is a common open-source core implementation in the current Clash ecosystem. It preserves core concepts such as rules, policy groups, DNS, and proxy protocols while continuing to expand configuration fields and runtime capabilities. Whether a client uses Mihomo, which fields it supports, and how it applies overrides depend on that client’s documentation. Copying every field supported by one core into an older client does not guarantee that the configuration will parse.
The site’s configuration references focus on general YAML structures and commonly used Mihomo fields, while explaining dependencies between fields. Before editing, keep a recoverable copy. Change one related group of fields at a time, then use the logs to confirm that the configuration loads. Changing ports, DNS, TUN, rules, and policy groups all at once makes the source of an error difficult to locate.
Update model: handle client versions and configuration updates separately
Updating the client program and updating a subscription configuration are separate paths. A program update may change the core, interface, or system compatibility; a subscription update mainly refreshes nodes, policy groups, and rules. When connections fail, do not treat “update subscription” and “upgrade client” as the same step. First confirm that the current profile parses, then check the client’s maintenance status and system compatibility before deciding whether to migrate.
The download page parses the current file links from a unified manifest, and version slots appear only when the manifest provides valid information. The homepage does not show version numbers, avoiding the impression that one client’s program version is a single version for the entire Clash ecosystem. Documentation is continually organized by configuration concepts, platform differences, and issue types for reference after installation.