clash / oss-hubClash Open Source Hub · Cross-Platform Client Downloads
PublicDownload and documentation hub for an open-source, rule-based proxy client. Covers installers for Windows, macOS, Android, iOS, and Linux, plus subscription import and TUN mode setup, tutorials, and a troubleshooting handbook.
Core Features
These five documents map to Clash's five core capabilities. Click a filename on the left to see its explanation and a real config snippet on the right.
rules.md
Clash matches every new connection against the rules section of the config file, in order: DOMAIN-SUFFIX checks the domain suffix, DOMAIN-KEYWORD checks for a keyword match, GEOIP checks the destination IP's country, and MATCH is the catch-all placed last. The first matching rule wins, so earlier rules take priority. Unlike blanket global proxying, rule-based routing lets local-network and frequently-visited direct-connect sites skip the detour while domains that need a proxy route through one precisely. Rules can come from a subscription's built-in list, local additions, or remote rule-providers sets—changes take effect via hot reload without restarting the client.
rules:
- DOMAIN-SUFFIX,github.com,PROXY
- DOMAIN-KEYWORD,google,PROXY
- GEOIP,CN,DIRECT
- MATCH,PROXY
tun-mode.md
System proxy settings rely on each app reading and respecting them—command-line tools, games, and plenty of desktop software simply ignore them. TUN mode creates a virtual network adapter at the OS level, intercepting all outbound traffic at the network layer and handing it to the Clash core for rule processing, covering apps that don't honor the system proxy as well. Toggle it from the TUN / virtual adapter switch in the client's settings page—Windows needs to install a service as administrator on first use, while macOS and Linux will prompt for a one-time system authorization. DNS hijacking paired with fake-ip prevents DNS leaks and is the default combination for full system-wide takeover.
tun:
enable: true
stack: system
auto-route: true
dns-hijack:
- any:53
subscription.md
A subscription is a URL that returns a complete YAML config—nodes, policy groups, and rules all come from it. Paste the link into the client to import it, and set an auto-update interval so that whenever the provider changes its nodes, the client pulls the new config automatically without manually replacing any file. Multiple subscriptions can coexist and be switched independently. If an update fails, open the subscription link directly in a browser first to confirm it returns YAML text rather than an HTML error page, then check whether the link has expired or needs a subscription-conversion service to adapt the format. This site's troubleshooting handbook has an entry for every error type.
# Manually verify the subscription response
curl -A "clash" -sL "https://example.com/sub?token=xxxx" | head -n 20
# Should output YAML, e.g. a block starting with proxies: / proxy-groups:
policy-group.md
A policy group organizes multiple nodes into a logical unit that rules can reference. A select group is chosen manually by the user; a url-test group periodically pings every node in the group and automatically switches to the fastest one; a fallback group checks availability in order and falls back to the next node if the preferred one fails; a load-balance group spreads connections across multiple nodes. Rules reference a policy-group name rather than a specific node, so when nodes change you only adjust the group's members—no rule line needs editing. This is the core mechanism behind Clash's config maintainability, and what sets it apart from a simple proxy toggle.
proxy-groups:
- name: AUTO
type: url-test
url: http://www.gstatic.com/generate_204
interval: 300
proxies: [node-a, node-b, node-c]
dashboard.md
The Clash core exposes a RESTful API via external-controller, which web dashboards use to switch nodes, run latency tests, view connections, and stream logs. Desktop clients usually include a built-in dashboard entry point, or you can open the local port directly in a browser with a third-party dashboard like metacubexd. The most useful page when troubleshooting is Connections—each active connection shows the rule it matched and its exit node, letting you confirm at a glance whether a domain went direct or through a proxy; the Logs page combined with log-level: debug shows the full DNS resolution and rule-matching process.
external-controller: 127.0.0.1:9090
secret: ""
# Open the dashboard in a browser and enter the address above to connect to the core
Get the Client by Platform
Each of the five platforms maintains its own build. Click a platform card to jump to its section on the download page—every platform offers multiple client choices, with system requirements and install instructions.
Open-Source Ecosystem & Update Model
history.md
Clash was open-sourced in Go in 2018, and its rule-based routing and YAML config became the de-facto configuration standard in this space. After the original core was archived, the community fork mihomo (formerly Clash Meta) took over maintenance, adding more proxy protocols, DNS strategies, and TUN stack implementations while staying compatible with the original config format. Today, nearly every mainstream GUI client across platforms runs on the mihomo core under the hood.
ecosystem.md
The ecosystem has two layers: the core handles protocol implementation, rule matching, and traffic forwarding, while clients like Clash Verge Rev, FlClash, and Nyanpasu handle subscription management, the interface, and system integration—all developed under open-source licenses with publicly auditable code. The same config file works across different clients, so switching clients doesn't mean redoing your setup.
releases.md
The core and each client publish releases in their own repositories on independent schedules. Version numbers and installer links on this site's download page are driven by a version manifest—once the manifest updates, the page follows automatically, so there are no stale, manually-maintained links. Clients that are no longer maintained are clearly marked as archived, with an actively-maintained alternative suggested.
Clone the Core Repository
Developers can clone the mihomo core source directly to build it locally or review the protocol implementation:
git clone https://github.com/MetaCubeX/mihomo.git
Regular users don't need to touch the source code—just grab the GUI client for your platform from the download page; the core ships bundled with it. To understand what the core's parameters mean, check this site's full documentation and glossary.
Frequently Asked Questions
- Subscription update failing?Open the subscription link directly in a browser first to confirm it returns YAML rather than an error page, then check its expiry and format.See the troubleshooting steps →
- Proxy is on but sites still won't load?Check in order: node latency → rule match → DNS → system proxy.See the checklist →
- TUN mode or system proxy — which one?System proxy is fine for browser use; command-line tools and games need TUN's network-layer takeover.Check the glossary →
- Getting a port 7890 already in use error?Find the process holding the port, or just change
mixed-portin the client.See the commands →
Latest Technical Notes
Clash Connected But Sites Won't Load: A Step-by-Step Checklist From Node Latency to DNS
The proxy toggle is green but the browser just spins—the culprit could be the node, a rule, DNS, or the system proxy. Nine checkpoints, ordered from easiest to hardest.
Read More →Clash Says the Port Is In Use: Finding the Process on Port 7890 and Changing the Mixed Port
A startup error like bind: address already in use means the default port is taken. Commands to find the culprit process on all three platforms, plus the full steps to change mixed-port.
Read More →A Quick Tour of the Clash Client Interface: What the Proxies, Profiles, and Logs Tabs Each Do
It's easy to get lost in an unfamiliar interface the first time you open the client. A section-by-section walkthrough of what nodes and policy groups, subscription management, and connection logs are for, and where to find the controls you'll use most.
Read More →