Skip to content

General configuration

Allows other devices to access the internet through Clash proxy port.

Optional values: true/false

allow-lan: true

Binding address, only allows other devices to access through this address.

  • "*" binds to all IP addresses.
  • "192.168.31.31" binds to a single IPV4 address.
  • "[aaaa::a8aa:ff:fe09:57d8]" binds to a single IPV6 address.
bind-address: "*"

Allowed IP address ranges for connection, applicable only when allow-lan is set to true. Default values are 0.0.0.0/0 and ::/0.

lan-allowed-ips:
- 0.0.0.0/0
- ::/0

Disallowed IP address ranges for connection. Blacklist takes precedence over whitelist, default is empty.

lan-disallowed-ips:
- 192.168.0.3/32

User authentication for http(s), socks, and mixed proxies.

authentication:
- "user1:pass1"
- "user2:pass2"

Set the IP ranges allowed to skip authentication.

skip-auth-prefixes:
- 127.0.0.1/8
- ::1/128
  • rule Rule-based matching
  • global Global proxy (requires selecting proxy/strategy in GLOBAL proxy group)
  • direct Global direct connection

defaulting to rule mode.

mode: rule

Controls the logging level of Clash core, only output to console and control page.

log-level: info
  • silent Silent, no output.
  • error Outputs logs of errors and unusable logs.
  • warning Outputs logs of errors that do not affect operations, and logs of error level.
  • info Outputs general operational logs, as well as logs of error and warning levels.
  • debug Outputs as much information as possible during runtime.

Whether to allow the kernel to accept IPv6 traffic.

Available values: true/false. Default: true.

ipv6: true

Modify this item to reduce the power consumption issue on mobile devices

The interval for TCP Keep Alive packets, measured in seconds.

keep-alive-interval: 15

The maximum idle time for TCP Keep Alive.

keep-alive-idle: 15

Disable TCP Keep Alive; on Android, this is forcibly enabled by default.

disable-keep-alive: false

Controls whether Clash matches processes.

  • always Enables, forces matching of all processes.
  • strict Default, Clash determines whether to enable.
  • off Does not match processes, recommended for use on routers.
find-process-mode: strict

External controller, allows controlling your Clash kernel using RESTful API.

API listening address, you can change 127.0.0.1 to 0.0.0.0 to listen on all IPs.

external-controller: 127.0.0.1:9090

API CORS Header Configuration

external-controller-cors:
allow-origins:
- '*'
allow-private-network: true

Unix socket API listening address

external-controller-unix: mihomo.sock

Windows Named Pipe API Listening Address

external-controller-pipe: \\.\pipe\mihomo

HTTPS-API listening address, requires configuring the tls section for certificate and private key configuration, external-controller must also be filled in.

external-controller-tls: 127.0.0.1:9443

Sets the routing mark for the listening sockets of external-controller and external-controller-tls. Linux only.

external-controller-routing-mark: 0

Starts a DoH server on the RESTful API port.

external-doh-server: /dns-query

Access key for the API.

secret: ""

Allows running static webpage resources (such as Clash-dashboard) on Clash API, path is API address/ui.

external-ui: /path/to/ui/folder

Can be an absolute path or a relative path to the Clash working directory.

external-ui-name: xd # Merged into external-ui/xd

Not mandatory, will be updated to the specified folder during updates, if not configured, it will be updated directly to the external-ui directory.

Custom External User Interface Download URL

Section titled “Custom External User Interface Download URL”
external-ui-url: "https://github.com/MetaCubeX/metacubexd/archive/refs/heads/gh-pages.zip" # Get from GitHub Pages branch
profile:
store-selected: true
# Stores API selections for strategy groups for use on the next start
store-fake-ip: true
# Stores the fakeip mapping table, using the original mapping address when the domain connects again
smart-collector-size: 100
# 👻 Max size of smart_weight_data.csv in MB (collectdata of the smart group)

Largest size, in MB, of smart_weight_data.csv, the file that a smart group with collectdata: true writes to the working directory. Default: 100.

Top-level keys for the LightGBM model of the smart group (used with uselightgbm: true).

lgbm-auto-update: false
lgbm-update-interval: 72
lgbm-url: "https://github.com/vernesong/mihomo/releases/download/LightGBM-Model/Model.bin"
KeyDefaultDescription
lgbm-auto-updatefalseDownload the model again on a schedule
lgbm-update-interval72Update interval in hours; at start the model is updated at once if it is older than that
lgbm-urlthe vernesong LightGBM-Model/Model.bin releaseWhere to download Model.bin from

The model is kept as Model.bin in the working directory. POST /upgrade/lgbm in the API downloads it right away.

When unified delay is enabled, RTT is calculated to eliminate latency differences caused by connection handshakes and other variations between proxy types.

Available values: true/false.

unified-delay: true

Enable TCP concurrent connections, which will use all IP addresses resolved by DNS for connections, using the first successful connection.

Available values: true/false.

tcp-concurrent: true

mihomo’s traffic outbound interface.

interface-name: en0

Provides a default traffic mark for outbound connections on Linux.

routing-mark: 6666

Currently only used for https in API.

tls:
certificate: string # Certificate PEM format or certificate path
private-key: string # Private key PEM format corresponding to the certificate, or private key path
ech-key: |-
-----BEGIN ECH KEYS-----
ACATwY30o/RKgD6hgeQxwrSiApLaCgU+HKh7B6SUrAHaDwBD/g0APwAAIAAgHjzK
madSJjYQIf9o1N5GXjkW4DEEeb17qMxHdwMdNnwADAABAAEAAQACAAEAAwAIdGVz
dC5jb20AAA==
-----END ECH KEYS-----
# ECH keys, if not empty, ECH will be enabled.

Changes the file used for GeoIP data between mmdb and dat. Available values: true/false; true selects dat. Default: false.

geodata-mode: true

Optional loading modes are as follows:

  • standard: Standard loader
  • memconservative: Loader optimized for memory-limited (small memory) devices (default)
geodata-loader: memconservative
geo-auto-update: false

Update interval, unit is hours

geo-update-interval: 24
geox-url:
geoip: "https://testingcf.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@release/geoip.dat"
geosite: "https://testingcf.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@release/geosite.dat"
mmdb: "https://testingcf.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@release/country.mmdb"
asn: "https://github.com/xishang0128/geoip/releases/download/latest/GeoLite2-ASN.mmdb"

Custom UA used when downloading external resources, default is clash.meta/<core version>.

global-ua: clash.meta

ETag support for external resource downloads is enabled by default.

etag-support: true