SETTINGS & REQUIREMENTS

App settings & requirements

Every toggle you control inside SMProxy, plus the operating-system minimums per platform. Subscription and provider-side controls live in the developer docs.

01

What's configured where

SMProxy has two independent layers of configuration — don't confuse them. The provider's configuration always owns routing, chains, balancers and DNS rules. App settings only adjust how the client behaves around that configuration.

Layer
Controlled by · documented in
Subscription / routing / branding
The provider, via subscription response headers and the config body — see the developer docs.
App settings
The user, in the app's Settings screen — this page.
02

Connection

Run mode — VPN or proxy only

Android, Windows, Linux
Mode
Behaviour
VPN (default)
A system tunnel captures all device traffic.
Proxy only
No tunnel is created. The app only runs local SOCKS/HTTP proxies; only apps explicitly pointed at those ports go through the connection.

Proxy-only mode is useful when another VPN or an MDM profile already owns the system VPN slot, or when only one application should be routed. It requires SOCKS or HTTP (below) to be enabled — otherwise the app refuses to start with an explanatory message rather than showing a misleading “connected” state.

Not available on iOS, tvOS and macOS. On Apple platforms the Xray core runs inside a Network Extension, which the system keeps alive only together with a VPN tunnel — remove the tunnel and no process is left to hold a local port. iOS also gives apps no way to set a system proxy. Local SOCKS/HTTP proxies do work on Apple platforms, but only while the tunnel is up (section 03).

Other connection settings

MTU

1280 · 1280–1500
All platforms

Leave at the default unless you have a reason to change it. Higher isn't automatically better: at 1500, large downloads can stall completely on some networks, because oversized packets are silently dropped rather than fragmented.

Preferred IP type

auto
All platforms

auto / ipv4 / ipv6. On auto the app routes IPv6 into the tunnel only when the device genuinely has IPv6 upstream — advertising IPv6 with no real upstream makes apps prefer AAAA records and then fail on anything routed directly.

Kill switch

off
All platforms

When enabled, disconnecting is blocked while the tunnel is active, so traffic can't silently fall back to the open network.

Silent reconnect

on
Android, iOS, tvOS, macOS

Restores the connection after an unexpected drop, without notifications (still written to the connection log). An explicit Connect always takes over the VPN slot even from another VPN app; a silent reconnect deliberately does not — if another VPN took the slot, SMProxy stands down.

Auto-connect

off
All platforms

Connects to the last used server when the app starts. Separate switches connect automatically on Wi-Fi or mobile data — see section 03d.

Launch at boot / login

off
Android · macOS · Windows · Linux

On Windows this requires the signed build (section 06). Not available on iOS and tvOS — the system doesn't permit apps to launch themselves.

“The server is not answering the handshake”

WireGuard / AmneziaWG · Android 400, iOS / macOS / tvOS 295, desktop 182 and later

When a WireGuard or AmneziaWG tunnel is up but the server stays silent, the main screen shows a banner: “The server is not answering the handshake — still retrying. If it never connects, contact your provider: keys, Endpoint and AmneziaWG parameters must match the server.”

  • Appears about 20–30 seconds after connecting; the app keeps retrying in the background.
  • Disappears on its own as soon as real traffic starts flowing, on disconnect, or when you switch servers.
  • The check is passive: the app reads its own traffic counters and never sends probe requests.
  • If the banner never goes away, the config does not match the server — wrong keys, Endpoint, or AmneziaWG obfuscation parameters (S1/S2, H1H4, Jc…). Ask your provider for a corrected config.
03

Local proxy

All platforms. Both proxies listen on 127.0.0.1 only — never on the local network.

Setting
Default · notes
SOCKS5 proxy
off — port 1080
HTTP proxy
off — port 8080
Username / password
empty — one credential pair shared by both proxies. Both fields must be set for authentication to apply; leave empty for no authentication.

Ports are configurable and persist when the proxy is toggled off. Defaults sit outside the 10808–10810 range on purpose, because subscription configs commonly use those ports for internal chain hops — a collision would silently drop the inbound. On Apple platforms these proxies exist only while the tunnel is connected.

03a

DNS

All platforms. These live in their own DNS section in Settings — they apply in ordinary VPN mode too, not only when the local proxy is in use.

Local DNS

off · port 10853
All platforms

Resolves DNS inside the tunnel instead of through the system resolver. A subscription's own DNS section always takes precedence.

DNS leak protection

on
All platforms

Captures every DNS query the OS or an app makes (ports 53 and 853) into the tunnel, so lookups can't slip out to your ISP's resolver over the physical connection. Leave it on unless a specific setup needs the system resolver reachable directly.

