Skip to content

Deep-links (smproxy://)

Form Meaning
smproxy://add?url=<url-encoded https URL> Add a subscription by URL
smproxy://add/<https URL> · add/<base64 URL> Same, as a path
smproxy://crypt1/<base64 AES-GCM of the encrypted URL> Add an encrypted subscription link (URL hidden)
smproxy://addhw/<base64 AES-GCM {"u":url,"h":hwid}> Device-bound subscription — works only on the device with a matching HWID; on others: “link belongs to another device”.
smproxy://import/<data> Auto-detect and import: a subscription URL, a server link (vless://, wireguard://, …), base64 of either, or a raw WireGuard/AmneziaWG .conf (INCY form)
smproxy://onadd/<url> Short form of routing/onadd/ — download a routing profile from the URL and activate it (INCY form)
smproxy://connect · open Connect to the selected server (INCY form)
smproxy://disconnect · close Disconnect
smproxy://toggle Toggle the tunnel
smproxy://status Just open the app

Encryption uses a shared AES-256-GCM key; addhw binds a link to a single device (anti-sharing). Tapping a link goes through the deep-link handler; pasting into the add form accepts the same forms.

Other clients' links, pasted or scanned. The forms above are accepted with any scheme when the link is pasted into the add form or scanned with the in-app camera: happ://add/<url>, incy://import/<data>, v2raytun://import/<url>, streisand://import/<url>, <anything>://install-sub?url=…, sub://<base64 url> (Shadowrocket). Encrypted links of other clients (happ://crypt4/, incy://crypt1/) cannot be decoded — the app says so. The app does not claim happ:// / incy:// system-wide on Android, iOS or macOS; on Windows and Linux it registers them only when no other handler is installed, so an installed Happ or INCY keeps its links.