Skip to content

Configuration model

The field-shape snippets in the reference use placeholders such as string and ...; they are not complete runnable configurations. Use complete examples for files to copy and adapt.

A configuration file is a YAML array containing one or more configuration entries. Each entry can be:

Entries are identified by their configuration keys, not a common top-level type. The type inside protocol selects a protocol. Multiple files are loaded together, so named groups can be referenced across files.

# Server configs have 'address' or 'path', except proxied WireGuard servers
- address: "0.0.0.0:8080"
protocol: ...
# TUN configs have 'device_name' or 'device_fd'
- device_name: "tun0"
address: "10.0.0.1"
...
# Client config groups have 'client_group'
- client_group: my-upstream
client_proxy: ...
# Rule config groups have 'rule_group'
- rule_group: my-rules
rules: ...
# Action-free source groups have 'rule_source_group'
- rule_source_group: my-sources
rules: ...
# Named PEMs have 'pem'
- pem: my-cert
path: /path/to/cert.pem