Desktop app downloads and setup. From importing subscriptions to rule-based routing, configure the system proxy in the app, then fine-tune your network settings.
For everyday desktop use. Before installing, check your OS version and CPU architecture. Quit other proxy apps before enabling the system proxy. If a port is already in use, identify the process listening on it instead of reinstalling repeatedly.
Choose the installer for Apple Silicon or Intel. After launching for the first time, grant any permissions required by macOS. Import a configuration and test the system proxy first; if you need to route more apps, review the permissions required for the service component and TUN mode.
Phones and tablets need a mobile client; Clash Verge Rev is designed for desktop. Visit the download center to find available apps, import a compatible subscription, and approve the VPN request. For background connections, check your system's battery management settings.
Find the Clash Plus store listing for iPhone or iPad. The mobile interface differs from the desktop app, so confirm that your subscription format is supported before importing. When connecting, follow the system prompts to add a VPN configuration, then check your rules and proxy group selection.
Choose a desktop package that matches your distribution's format, and check its dependencies before installing. On a graphical desktop, use the client to manage configurations. For servers, routers, and other headless environments, see the Mihomo core section in the download center to configure the service and permissions separately.
The client, subscription, and proxy service are three separate things. Installing the client prepares the environment; the subscription provides configuration such as nodes, proxy groups, and rules; and an actual connection depends on the service being available. Choose an installer by operating system and architecture. When choosing a subscription, check its format and whether it supports the core features your configuration needs.
Migrating from another client? Export your existing configuration first and note its ports, proxy mode, and local changes. On the new client's first launch, enable just one configuration. Once you have a working connection, migrate your overrides and custom rules. If something goes wrong, this makes it easier to tell whether the issue is with the installation, subscription, or local settings.
Subscriptions, proxies, and rules
Browse individual parts of the interface by task. The switches shown here are illustrative; make changes in the client itself.
Configuration sourceRemote subscription / Local file
Configuration formatYAML
WorkflowImport → Select → Enable
Import subscriptions and switch configurations
Paste a subscription URL on the configuration page and import it. Once the download finishes, select the configuration, then review its proxy groups on the Proxies page. Unlike editing core files directly, the GUI shows subscription sources and the active configuration in one place, making it easier to manage several configurations for everyday use. A successful import doesn't guarantee a working connection: check the subscription format, node details, and proxy group selection. Remote updates may replace the original content, so manage rules you want to keep in local overrides. Hide personal identifiers in subscription URLs before sharing screenshots.
The system proxy directs apps that respect system proxy settings to the address the client is listening on. A mixed port accepts both HTTP and SOCKS connections; the example port here is 7897, but check the Settings page for the actual value. To get started, enable the system proxy and visit a website in your browser. Terminal tools and apps with their own proxy settings may need additional configuration. Compared with TUN mode, this approach has a more defined scope and is easier to troubleshoot when you're starting out. After changing the port, update proxy addresses in any apps that use it. Before quitting the client, make sure the system proxy has been restored.
In rule mode, connections are checked against the rules in the order listed, and the first matching rule usually determines how traffic is handled. The rule's proxy group then selects a specific node; these are separate steps. Instead of sending all traffic through one route, rules let you choose direct or proxied connections for different domains. When adding a rule, verify the target domain and make sure the named proxy group exists. Place specific rules before fallback rules. If a connection doesn't behave as expected, check the matched rule and proxy chain on the Connections page rather than judging by whether a website loads.
TUN mode handles traffic through a virtual network interface and is useful for apps that don't follow system proxy settings. The difference from a system proxy is how traffic is routed—not that TUN replaces subscriptions or provides nodes. Before enabling it, make sure a regular proxy connection works, then follow the client's instructions to set up the service component and grant the required permissions. Watch for routing conflicts if you also use another VPN, virtual network adapter, or corporate networking tool. If your connection drops, turn off TUN to compare, then check DNS, automatic routing, and interface selection. Change one setting at a time, and keep a record of the original settings so you can restore a working connection.
DNS determines how domain names are resolved and can affect rules that rely on destination IPs. Mihomo's DNS settings need to be understood alongside the way traffic is routed; changing upstream servers alone doesn't necessarily fix the problem. Fake-IP maps domain names to virtual addresses, unlike standard resolution, which returns real addresses. Before making changes, note the enhanced mode, upstream servers, and filters, then test with the same domain. If only some apps are affected, check their encrypted DNS settings and caches first. See Advanced Config for explanations of complex options and how they interact.
Interface / Connections and logs / Troubleshooting
ConnectionsDestination / Rule / Proxy chain
Log levelinfo
Troubleshooting orderTime → Destination → Error
Connection records and error diagnosis
Use the Connections page to check whether traffic reached the core and which rule it matched. Use the Logs page to investigate configuration loading, parse failures, and connection errors. These details help narrow down the cause more effectively than repeatedly switching nodes. Note when the problem occurred and the destination domain, reproduce it once, then find the corresponding record. If needed, temporarily increase the log level, then restore your usual setting when you're done to keep logs readable. Before reporting an issue, remove subscription URLs, credentials, and private browsing records. Include steps to reproduce the problem and what you've already tried.
Start with one connection path you can reproduce. Once the basics work, add overrides, rule sets, and TUN settings.
1
Import a working subscription
Install and open the client, go to the configuration page, and paste the subscription URL from your provider. Wait for the import to finish, then select the configuration. The URL must point to content compatible with the client; a web sharing link isn't necessarily a subscription URL. If you're using a local file, make sure it's a complete Clash YAML configuration, not just a list of nodes.
For your first test, keep just one configuration explicitly enabled. If parsing fails, check the field or line number in the error and review the indentation and format. Don't change the port, DNS, and rules all at once.
2
Choose a proxy group and enable the proxy
Open the Proxies page and make sure the subscription's proxy groups appear. Select a node for any groups that require manual selection. For your first run, keep rule mode and enable the system proxy in Settings. Proxy group names are defined by each configuration, and different subscriptions may organize them differently, so the name alone doesn't tell you which route traffic will take.
For now, test with a browser that follows system proxy settings. If an app has its own proxy options, make sure it isn't still pointing to a port used by an older client. Leave other traffic-routing features off for now so you can troubleshoot one layer at a time.
3
Verify the result on the Connections page
Visit the destination website, then open the Connections page and check the domain, matched rule, and proxy chain. A website loading only confirms that this particular visit completed; it doesn't prove that the request used the intended route. If the connection doesn't appear, check whether the app follows system proxy settings and whether the client is using the configuration you just imported.
If the connection appears but the visit fails, check the logs for DNS or connection errors. Test the same domain each time and change one setting at a time to determine whether the issue lies with a rule, node, or local environment.
A subscription URL retrieves a remote configuration; the configuration file is what the client actually reads. Remote updates fetch new content, while local files need to be maintained manually. Before converting formats, check whether your provider already offers a subscription compatible with the client. That helps avoid turning a complete configuration into a list of nodes only.
Rule mode and Global mode
Rule mode uses the rule list to decide how traffic is handled. Global mode typically routes traffic through the global proxy group. Both modes depend on working nodes and a valid configuration. Switching modes can help you compare behavior, but it doesn't replace checking rule order, proxy group selection, and connection records for the destination.
System proxy and TUN mode
A system proxy relies on apps supporting the relevant settings; TUN routes traffic through a virtual network interface. If your browser works but other apps don't, first check how each app connects. TUN involves permissions, routing, and DNS, so configure it only after a regular proxy connection is working.
Clash Verge Rev continues Clash Verge's desktop client approach, using a graphical interface to manage subscriptions, proxy policies, connections, and settings. To understand the project, distinguish the client interface from the proxy core: the configuration page manages configuration sources, the settings page handles desktop integration, and the core does most of the work of matching rules and processing network protocols. Buttons may have moved since older guides were written. When looking for a feature, start with what you want to do rather than clicking where it appeared in a screenshot.
Mihomo core and configuration compatibility
Mihomo is part of the Clash configuration ecosystem and provides features such as proxy protocols, proxy groups, rules, and DNS. The client brings these features into a desktop workflow, but not every configuration field has a corresponding toggle. Some settings come from the original subscription, others from the runtime configuration generated by the client, and local overrides may change either. If the configuration and interface don't match, first confirm which configuration is active, then check the merged result. When following a Clash Meta guide, also check how the core has evolved and which fields it supports; interface steps from different clients aren't necessarily interchangeable.
GPL-3.0 license and source code
The project is open source under the GPL-3.0 license. To understand how a feature works, start with the repository's documentation, source code, and issue history. If you modify or redistribute the code, read the license to understand your obligations. Open source means the code is available to inspect, discuss, and improve; it doesn't mean the software behaves the same in every network environment. Actual results depend on the operating system, service components, configuration source, and network conditions. When reporting an issue, clear reproduction steps and redacted logs are more helpful than simply saying “the connection failed.”
The client, core, and subscription update separately
Client updates, core updates, and remote subscription updates affect different layers. A client update may change the interface or desktop integration; a core update may affect protocols and configuration fields; a subscription update may change nodes, rules, or proxy groups. Before upgrading, keep a copy of your working configuration, read the release notes, and record local overrides, ports, and service settings. After updating, verify your existing workflow, confirm that rules match and apps connect as expected, then try new features. If only one subscription has a problem, inspect its configuration before rolling back every component.
For everyday use, go to the download center and choose an installer. Cloning the repository is for reviewing the implementation, contributing changes, or building the project yourself; it won't install the app automatically. Building from source also requires the toolchain, dependencies, and system environment described in the project documentation. Follow the repository's current build instructions.
Subscription content and local changes
Subscriptions typically include nodes, proxy groups, and rules; updates may replace their original content. If you need to keep custom routing rules, learn how the client handles overrides so you don't have to reapply changes after every update. The proxy group names referenced by rules must exist. When combining subscriptions, account for duplicate group names, repeated nodes, and rule order. After editing a configuration, make sure it loads successfully, then verify the actual match on the Connections page.
Troubleshooting notes and privacy
When troubleshooting, note your operating system, network connection type, active proxy mode, and when the error occurred. Configuration files and logs may contain subscription URLs, server addresses, credentials, and visited domains; redact each one before sharing publicly. A minimal configuration for illustrating a problem should include only the necessary fields. Never post your full private subscription in a public forum or leave temporary debugging settings in your everyday configuration.
Choose an article based on the problem: start with subscriptions if the format is unclear, YAML if a configuration won't load, or port troubleshooting if the app won't start.
Walk through the fields in general ports, dns, proxies, proxy-groups, rule-providers, and rules, in order, with examples of common indentation mistakes.
For users who have imported a subscription and are ready to inspect the raw configuration. Start by identifying top-level fields and list nesting, then determine whether you need to change a listening port, DNS behavior, or a rule reference. Avoid copying a snippet without its related settings.
Learn how to find processes using a port from the command line on Windows, macOS, and Linux, then change the mixed port in the client and update the system proxy.
For when the client can't listen on its port or stops connecting after you switch clients. First identify what's using the port and decide whether to quit the old process. Then change the port and check whether your browser, terminal, or other apps still use the old proxy address.
Compare importing by pasting a URL, opening a local file, or scanning a QR code. Learn the difference between Clash YAML configurations and Base64 node lists, and how to set the update interval.
Import options vary between clients. First check which methods your app supports, then inspect the content returned by the subscription. If opening the link shows a web page or an error, fix the source rather than repeatedly changing the file extension.