DNS-over-HTTPS (DoH)

off
All platforms

Resolves DNS over an encrypted HTTPS connection (dnsforge.de by default) instead of plaintext UDP, so the network can't read or tamper with your lookups. You can point it at any DoH endpoint; the query goes through the tunnel, not the physical network. A subscription's own DNS section always takes precedence; a provider can also enable DoH via a subscription header, and your toggle overrides it locally.

Fallback DoH resolvers

off
All platforms

If the resolver your provider specified doesn't answer, the address is looked up through a small built-in list of resolvers instead (dnsforge.de, 42l.fr, ffmuc.net and others — all known to work with the app). Off by default: with it off, a resolver that doesn't answer simply falls back to your system DNS.

Turn it on if your network blocks the resolver your provider uses.

Which resolver is used, in order:
the provider's s-resolve header → the RemoteDNSDomain field of the active routing profile → your own setting → the built-in fallback list (if enabled) → your system DNS.
03b

Subscriptions

All platforms.

Setting
Default · what it does
Automatic refresh
on — Reloads your subscriptions in the background so new servers and expiry dates stay current
Refresh interval
1 hour — How often that happens. Your value overrides whatever interval the provider suggested
Refresh on open
off — Also reloads every subscription each time you open the app
Collapsible subscriptions
on — Lets you fold a subscription's server list in the main screen. Groups start expanded; which ones you collapsed is remembered
Refresh all subscriptions
— Reloads everything right now, ignoring the interval

A subscription is also refreshed regardless of these settings when it looks expired, so a renewal on the provider's side is picked up rather than reported as “expired”.

🏷 Each server can carry a short caption from the provider, shown under its name in place of the protocol label (for example Netflix / streaming instead of VLESS | TCP | Reality). This only appears for subscriptions whose provider is active.
03c

Split routing

Decide what actually goes through the tunnel and what goes straight out — by address, and on Android by app. Both lists work the same way: the list itself is just a list, and a mode decides what it means.

By address

All platforms · default “bypass list”

Add domains, IP addresses and subnets (one field takes both a single address like 1.2.3.4 and a subnet like 10.0.0.0/8), then pick a mode:

Mode
What it does
Off
The list is not applied — everything goes through the tunnel. The provider's own routing rules still apply.
Bypass list
Everything goes through the tunnel except the entries you list — those connect directly.
Only list
Only the entries you list go through the tunnel. Everything else connects directly.

The default matches how the old exclusion list behaved, so nothing changes for existing users after an update.

Asterisks don't work. *.example.com is treated as literal text and simply never matches. To cover a domain together with its subdomains, write domain:example.com.

How domain entries match

You write
What it matches
example.com
A substring match — covers example.com and its subdomains, but can also catch unrelated hosts that contain the same text.
domain:example.com
The domain and all its subdomains — this is what people mean by an asterisk.
full:example.com
That exact name only, no subdomains.
regexp:…
A regular expression, for cases the forms above don't cover.
“Bank and government sites direct, everything else over VPN”
Mode: bypass list — add domain:yourbank.com to the list.
“Only one service over VPN, the rest as usual”
Mode: only list — add just that service's domains, as domain:service.com.

By app

Android · default “off”

Choose which apps use the tunnel and which go around it, with the same three modes:

Mode
What it does
Off
Per-app routing is not applied; the tunnel covers every app.
Bypass list
Every app goes through the tunnel except the ones you pick — those connect directly.
Only list
Only the apps you pick go through the tunnel. Everything else connects directly.

The picker shows each app's icon, name and package name, with search and a “show system apps” toggle — user apps only by default, system apps marked with an asterisk. On iOS, Mac and Windows, routing by address covers the same need using addresses instead of apps.

Worth knowing
Changing the mode or the list takes effect after reconnecting — the app tells you instead of restarting the tunnel behind your back.
In “only list” mode with an empty list, nothing goes through the tunnel at all and the VPN is effectively off. The app warns about this in the interface.
Whatever the mode, the app's own service addresses and the hosts of your subscriptions always stay in the tunnel — otherwise a subscription refresh would leave over the direct connection. You don't need to add them by hand.
03d

Quick toggle

Turn the tunnel on and off without opening the app. On both platforms you add the control yourself, once.

🔲

Quick Settings tile

Android 7 and later

A tile in the notification shade: swipe down and tap to connect or disconnect. It shows the current state, and you never leave the app you're in. The tile doesn't appear on its own — add it once by editing your shade.

