Policy Group
A policy group may contain multiple policies. It can be a proxy policy, another policy group or a built-in policy (DIRECT and REJECT).
There are five group types: select, url-test, fallback, load-balance and ssid. Section [Proxy Group] declares policy group.
Manual Select Group
Select which policy will be used on the user interface.
SelectGroup = select, ProxyHTTP, ProxyHTTPS, DIRECT, REJECT
Optional parameters: default=<index> (initially selected member index), policy-provider:Name (import members from a proxy provider), filter= / exclude-filter= (regexes applied to provider-supplied members), and HIDDEN=true.
In iOS version. You may use Today Widget to quickly switch policy for the first 'select' group. In macOS version. You may switch the policy in the menubar menu.
Auto URL Test Group
Automatically select which policy will be used by benchmarking the latency to an URL.
AutoTestGroup = url-test, ProxySOCKS5, ProxySOCKS5TLS, url = http://www.google.com/generate_204
Parameters
url: Required
Chute will send an HTTP GET request to the URL. The test only cares about whether receiving a response data, even if the response is a HTTP error.
interval: Optional, s (Default: 600s).
The benchmark result will be discarded after the interval time. A retest will happen if the policy group is used.
tolerance: Optional, ms (Default: 100ms).
Policy will be changed only when the new winner has a higher score than the old winner's score plus the tolerance.
timeout: Optional, s (Default: 5s).
Abandon a policy if not finished in timeout.
lazy: Optional (true/false, Default: false).
When enabled, policies are only tested on first use rather than on startup.
max-failed-times: Optional (Default: 0, disabled).
Number of consecutive failures before a policy is excluded from selection. When unset (0), policies are never excluded by failure count.
expected-status: Optional (Default: empty).
expected-status=204
Expected HTTP status code for the URL test. If specified, only responses with this status code are considered successful.
idle-timeout: Optional, s.
idle-timeout = 120
Idle timeout for connections through this policy group. Connections idle for longer than this duration will be closed.
Also supported: HIDDEN=true, filter=, exclude-filter=, policy-provider:Name.
Fallback Group
Select an available policy by priority. The availability is tested by accessing an URL, just like an auto URL test group. The policy defined in the front has a high priority.
FallbackGroup = fallback, ProxySOCKS5, ProxySOCKS5TLS, url = http://www.google.com/generate_204
Parameters
url: Required
Specify which URL will be tested.
interval: Optional, s (Default: 600s).
Determine how long the benchmark result will be discarded.
timeout: Optional, s (Default: 5s).
Abandon a policy if it is not finished until timeout.
lazy / max-failed-times: Optional.
Same as the Auto URL Test Group. Also supported: HIDDEN=true, filter=, exclude-filter=, policy-provider:Name.
SSID Group
Select a policy according to the current Wi-Fi SSID.
SSIDGroup = ssid, default = ProxyHTTP, cellular = ProxyHTTP, SSIDName = ProxySOCKS5
Parameters
default: Required.
The policy when no matched SSID option has been found.
cellular: Optional.
The policy under cellular network. If not provided, the default policy will be used.
At least one SSID mapping (e.g.
SSIDName = ProxySOCKS5) is required in addition todefault.
Load Balance Group
Distribute requests across multiple proxies using a load balancing strategy.
LBGroup = load-balance, ProxySOCKS5, ProxyHTTPS, url = http://www.google.com/generate_204, strategy = round-robin
Parameters
strategy: Optional (Default: round-robin)
Specify the load balancing strategy:
| Strategy | Description |
|---|---|
round-robin |
Distribute requests evenly across all proxies in turn |
consistent-hashing |
Route the same hostname consistently to the same proxy |
sticky-sessions |
Stick sessions to the same proxy based on client affinity |
url: Required
url = http://www.google.com/generate_204
Chute will send an HTTP GET request to test proxy availability. Only healthy proxies are used for load balancing.
interval: Optional, s (Default: 600s).
interval = 300
How often to re-test proxy availability.
timeout: Optional, s (Default: 5s).
timeout = 3
Timeout for the availability test request.
HIDDEN: Optional (true/false, Default: false).
HIDDEN = true
When enabled, the policy group is hidden from the user interface. The key is uppercase and case-sensitive. Also available on select, url-test, and fallback groups.
Note: The
interrupt-exist-connectionsparameter is now a global[General]setting. See Misc Options.
Proxy Provider
Proxy providers allow you to import proxy lists from external sources (files or URLs). Defined in the [Proxy Provider] section:
[Proxy Provider]
MyProvider = url=https://example.com/proxies.yaml, interval=3600
Parameters
| Parameter | Required | Description |
|---|---|---|
type |
No | http (default), file, or inline |
url |
Yes for type=http |
URL to fetch proxy list from |
path |
Yes for type=file |
Local file path for proxy list |
interval |
No | Update interval in seconds (Default: 86400) |
format |
No | Payload format |
filter |
No | Filter regex to include only matching proxy names |
exclude-filter |
No | Filter regex to exclude matching proxy names |
The payload must be a mihomo-style YAML document with a
proxies:(orpayload:) list.
Proxy providers are referenced from policy groups with the policy-provider: prefix:
[Proxy Group]
MyGroup = select, policy-provider:MyProvider