Clash started as an open-source rule-based proxy core written in Go, and its design — describing every behavior in one YAML config — earned it wide adoption in the tech community. After the original repository was archived, the community fork Clash.Meta continued development and was renamed Mihomo, becoming the de facto standard core today: broader protocol support, more rule types, and a more complete TUN implementation. Every major GUI client has switched over to it.
GUI clients and the core operate on two separate layers: the core handles protocol handshakes, rule matching, and traffic forwarding, while the client handles subscription management, the interface, and system integration. Clash Plus, Clash Verge Rev, FlClash, and similar clients are each developed and maintained independently, but they all read the same YAML config format — meaning subscriptions and rules move directly between clients, so switching clients doesn't mean relearning your configuration.
Code for the core and every client lives in public repositories, with commit history, issue discussions, and releases visible to anyone. Updates are community-driven: the core team fixes protocol and rule implementations, while client teams track core versions and iterate on the interface. The version info and installers on our download page mirror each project's official release channel — nothing here is modified before distribution.
The config format is plain-text YAML, which brings one practical benefit: any configuration problem can be traced back to exactly what a specific line says. You can back it up, diff it, and walk through it line by line in an article. Every guide and troubleshooting article on this site is built around this format, so you can follow along directly with your own config file.