ClashX is for macOS; other operating systems require a compatible client from the Clash ecosystem. Before installing, check your processor architecture and system requirements. Interfaces, permission prompts, and config override behavior vary by client, so menu steps from one platform may not apply to another.
Windows
Start with Clash Plus, or compare Clash Verge Rev, FlClash, and Clash Nyanpasu. Before migrating an existing config, quit the old client and disable any leftover system proxy to prevent competing processes from binding the same port.
Choose an installer for Apple Silicon or Intel, then pick a client that fits how you use the macOS menu bar. ClashX Meta is an archived, unmaintained option. For a new installation, compare Clash Plus, Clash Verge Rev, and FlClash.
Choose an installer for your device architecture. Import a subscription before allowing the VPN connection. If the connection drops in the background, check battery optimization and background activity permissions. If another VPN is running, decide which connection to keep.
Open the Clash Plus App Store page from the downloads page; its official site is clashplus.io. After installing, import a trusted subscription and authorize the VPN configuration. Desktop system proxy toggles are not part of this workflow.
For desktop Linux, choose Clash Verge Rev or FlClash and select a package for your distribution. Server and router users can deploy the mihomo core separately, but must manage the config directory, service permissions, and listening address themselves.
First make sure the config loads, then check how traffic reaches the core and matches rules. The topics below follow the setup workflow. Select an item to see where to configure it and how clients differ; manually switching items stops autoplay.
Import a subscription
Routing rules
TUN mode
Menu bar controls
Live logs
LAN sharing
Importing subscriptions: check the response first
A subscription provides nodes, proxy groups, and rules; installing a client does not create a working connection by itself. In the client’s Config or Subscription page, choose the option to import from a URL. Save it, run an update, and set it as the active config. If parsing fails, check that the response is compatible YAML rather than a login page. Clients handle subscription conversion, request headers, and update intervals differently, so whether a link imports successfully depends on the active core’s parser. Subscription URLs often contain credentials; never post them in public logs.
Routing rules: understand modes and proxy groups
Rule mode selects an outbound route based on the destination domain, address, or process, allowing direct and proxied traffic to coexist. Choose Rule in the client’s mode menu, then select a node for groups such as Proxy on the Proxies page. A rule matches a group name, not necessarily a specific server; changing the node within a group does not change rule order. Group interfaces vary by client, but compatible cores still evaluate the config from top to bottom. If a site uses the wrong route, check the matched rule in its connection details before switching the entire client to Global mode.
TUN: route traffic that ignores the system proxy
Some games, command-line tools, and apps do not use the system proxy. In those cases, consider TUN. Enable enhanced mode in the client’s network settings, install its service or grant the requested permissions, then check that routing and DNS work as expected. TUN does not improve node performance and is not suitable for every network. Clients differ in service installation, virtual adapters, and route exclusions, so do not assume the same toggle state will work everywhere. If TUN conflicts with a corporate VPN or container network, disable it to retest before adjusting exclusions.
Menu bar controls: quicker access to settings
ClashX controls are in the macOS menu bar, where the icon menu lets you switch the active config, proxy mode, and proxy group. Make sure the core has loaded the config before enabling the system proxy. Before quitting, check whether you need to restore the system’s network settings. Compared with clients built around a standalone window, the menu bar takes up less screen space, but connection details and complex rule editing may require another page. When switching clients, use the actual menu labels: Global mode and Set as system proxy are not the same feature.
Live logs: pinpoint where a connection fails
Logs help distinguish config parsing failures, DNS lookup issues, and upstream connection errors. Check startup messages on the client’s Logs page, then visit a site and compare the records and connection details from the same time. Keep the log level at info for everyday use; increase detail temporarily when troubleshooting. Some clients filter core logs or record interface errors separately, so check the config update result too. Before sharing diagnostic logs, remove subscription URLs, credentials, node addresses, and personal browsing history. Include only the context needed to show the error.
LAN sharing: check the listener and firewall
A phone or TV can use your computer as an explicit proxy, but it must be able to reach the computer’s LAN address. In the client settings, enable Allow LAN, confirm the listening address, then enter the computer’s address and mixed port on the other device. Enabling allow-lan does not open the firewall or route all traffic from the device through the proxy. Clients may override the bind address in the config, so check the runtime settings. Share only on trusted networks, restrict the source subnet, and add authentication if needed. Never expose the listening port to the public internet.
DNS: first check which component handles lookups
DNS resolution affects rule matching and connection setup, and a browser’s Secure DNS may change the lookup path. Before making changes, check whether the dns section enables core DNS, then see whether the client has its own DNS override. With TUN enabled, also confirm that DNS interception works with the routing setup. Clients may use different default resolution strategies, so the same imported subscription can produce different results. If a domain fails but its IP address works, record the actual lookup result and logs, then check upstream resolvers one by one instead of repeatedly switching nodes.
Config overrides: keep local changes
Editing a downloaded subscription file directly can mean losing your changes on the next update. To pin a port, add rules, or change DNS, first check whether the client supports overrides, merges, or extension configs, then put local changes in the appropriate place. Merge order and array handling vary: some clients replace an entire section, while others support appending. After saving, inspect the effective runtime config to confirm rule order and proxy group names, then update the subscription to verify your changes remain. Back up local overrides separately before moving to another client.
Rule syntax: specific conditions first, fallback last
Custom rules let you change the route for a small number of destinations. In the config’s rules list, use types such as DOMAIN-SUFFIX and keep MATCH at the end as the fallback for unmatched requests. The target policy name must match an existing proxy group; putting MATCH first can prevent later rules from taking effect. Some clients offer a visual rule editor, while others require an extended config. Either way, check the generated rule order. Proxy in the example is just a group name; replace it with a group that exists in your config and verify the result in the connection details.
Mixed port: one entry point for HTTP and SOCKS
The mixed-port setting accepts both HTTP and SOCKS proxy connections on one listening port. 7890 is common, but not every client uses it by default. Check the actual value in the client’s port settings or runtime config before entering the proxy address in a terminal or another app. If startup reports that the address is already in use, quit the other listening process or choose another port and update the apps that use it. Client settings may override the YAML file, so do not rely on the original subscription alone. For local use, listening on the loopback address is sufficient.
Get a subscription URL from a trusted source and note the current system proxy setting. For the first connection, change only what you need: start with Rule mode and the system proxy, then confirm websites load before considering TUN or LAN sharing for specific apps.
Step 01 / Install
Choose a platform and architecture
Check the system requirements on the downloads page, then install the version for your processor architecture. On first launch, make sure the config directory is writable and quit other proxy clients. Read permission prompts carefully; do not grant broader system access to fix an ordinary import error.
Step 02 / Import
Import and activate a config
Paste the subscription URL on the Config page and wait for the update to finish, then set it as the active config. Check that proxy groups appear and contain selectable nodes. If the list is empty, review the subscription update result. Turning on the system proxy will not restore missing config data.
Step 03 / Verify
Enable the proxy and verify rule matching
Select Rule mode, choose a node for the proxy group, then enable the system proxy. Visit a site and check the matched rule and outbound route in its connection details. Test a destination that should connect directly as well. After the browser works, check proxy settings separately for terminals and other apps.
ClashX is a macOS menu bar client, while the Clash ecosystem also includes graphical clients for other operating systems. Clients handle config imports, the system proxy, permission prompts, and the user interface; the mihomo core handles protocol connections, rule matching, and network traffic. Not every legacy client with Clash in its name includes mihomo, and the interface alone does not reveal which protocols it supports.
Clash Meta was a former name for this core branch, which later continued development as mihomo. Project names, config fields, and menu screenshots in older guides may not match current clients. When consulting documentation, check which core is actually running and whether the client is maintained. In particular, distinguish the historical behavior of archived projects from the capabilities of actively maintained ones.
Open-source code and license scope
The mihomo source repository makes its implementation, issue history, and release notes public and is licensed under GPL-3.0. This license applies to the core project; it does not automatically cover every third-party client. Developers can review the source and config documentation to understand behavior. When choosing a client, users should also read that project’s system requirements and maintenance notes.
Public source code makes implementation review possible, but it does not replace evaluating a subscription service. The client itself does not provide nodes, and node operators, subscription content, and local apps have separate trust boundaries. Before using configs with remote rule sets, scripts, or external control settings, verify their purpose. Limit access to management interfaces and never include credentials in public screenshots.
Record a recoverable setup before updating
Client updates, core updates, and subscription updates are separate. Updating a subscription changes nodes and rules; it does not update the client. A client update may preserve local overrides. Before updating, back up the config and extended rules, note the mixed port, listening address, TUN, and DNS settings, and read the change notes. Afterward, check that the config loads, the system proxy works, and one direct and one proxied destination connect as expected.
The downloads page lists client options and maintenance status; software release information is not fixed on the homepage. When features differ, first determine whether the client interface or the core provides them, then consult the appropriate client guide or core documentation. An unmaintained client may be useful for understanding an old config, but historical compatibility does not guarantee support on a current operating system. When migrating, preserve the subscription source and local rules rather than copying the entire old app directory.
Configuration notes / 05
Clash config guides and troubleshooting
Find instructions for the issue at hand. Change one thing at a time, keep a copy of the original config, and retest the same destination to determine whether the cause is the port, a rule, or an upstream connection.
Covers installing a graphical client on a Linux desktop, plus the full server-side process: placing the config, writing a systemd service, enabling startup, and accessing the panel.
Explains how mixed-port differs from separate HTTP and SOCKS ports, how to configure proxy addresses on phones, TVs, and game consoles after enabling LAN access, and what to check in the firewall.
Learn what latency test results actually mean, how traffic multipliers affect usage, and how regions and protocols influence reliability and access—so you can choose nodes for your needs.