The interface, core, and configuration have different roles. When something goes wrong, first identify which layer is involved.
Proxy processing core
mihomo is a core project in the Clash ecosystem that handles proxy connections, rule matching, DNS, and traffic interception. A graphical client provides the interface and usually integrates a core, but the client version and core version are separate. If a field is unsupported or a protocol is incompatible, check which core and version are actually running, then consult the relevant configuration documentation.
Configuration management and connection controls
A Clash client lets you import configurations, choose policies, control connections, and view logs. Apps differ in their interfaces and system integrations. Similar menu names do not guarantee identical behavior, and supported configuration fields depend on the integrated core. When choosing a client, check your platform and processor architecture first, then confirm it supports the features you need. Browse the download page by platform.
Configuration text format · .yaml / .yml
YAML is a common text format for Clash configurations. It uses indentation to express structure and organizes settings with key-value pairs, lists, and other constructs. Use spaces for indentation, and quote strings containing special characters correctly; do not copy formatting symbols from documentation blindly. A YAML parser accepting the file does not mean the core configuration is valid. Check field names, proxy group references, and value types as well.
Control API · external-controller / external-ui
An external dashboard uses the core’s control API to view connections, switch policies, and manage runtime status; it is not the route that proxy traffic takes. external-controller specifies the control API’s listening address, while external-ui can specify the location of the dashboard’s static files. Restrict the listening address and configure authentication to prevent unauthorized users from changing policies or viewing connection details.
Local customization · override / merge
A configuration override replaces or merges selected fields before or after the original configuration loads, using the mechanism provided by the client. It is often used to preserve local DNS, routing rules, or traffic capture preferences. Clients may handle mappings, lists, and execution order differently; do not assume every override appends rather than replaces. After making changes, inspect the final active configuration and confirm your settings persist when subscriptions update or you switch profiles.