Where to add it
Pixel / stock Android — swipe down fully, then the ✏️ pencil
Samsung — swipe down twice, then ⋮ → Edit buttons
Xiaomi — swipe down, then ⚙️ or Sort
OnePlus / Oppo — swipe down, then pencil or ⋮ → Edit tiles
🔘

Widget

iOS 17 and later

A widget with a single button, on the home screen or in Control Centre. Tap to connect or disconnect without opening the app. Connect from the app at least once first — that's when iOS asks permission for the VPN profile. The widget's state can lag a second or two behind.

Where to add it
Home screen — touch and hold an empty area, tap +, find SMProxy
Control Centre — swipe down from the top-right corner, tap +, then Add a control

Connect automatically on Wi-Fi or mobile

Android, iOS · both switches off by default

Two switches in settings — “on Wi-Fi” and “on mobile data”. Turn on the ones you want, and the VPN comes up by itself in those networks and goes down in the rest. Disconnecting by hand is always respected: the tunnel stays down until the network changes or you connect again yourself.

Platform
What to expect
iOS
The system applies the rules, so it works even when the app isn't running. Switching networks is handled for you: leave home and the tunnel comes up on mobile data, come back to Wi-Fi and it goes down again. A manual disconnect lasts until the network type changes — reconnecting to the same Wi-Fi doesn't count as a change. You can also mark trusted Wi-Fi networks by name and stay off the tunnel there.
Android
The app watches the network, so it works while the app is running. A manual disconnect lasts until the connection changes — switching Wi-Fi off and on again is enough. If the system unloads the app, auto-connect resumes on the next launch; for a guaranteed always-on tunnel use Always-on VPN in Android settings.

Using another VPN alongside SMProxy? On iOS the rules belong to the system, so if you connect a different VPN while SMProxy isn't running, a network change can hand the slot back to SMProxy. Turn these switches off if you rely on another VPN.

03e

Routing profiles

All platforms · default off (none selected)

A routing profile is a complete rule set — what goes straight out, what goes through the tunnel and what is blocked, plus optional DNS. Where the routing rules above are a short list of addresses you keep by hand, a profile is a ready-made set, usually supplied by your provider.

Where profiles come from. You import one by a link (from a message or a QR code), or it arrives with your subscription. A profile is only added to the list — switching it on stays your decision.

Choosing one. Settings → Routing → Routing profiles: pick a profile, or Off to use none. A profile marked ↻ updates itself from its source on its own schedule.

Per subscription. A subscription can use its own profile regardless of the global choice — set it while editing that subscription:

Choice
Effect
Use the global one
The profile selected in Settings applies (default)
Do not apply
No routing at all for this subscription, even if a global profile is on
A profile name
That profile applies whenever you connect to this subscription's servers

The routing rules above keep working independently of profiles. The profile format and how providers hand them out are in the developer docs → routing profiles.

04

Censorship bypass

TLS fragmentation

All platforms · default off

Splits the TLS handshake so DPI systems can't match the SNI in a single packet. A provider can also drive it for its own users via a subscription header, and that value wins over your toggle — including when the provider turns it off. Your toggle applies only when the provider sends nothing. Defaults suit most blocking setups — change them only if a specific network needs it.

Parameter
Default · meaning
packets
tlshello — which packets to fragment
length
50-100 — fragment size range, bytes
interval
10-20 — delay between fragments, ms
maxSplit
empty — optional cap on the number of fragments

Full technical reference and the provider-side header are in the developer docs → TLS fragmentation.

Noise packets

All platforms · default off

Sends junk data before the handshake so DPI can't recognise the start of the connection. Works alongside fragmentation — the two share the same egress and don't conflict.

Parameter
Default · meaning
Type
rand — Junk content: rand, str or hex
Packet
50-100 — Junk packet size range, bytes
Delay
10-20 — Delay before the handshake, ms
As with fragmentation, the provider's setting takes precedence over yours — including when the provider turns it off. That's deliberate: noise has to match what the server expects.

Server address over DoH

All platforms · default off

Looks up the server's address over HTTPS before connecting. Use it where the local DNS returns a forged answer for the server's domain — without it the app would get a wrong address and never connect.

Parameter
Default · meaning
DoH resolver
dnsforge.de — Which resolver to ask
Resolver IP
empty — Address of the resolver itself, for networks where even its domain is poisoned

If the resolver doesn't answer within a second and a half the normal lookup is used — the setting can only help, never block a connection. The provider's setting takes precedence over yours.

04a

Multiplexing

Multiplexing carries several logical connections over one physical connection to the server. It can reduce handshake overhead, but it is not automatically better — leave both toggles off unless you have a reason.

