Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Profile Configuration

The text-based profile is a cornerstone of MintFlow, designed to provide power users with a highly flexible and shareable way to control the app’s advanced networking capabilities.

Why Use Profiles?

  • Complex Setups: Easily configure sophisticated routing rules, split DNS, and combinations of proxies and VPNs.
  • Manage Multiple Configurations: Create and switch between different profiles for various scenarios (e.g., a “Work” profile with a corporate VPN and a “Home” profile for personal use).
  • Share and Collaborate: Profiles are plain text, making them easy to share with other MintFlow users, version control with Git, or collaborate on.
  • Import and Export: Seamlessly import profiles from URLs or files, and export your configurations to back them up or share them.

MintFlow uses a powerful and flexible text-based profile format to configure all aspects of the VPN and proxy behavior. This document details the syntax and all available configuration options.

Syntax Overview

The profile uses an INI-style format with sections enclosed in [].

# Comments start with # or //
[section-name]
key=value

# Lists are comma-separated
key=value1,value2,value3

# Structured values use subkey:subvalue pairs
key=subkey1:value1,subkey2:value2

Sections

[misc]

This section contains miscellaneous system-level settings.

KeyTypeDescriptionDefault
tun-mtuIntegerThe MTU for the TUN interface.
exclude-lan-networksBooleanIf true, local area networks will be excluded from the VPN.false

Example:

[misc]
tun-mtu=1420
exclude-lan-networks=true

[dns]

This section configures the DNS settings.

KeyTypeDescription
system-dnsList of IPsDNS servers to use when app-routing-enabled is false.
app-routing-enabledBooleanEnables domain-based routing and split DNS. Default is false.
direct-dnsList of IPsDNS servers for direct connections when app-routing-enabled is true.
vpn-dnsList of IPsDNS servers for VPN connections when app-routing-enabled is true.

Example:

[dns]
app-routing-enabled=true
direct-dns=223.5.5.5,114.114.114.114
vpn-dns=8.8.8.8,1.1.1.1

[l3vpns]

This section defines Layer 3 VPN interfaces. The key for each entry is a user-defined name for the interface.

Common Fields

KeyTypeDescriptionRequired
typeStringThe VPN type. Supported values: wireguard, openvpn.Yes
nicknameStringA user-friendly name for the interface.No
enabledBooleanWhether the interface is enabled. Defaults to true.No

WireGuard Specific Fields (When type=wireguard)

KeyTypeDescriptionRequired
private-keyStringThe private key for the interface.Yes
addressCIDRThe internal IP address and subnet for the interface.Yes

Example:

[l3vpns]
my-wireguard=type:wireguard,nickname:My WG,private-key:...,address:10.0.0.1/32

[wireguard-peers]

This section defines peers for WireGuard interfaces. The key for each entry is a user-defined name for the peer.

KeyTypeDescriptionRequired
interfaceStringThe name of the l3vpns interface this peer belongs to.Yes
public-keyStringThe public key of the peer.Yes
preshared-keyStringAn optional pre-shared key.No
endpointStringThe public endpoint of the peer (e.g., 1.2.3.4:51820).Yes
allowed-ipsList of CIDRsA list of IP addresses/ranges to be routed through this peer.Yes

Example:

[wireguard-peers]
my-peer=interface:my-wireguard,public-key:...,endpoint:1.2.3.4:51820,allowed-ips:0.0.0.0/0

[l4proxies]

This section defines Layer 4 proxies, like Shadowsocks and VMess. The key for each entry is a user-defined name for the proxy.

Common Fields

KeyTypeDescriptionRequired
typeStringThe proxy type. Supported: shadowsocks, vmess.Yes
nicknameStringA user-friendly name.No
serverStringThe server address.Yes
portIntegerThe server port.Yes
enabledBooleanWhether the proxy is enabled. Defaults to true.No

Shadowsocks Fields

KeyTypeDescriptionRequired
passwordStringThe password.Yes
methodStringThe encryption method. E.g., aes-256-gcm.Yes
obfs-typeStringObfuscation type (tls or http).No
obfs-hostStringObfuscation host (required for obfs-type).No
obfs-pathStringObfuscation path (required for obfs-type=http).No
udp-forwardBooleanWhether to forward UDP traffic. Defaults to false.No

VMess Fields

KeyTypeDescriptionRequired
user-idUUIDThe user ID.Yes
alter-idIntegerThe alter ID.Yes
securityStringSecurity type. E.g., auto.Yes
transport-typeStringTransport type (tcp or ws).Yes
ws-pathStringThe WebSocket path (required for transport-type=ws).No
sniStringServer Name Indication for TLS.No
skip-cert-checkBooleanIf true, skip certificate validation. Defaults to false.No
alpnStringApplication-Layer Protocol Negotiation. Defaults to h2,http/1.1.No

Example:

[l4proxies]
my-shadowsocks=type:shadowsocks,server:...,port:443,password:...,method:aes-256-gcm

[domain-sets]

This section defines named sets of domains for use in routing rules. The key is the set name.

Example:

[domain-sets]
social-media=twitter.com,facebook.com,instagram.com

[cidr-sets]

This section defines named sets of IP ranges (CIDRs) for use in routing rules. The key is the set name.

Example:

[cidr-sets]
private-ips=10.0.0.0/8,192.168.0.0/16

[routing]

This section defines the routing rules, which are processed from top to bottom. It does not use key-value pairs.

Rule Format: TYPE,VALUE,ACTION,TARGET

TypeValueActionTargetDescription
DOMAIN-SETName of a domain setL3VPN, L4PROXY, DIRECT, REJECTName of an l3vpn/l4proxyRoute based on a domain set.
CIDR-SETName of a CIDR setL3VPN, L4PROXY, DIRECT, REJECTName of an l3vpn/l4proxyRoute based on a CIDR set.
CIDRA single CIDRL3VPN, L4PROXY, DIRECT, REJECTName of an l3vpn/l4proxyRoute based on a single IP range.
DNS-FALLBACK(Not used)DIRECT, L3VPN, L4PROXY, etc.Name of an l3vpn/l4proxyDefault DNS behavior for domains not in any set.
DEFAULT(Not used)DIRECT, L3VPN, L4PROXY, etc.Name of an l3vpn/l4proxyThe final catch-all rule for all traffic.

Example:

[routing]
DOMAIN-SET,social-media,L4PROXY,my-shadowsocks
CIDR-SET,private-ips,DIRECT
DEFAULT,L3VPN,my-wireguard

[http-engine]

This section configures the internal HTTP engine.

KeyTypeDescription
enabledBooleanEnables the HTTP engine. Default false.
domain-listList of StringsA list of domains to apply HTTP processing on.
ca-p12StringA base64 encoded PKCS#12 certificate authority. Note: Only RSA keys are currently supported.
ca-passphraseStringThe passphrase for the ca-p12 certificate.

Example:

[http-engine]
enabled=true
domain-list=example.com
ca-p12=...
ca-passphrase=...

[http-url-rewrite]

This section defines URL rewrite rules for the HTTP engine. The key is a user-defined name for the rule.

KeyTypeDescriptionRequired
matchRegexpA regular expression to match the URL.Yes
actionStringThe action to take. Supported: reject, redirect-302.Yes
targetStringThe target URL for redirection.No

Example:

[http-url-rewrite]
block-ads=match:^https?://ads\..*,action:reject
redirect-google=match:^https?://google\.com,action:redirect-302,target:https://duckduckgo.com