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/ |
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.