Mux and XMUX are independent mechanisms, which is why there are two switches. Turning Mux off does not disable XMUX, and vice versa.

Mux

All platforms · default off · works with any transport
Parameter
Default · meaning
TCP connections
8 — concurrent streams per connection (−1 to 1024)
XUDP connections
8 — concurrent UDP streams (−1 to 1024)
QUIC handling
reject — what happens to QUIC inside the Mux tunnel: reject / allow / skip

XMUX

All platforms · default off · applies only to the XHTTP transport

On any transport other than XHTTP it does nothing.

Parameter
Default · meaning
Streams per connection
16-32 — how many streams share one HTTP connection (a range is valid)
Max connections
0 — upper bound on connections; 0 means unlimited

If the subscription specifies its own multiplexing settings, those always take precedence over these toggles.

05

Privacy, data & appearance

Diagnostics

off · opt-in
iOS, tvOS, macOS only

Apple platforms ask for consent before sending any diagnostic check-in. This gate is intentionally Apple-only, to satisfy App Store requirements.

Traffic statistics

off
All platforms

Counts uploaded/downloaded bytes locally. Nothing is transmitted.

Signature check

off
All platforms

Requires subscriptions to carry a valid provider signature; unsigned subscriptions are rejected.

Logs

All platforms

Grouped into tabs — connections, subscriptions and statistics (plus per-connection core logs) — each viewable, copyable and clearable in the app. Trimmed automatically (oldest first) and never grow without bound. Nothing is uploaded.

Theme

System
All platforms

System (default), light, or dark.

Language

All platforms

Russian and English. Follows the system language and can be changed in-app; the interface updates immediately.

Reset

Android, iOS, tvOS, macOS

Removes every subscription, setting and log, returning the app to a freshly installed state.

Log actions

Every individual log has its own actions, so you don't have to wipe everything to get rid of one entry.

Action
What it does
Copy
Puts the log text on the clipboard
Share
Hands the log to the system share sheet as a .log file, so you can send it via any app — messenger, mail, cloud storage. On Windows and Linux there is no share sheet, so it saves the file wherever you choose instead
Clear this log
Deletes just this one log, leaving the rest untouched

Sharing sends a file rather than pasted text, so long logs arrive as an attachment instead of an unreadable wall of text. Logs are shared only when you choose to — the app never sends them anywhere on its own.

06

System requirements

Platform
Minimum
Architectures
Distribution
iOS
iOS 16
arm64
App Store
iPadOS
iPadOS 16
arm64
App Store
macOS
macOS 13 Ventura
Apple Silicon + Intel
App Store
tvOS
tvOS 17
arm64
App Store
Android
Android 8.0 (API 26)
arm64-v8a, armeabi-v7a
Google Play + direct APK
Android TV
Android 8.0 (API 26)
arm64-v8a, armeabi-v7a
Google Play + direct APK
Windows
Windows 10 or 11 (64-bit)
x64
Signed installer (.exe)
Linux
glibc-based distros
x86_64, aarch64
.deb, .rpm
  • Windows installs a TUN driver and therefore requires administrator rights during installation.
  • Windows 7, 8 and 8.1 are not supported, nor is 32-bit Windows. The app is built on Electron 33, which runs only on Windows 10 and newer, 64-bit; on an older or 32-bit system the executable is not even recognised as a Windows application. From desktop build 202 the installer checks this first and stops with a clear message instead of installing a copy that cannot start.
  • Linux packages install a small root helper service, so connecting doesn't prompt for a password every time. Proxy-only mode needs no root at all.
  • Android requires the system VPN permission, granted once on first connect. Devices with aggressive battery management may need SMProxy excluded from optimisation for the tunnel to survive long background periods; the always-on option makes this more robust.

Code signing

Platform
Signature
Windows
Signed with an OV code-signing certificate issued to RB Media FZC LLC by Certum. The installer and every bundled executable are signed and timestamped, so Windows shows a named publisher instead of “Unknown publisher”, and SmartScreen/Defender warnings are correspondingly reduced.
macOS, iOS, tvOS
Signed and notarised by Apple; distributed through the App Store.
Android
Signed with the developer key; Play builds additionally re-signed by Google Play.
Linux
Packages are not signed; verify downloads against the checksums published with each release.
07

What SMProxy does not do

No servers, no VPN service
SMProxy is a client. Connectivity comes entirely from the subscription the user imports.
No traffic logging
Statistics are byte counters kept on the device.
No account
Nothing to register; the subscription is the only credential.
Everything is free
No paid tier, no gated features.
Everything above reflects what the apps do today. Defaults and platform availability may change as the apps evolve.