{"format":1,"built":"2026-10-30T11:49:04.640Z","id":"face758c61dd4d31","clients":{"apps":[{"id":"happ","name":"Happ","vendor":"Flyfrog LLC","family":"xray","platforms":["ios","macos","tvos","android","androidtv","windows","linux"],"openSource":false,"repo":"github.com/Happ-proxy (binaries and release notes only)","brandIcon":"Happ","downloads":{"ios":[{"label":"App Store (Global)","url":"https://apps.apple.com/us/app/happ-proxy-utility/id6504287215"},{"label":"App Store (RU)","url":"https://apps.apple.com/ru/app/happ-proxy-utility/id6783623643"}],"macos":[{"label":"App Store (Global)","url":"https://apps.apple.com/us/app/happ-proxy-utility/id6504287215"},{"label":"App Store (RU)","url":"https://apps.apple.com/ru/app/happ-proxy-utility/id6783623643"}],"tvos":[{"label":"App Store","url":"https://apps.apple.com/us/app/happ-proxy-utility-for-tv/id6748297274"}],"android":[{"label":"Google Play","url":"https://play.google.com/store/apps/details?id=com.happproxy"},{"label":"APK","url":"https://github.com/Happ-proxy/happ-android/releases/latest/download/Happ.apk"}],"androidtv":[{"label":"Google Play","url":"https://play.google.com/store/apps/details?id=com.happproxy"},{"label":"APK","url":"https://github.com/Happ-proxy/happ-android/releases/latest/download/Happ.apk"}],"windows":[{"label":"Windows","url":"https://github.com/Happ-proxy/happ-desktop/releases/latest/download/setup-Happ.x64.exe"}]},"latest":[{"version":"6.2.0","date":"2026-10-26","platform":["ios","macos"]},{"version":"4.9.0","date":"2026-10-22","platform":["android","androidtv"]},{"version":"4.6.1","date":"2026-10-27","platform":["windows","macos","linux"]}],"cores":[{"kind":"xray","version":"v26.10.21","src":["rel"]},{"kind":"sing-box","note":"desktop TUN only (tun-type: singbox)","src":["mgmt"]}],"uaPatterns":[{"regex":"^happ/","example":"Happ/6.2.0/ios/2610261202535","note":"Happ/<ver>/<ios|Android|AndroidTV|Windows>/<id>; early builds Happ/<ver>","src":["ua"]},{"platform":["ios"],"minVersion":"4.0","regex":"^happ/(?:[4-9]|[1-9]\\d)\\.[^/]*/ios","example":"Happ/6.2.0/ios/2610261202535","src":["ua","op"]},{"minVersion":"4.0","regex":"^happ/(?:[4-9]|[1-9]\\d)\\.","example":"Happ/4.9.0/Android/2610221200000","note":"operator gate for Xray JSON with balancers; Remnawave docs say JSON works on all versions","src":["op","rwjson"]}],"uaOverridable":"provider-header","requestHeaders":[{"name":"x-hwid","value":"device id","when":"default-on","src":["mgmt","gist"]},{"name":"x-device-os","value":"OS name","when":"default-on","src":["mgmt","gist"]},{"name":"x-ver-os","value":"OS version","when":"default-on","src":["mgmt","gist"]},{"name":"x-device-model","value":"model","when":"default-on","src":["mgmt","gist"]},{"name":"x-device-locale","value":"ru","when":"always","src":["gist"]}],"accepts":["XRAY_JSON","XRAY_BASE64"],"best":"XRAY_JSON","bestWhy":{"text":"JSON goes to Xray 1:1 and its own routing is not applied; balancer and observatory fixes appear in desktop 2.14–2.15 notes","src":["links","rel"]},"gates":[{"type":"XRAY_JSON","minVersion":"4.0","regex":"^happ/(?:[4-9]|[1-9]\\d)\\.","severity":"warning","note":"operator gate for Xray JSON with balancers; Remnawave docs say JSON works on all versions","src":["op","rwjson"]}],"capabilities":{"balancer":true,"observatory":true,"routing":true,"xhttp":true,"reality":true,"vision":true,"vlessEncryption":true,"hysteria2":true,"tuic":false,"wireguard":true,"finalmask":true,"tun":true},"capabilitiesSrc":["rel","faq"],"headersRead":[{"name":"profile-title","format":"plain or base64:… (≤25 chars)","src":["mgmt"]},{"name":"subscription-userinfo","format":"upload=; download=; total=; expire=","src":["mgmt"]},{"name":"profile-update-interval","format":"hours","src":["mgmt"]},{"name":"support-url","src":["mgmt"]},{"name":"profile-web-page-url","src":["mgmt"]},{"name":"announce","format":"plain or base64:… (≤200)","src":["mgmt"]},{"name":"routing","format":"happ://routing/onadd/<b64>","src":["routing"]},{"name":"providerid","note":"unlocks Advanced parameters","src":["pid"]},{"name":"no-limit-enabled","format":"1|true","note":"beta; raises the xray-core RAM limit; needs providerid; exclusive with no-limit-xhttp-enabled","src":["mgmt"]},{"name":"hide-settings","format":"1|true","note":"needs providerid","src":["mgmt"]},{"name":"subscription-autoconnect","note":"+ subscription-autoconnect-type lastused|lowestdelay|random; needs providerid","src":["mgmt"]},{"name":"ping-type","format":"proxy|proxy-head|tcp|icmp","src":["mgmt"]},{"name":"encrypt-tag","note":"AES-128-GCM body","src":["enc"]},{"name":"change-user-agent","note":"+ manual-block-user-agent","src":["mgmt"]}],"deepLinks":[{"template":"happ://add/{URL}","src":["rwpage"]},{"template":"happ://routing/onadd/{B64:routing-json}","src":["routing"]},{"template":"happ://crypt5/…","note":"encrypted link; Remnawave keys HAPP_CRYPT3_LINK / HAPP_CRYPT4_LINK","src":["crypt"]}],"limits":[{"text":"iOS Network Extension ~50 MB: 15 hosts peaked at 56–78 MB, 10 hosts ~28 MB","src":["op"]},{"text":"a JSON subscription may carry at most one routing profile","src":["routing"]},{"text":"JSON with dns address \"localhost\" falls back to default DNS","src":["issue1"]}],"pitfalls":[{"text":"versions differ per platform (iOS 6.x, Android/desktop 4.x): gate per platform or with x-device-os","src":["rel","rwrouting"]},{"text":"a provider-set change-user-agent breaks ^Happ/ detection","src":["rw249"]},{"text":"third-party tools send Happ/1.0 to get JSON; a UA is not authentication","src":["spoof"]}],"sources":{"ua":{"ref":"github.com/AuthFailed/CheckNet/issues/75 (captured UAs, 2026-07)","kind":"third-party"},"gist":{"ref":"gist bubasik/af37247b (Happ/3.13.0 request headers)","kind":"third-party"},"mgmt":{"ref":"happ.su/main/dev-docs/app-management","kind":"docs"},"routing":{"ref":"happ.su/main/dev-docs/routing","kind":"docs"},"pid":{"ref":"happ.su/main/dev-docs/provider-id","kind":"docs"},"enc":{"ref":"happ.su/main/dev-docs/encrypting-subscription-content","kind":"docs"},"crypt":{"ref":"happ.su/main/dev-docs/crypto-link; remnawave/backend@3.4.7:libs/subscription-page/constants/template-keys.constant.ts:4-5","kind":"docs"},"links":{"ref":"happ.su/main/dev-docs/examples-of-links-and-parameters §3.1","kind":"docs"},"faq":{"ref":"happ.su/main/faq/adding-configuration-subscription","kind":"docs"},"rel":{"ref":"Happ-proxy/happ-android, happ-desktop releases; App Store notes 6.2.0","kind":"release-notes"},"issue1":{"ref":"github.com/Happ-proxy/.github/issues/1","kind":"third-party"},"rw249":{"ref":"github.com/remnawave/panel/issues/249","kind":"remnawave"},"rwrouting":{"ref":"remnawave/panel@f52f3ba:docs/learn-en/routing-rules.md:188-238","kind":"remnawave"},"spoof":{"ref":"kutovoys/xray-checker:subscription/parser.go","kind":"third-party"},"rwpage":{"ref":"remnawave/backend@3.4.7:src/modules/subscription-page-configs/constants/default-subpage-config.ts:292","kind":"remnawave"},"rwjson":{"ref":"remnawave/panel@f52f3ba:_panel-docs/help-articles/en/EDITOR_TEMPLATES_XRAY_JSON.md:5-12","kind":"remnawave"},"op":{"ref":"operator production Response Rules (private), 2026-10","kind":"operator"}}},{"id":"incy","name":"INCY","vendor":"LLC ITDEV","family":"xray","platforms":["ios","macos","android","windows","linux","tvos","androidtv"],"openSource":false,"repo":"github.com/INCY-DEV/incy-docs (docs only)","brandIcon":"INCY","downloads":{"ios":[{"label":"App Store","url":"https://apps.apple.com/us/app/incy/id6756943388"}],"macos":[{"label":"App Store","url":"https://apps.apple.com/us/app/incy/id6756943388"},{"label":"macOS (Apple silicon)","url":"https://github.com/INCY-DEV/incy-platforms/releases/latest/download/incy-macos-arm64.dmg"},{"label":"macOS (Intel)","url":"https://github.com/INCY-DEV/incy-platforms/releases/latest/download/incy-macos-intel.dmg"}],"tvos":[{"label":"App Store","url":"https://apps.apple.com/us/app/incy/id6756943388"}],"android":[{"label":"Google Play","url":"https://play.google.com/store/apps/details?id=llc.itdev.incy"},{"label":"APK","url":"https://github.com/INCY-DEV/incy-platforms/releases/latest/download/Incy.apk"}],"androidtv":[{"label":"Google Play","url":"https://play.google.com/store/apps/details?id=llc.itdev.incy"},{"label":"APK","url":"https://github.com/INCY-DEV/incy-platforms/releases/latest/download/Incy.apk"}],"windows":[{"label":"Windows","url":"https://github.com/INCY-DEV/incy-platforms/releases/latest/download/incy-windows-setup.exe"},{"label":"Windows (portable)","url":"https://github.com/INCY-DEV/incy-platforms/releases/latest/download/incy-windows-portable.zip"}],"linux":[{"label":".deb (x64)","url":"https://github.com/INCY-DEV/incy-platforms/releases/latest/download/incy-linux-x64.deb"},{"label":".rpm (x64)","url":"https://github.com/INCY-DEV/incy-platforms/releases/latest/download/incy-linux-x64.rpm"},{"label":"Arch (x64)","url":"https://github.com/INCY-DEV/incy-platforms/releases/latest/download/incy-linux-x64.pkg.tar.zst"},{"label":".deb (arm64)","url":"https://github.com/INCY-DEV/incy-platforms/releases/latest/download/incy-linux-arm64.deb"},{"label":".rpm (arm64)","url":"https://github.com/INCY-DEV/incy-platforms/releases/latest/download/incy-linux-arm64.rpm"}]},"latest":[{"version":"2.6.6","date":"2026-10-27","platform":["ios","macos"]},{"version":"3.8.1","date":"2026-10","platform":["android"]},{"version":"3.9.0","date":"2026-10","platform":["windows","macos","linux"]}],"cores":[{"kind":"xray","src":["fmt"]},{"kind":"amneziawg","version":"amneziawg-go v3.1","note":"iOS/Android","src":["fmt"]}],"uaPatterns":[{"regex":"^incy/","example":"INCY/3.8.1/android Dalvik/2.1.0 (Linux; U; Android 15)","note":"INCY/<ver>/<platform>; iOS appends CFNetwork/Darwin","src":["fmt","ua"]},{"platform":["ios"],"regex":"^incy/[^/]+/ios","example":"INCY/2.6.6/ios CFNetwork/3860.100.1 Darwin/26.0.0","src":["fmt","op"]}],"uaOverridable":"unknown","requestHeaders":[{"name":"x-hwid","value":"device id","when":"unknown","src":["fmt","hwid"]},{"name":"x-device-os","value":"OS name","when":"unknown","src":["fmt","hwid"]},{"name":"x-ver-os","value":"OS version","when":"unknown","src":["fmt","hwid"]},{"name":"x-device-model","value":"model","when":"unknown","src":["fmt","hwid"]},{"name":"X-Device-ID","value":"HWID alias (Android)","when":"unknown","src":["fmt"]},{"name":"x-app-version","value":"app version","when":"always","src":["fmt"]},{"name":"x-device-locale","value":"locale","when":"always","src":["fmt"]},{"name":"x-client","value":"INCY","when":"always","src":["fmt"]}],"accepts":["XRAY_JSON","XRAY_BASE64"],"best":"XRAY_JSON","bestWhy":{"text":"documents balancers and observatory in full configs; base64 cannot express balancers","src":["full","op"]},"capabilities":{"balancer":true,"observatory":true,"routing":true,"xhttp":true,"reality":true,"vision":true,"vlessEncryption":true,"hysteria2":true,"tuic":false,"wireguard":true,"finalmask":true,"tun":true},"capabilitiesSrc":["fmt","full"],"headersRead":[{"name":"profile-title","format":"plain|base64: (alt subscription-name, content-disposition)","src":["mgmt"]},{"name":"subscription-userinfo","note":"0 hides the block","src":["mgmt"]},{"name":"profile-update-interval","src":["mgmt"]},{"name":"support-url","src":["mgmt"]},{"name":"profile-web-page-url","note":"alias homepage","src":["mgmt"]},{"name":"announce","format":"≤200, base64: allowed","src":["mgmt"]},{"name":"routing","format":"base64 | link | off","src":["mgmt"]},{"name":"autorouting","format":"incy://autorouting/onadd/https://…","src":["mgmt"]},{"name":"no-limit-enabled","format":"1","note":"(iOS) keeps the NE under 50 MB so xhttp is not killed; enable-only","src":["mgmt"]},{"name":"banner-text","note":"+ banner-*, expiry-banner-*","src":["mgmt"]},{"name":"fragmentation-enable","note":"+ noises-*, server-address-resolve-*, per-app-proxy-* (Android)","src":["mgmt"]}],"deepLinks":[{"template":"incy://add/{URL}","src":["dl"]},{"template":"incy://import/{data}","src":["dl"]},{"template":"incy://crypt1/{b64url AES-256-GCM}","note":"Remnawave key INCY_CRYPT1_LINK","src":["dl"]}],"limits":[{"text":"iOS NE 50 MB cap","src":["mgmt"]},{"text":"patches full configs: listen 127.0.0.1, adds mixed inbound 10808 if missing, overrides stats/log","src":["full"]}],"pitfalls":[{"text":"a different vendor from Happ; the panel no longer rewrites happ:// routing to incy://, so global Happ headers reach INCY as-is","src":["mgmt"]},{"text":"skips ssr://, tuic://, hysteria:// links","src":["fmt"]}],"sources":{"fmt":{"ref":"INCY-DEV/incy-docs:ru/dev-docs/subscription-format.en.md:400-420","kind":"docs"},"hwid":{"ref":"INCY-DEV/incy-docs:ru/dev-docs/hwid.en.md:7","kind":"docs"},"full":{"ref":"INCY-DEV/incy-docs:full-xray-config.en.md","kind":"docs"},"mgmt":{"ref":"INCY-DEV/incy-docs:app-management.en.md:178-222","kind":"docs"},"dl":{"ref":"INCY-DEV/incy-docs:deep-links.en.md","kind":"docs"},"ua":{"ref":"github.com/AuthFailed/CheckNet/issues/75","kind":"third-party"},"op":{"ref":"operator production Response Rules (private), 2026-10","kind":"operator"}}},{"id":"throne-desktop","name":"Throne (desktop)","family":"xray","platforms":["windows","linux","macos"],"openSource":true,"repo":"github.com/throneproj/Throne","brandIcon":"Throne","latest":[{"version":"1.3.2","date":"2026-09-29"},{"version":"1.4.0-beta.4","date":"2026-10-23","channel":"pre"}],"cores":[{"kind":"sing-box","version":"~1.14 fork","src":["gomod"]},{"kind":"xray","version":"fork based on v26.9.9","note":"no MASQUE/xdrive","src":["gomod"]}],"uaPatterns":[{"regex":"^throne/\\d","example":"Throne/1.3.2","note":"version cut at the first \"-\": 1.4.0-beta.4 sends Throne/1.4.0","src":["ua","ci"]},{"minVersion":"1.2.0","regex":"^throne/1\\.(?:[2-9]|[1-9]\\d+)(?:\\.|$)|^throne/(?:[2-9]|[1-9]\\d+)(?:\\.|$)","example":"Throne/1.2.4","src":["arr","op"]},{"maxVersion":"1.1.0-beta.1","regex":"^throne/1\\.[01]\\.\\d+ \\(prefer clashmeta format\\)","example":"Throne/1.0.13 (Prefer ClashMeta Format)","src":["ua0"]}],"uaOverridable":"global+per-subscription","requestHeaders":[{"name":"x-hwid","value":"device id","when":"default-off","src":["hwid"]},{"name":"x-device-os","value":"OS name","when":"default-off","src":["hwid"]},{"name":"x-ver-os","value":"OS version","when":"default-off","src":["hwid"]},{"name":"x-device-model","value":"model","when":"default-off","src":["hwid"]}],"accepts":["XRAY_JSON","XRAY_BASE64","CLASH","SINGBOX"],"best":"XRAY_JSON","bestWhy":{"text":"≥1.2: an array becomes one Custom Xray Config per element, named from remarks; balancers and dialerProxy run unchanged. A single object is split into outbounds.","src":["arr","gen","op"]},"gates":[{"type":"XRAY_JSON","minVersion":"1.2.0","regex":"^throne/1\\.(?:[2-9]|[1-9]\\d+)(?:\\.|$)|^throne/(?:[2-9]|[1-9]\\d+)(?:\\.|$)","severity":"error","note":"desktop 1.1.x and older has no array parser: an Xray JSON array does not import","src":["arr"]}],"capabilities":{"balancer":true,"observatory":true,"routing":true,"xhttp":true,"reality":true,"vision":true,"vlessEncryption":true,"hysteria2":true,"wireguard":true,"masque":false,"finalmask":true,"tun":true},"capabilitiesSrc":["gomod","gen"],"headersRead":[{"name":"subscription-userinfo","src":["hdr"]},{"name":"profile-update-interval","format":"hours (h/d/s suffix tolerated); fallback x-profile-update-interval","src":["hdr"]},{"name":"profile-title","format":"plain|base64:","src":["hdr"]},{"name":"announce","format":"plain|base64:","src":["hdr"]},{"name":"profile-web-page-url","src":["hdr"]},{"name":"support-url","src":["hdr"]}],"deepLinks":[{"template":"throne://addsub/{B64:URL#NAME}","note":"OS scheme registered on Windows/Linux since 1.3.0","src":["dl"]}],"limits":[{"text":"the inbounds of a full config are removed; Throne adds its own bridge inbound","src":["gen"]}],"pitfalls":[{"text":"desktop ≤1.1.x has no array parser: give it base64","src":["arr"]},{"text":"fallback HWID \"hostname-productType\" may fail the panel HWID regex","src":["dev"]},{"text":"1.0.x UA contains \"ClashMeta\"; only anchored clash rules are safe","src":["ua0"]}],"sources":{"ua":{"ref":"throneproj/Throne@1.3.2:src/database/SettingsRepo.cpp:352-361","kind":"source"},"ci":{"ref":"throneproj/Throne@1.3.2:.github/workflows/build.yml:242","kind":"source"},"ua0":{"ref":"throneproj/Throne@1.0.13:src/global/Configs.cpp:347","kind":"source"},"hwid":{"ref":"throneproj/Throne@1.3.2:src/configs/sub/GroupUpdater.cpp:45-70,389-414; include/database/SettingsRepo.h:161","kind":"source"},"dev":{"ref":"throneproj/Throne@1.3.2:src/global/DeviceDetailsHelper.cpp:135-178","kind":"source"},"arr":{"ref":"throneproj/Throne@1.3.2:src/configs/sub/SubscriptionParser.cpp:115-137,394-414 (first in 1.2.0-beta.5)","kind":"source"},"gen":{"ref":"throneproj/Throne@1.3.2:src/configs/generate.cpp:2493-2501","kind":"source"},"hdr":{"ref":"throneproj/Throne@1.3.2:src/configs/sub/GroupUpdater.cpp:208-224,590-660","kind":"source"},"dl":{"ref":"throneproj/Throne@1.3.2:src/ui/mainWindow/mainwindow_deeplink.cpp:117-156","kind":"source"},"gomod":{"ref":"throneproj/Throne@1.3.2:core/go.mod:13-25","kind":"source"},"op":{"ref":"operator production Response Rules (private), 2026-10","kind":"operator"}}},{"id":"throne-android","name":"Throne (Android)","family":"xray","platforms":["android"],"openSource":true,"repo":"github.com/throneproj/ThroneForAndroid","brandIcon":"Throne","latest":[{"version":"2.0.4","date":"2026-10-24"}],"cores":[{"kind":"sing-box","version":"1.15.0-alpha.13 fork","src":["props"]},{"kind":"xray","version":"fork based on v26.10.21","src":["props"]}],"uaPatterns":[{"platform":["android"],"regex":"^throne/android/","example":"Throne/Android/2.0.4","note":"previews: 2.0.0-pre.N","src":["ua"]},{"platform":["android"],"minVersion":"2.0.0","regex":"^throne/android/(?:[2-9]|[1-9]\\d+)(?:\\.|$)","example":"Throne/Android/2.0.0","src":["arr","op"]}],"uaOverridable":"global+per-subscription","requestHeaders":[{"name":"x-hwid","value":"device id","when":"default-off","src":["hwid"]},{"name":"x-device-os","value":"OS name","when":"default-off","src":["hwid"]},{"name":"x-ver-os","value":"OS version","when":"default-off","src":["hwid"]},{"name":"x-device-model","value":"model","when":"default-off","src":["hwid"]}],"accepts":["XRAY_JSON","XRAY_BASE64","CLASH","SINGBOX"],"best":"XRAY_JSON","bestWhy":{"text":"≥2.0: an array becomes CUSTOM_XRAY_FULL_CONFIG profiles named from remarks; ≤1.6.x get links only","src":["arr","op"]},"gates":[{"type":"XRAY_JSON","minVersion":"2.0.0","regex":"^throne/android/(?:[2-9]|[1-9]\\d+)(?:\\.|$)","severity":"error","note":"Android 1.6.x and older has no array parser: an Xray JSON array does not import","src":["arr"]}],"capabilities":{"balancer":true,"observatory":true,"routing":true,"xhttp":true,"reality":true,"vision":true,"vlessEncryption":true,"hysteria2":true,"wireguard":true,"masque":true,"finalmask":true,"tun":true},"capabilitiesSrc":["props"],"headersRead":[{"name":"subscription-userinfo","src":["hdr"]},{"name":"profile-update-interval","src":["hdr"]},{"name":"profile-title","format":"base64:","src":["hdr"]},{"name":"announce","note":"also body key notice","src":["hdr"]},{"name":"profile-web-page-url","src":["hdr"]},{"name":"support-url","src":["hdr"]}],"deepLinks":[{"template":"throne://addsub/{B64:URL#NAME}","src":["dl"]},{"template":"clash://install-config?url={URL_ENC}&name={NAME}","src":["dl"]}],"limits":[{"text":"a single object is kept whole only when exactly one egress outbound chains through its siblings","src":["arr"]}],"pitfalls":[{"text":"x-hwid only from v2.0.0; v1.6.4 sends none","src":["hwid"]},{"text":"a desktop rule ^Throne/\\d does not match Android","src":["ua"]}],"sources":{"ua":{"ref":"throneproj/ThroneForAndroid@v2.0.4:ktx/Nets.kt:356","kind":"source"},"hwid":{"ref":"throneproj/ThroneForAndroid@v2.0.4:group/RequestIdentity.kt:20-30; database/SettingsRepo.kt:293","kind":"source"},"arr":{"ref":"throneproj/ThroneForAndroid@v2.0.4:outbound/import/ProfileImport.kt:563-583,642-657","kind":"source"},"hdr":{"ref":"throneproj/ThroneForAndroid@v2.0.4:group/SubscriptionMetadata.kt:24-93","kind":"source"},"dl":{"ref":"throneproj/ThroneForAndroid@v2.0.4:AndroidManifest.xml; ui/SubscribeFlows.kt:93-105","kind":"source"},"props":{"ref":"throneproj/ThroneForAndroid@v2.0.4:nb4a.properties (Throne@1f30af24)","kind":"source"},"op":{"ref":"operator production Response Rules (private), 2026-10","kind":"operator"}}},{"id":"onexray","name":"OneXray","vendor":"YuanDevTeam","family":"xray","platforms":["android","ios","macos","windows","linux"],"openSource":true,"repo":"github.com/YuanDevTeam/OneXray","brandIcon":"OneXray","latest":[{"version":"v26.10.5","date":"2026-10-23"}],"cores":[{"kind":"xray","version":"v26.10.21","src":["rel"]}],"uaPatterns":[{"regex":"^v2rayn/[\\d.]+ onexray/","example":"v2rayN/26.10.5 OneXray/26.10.5 (net.yuandev.onexray; build:1; android)","src":["ua"]}],"uaOverridable":"per-subscription","requestHeaders":[{"name":"x-hwid","value":"random UUID v4","when":"default-off","src":["hwid"]},{"name":"X-Age-Public-Key","value":"age recipient","when":"opt-in","src":["model"]}],"accepts":["XRAY_JSON","XRAY_BASE64"],"best":"XRAY_JSON","bestWhy":{"text":"panel=remnawave mode checks every config with the core and names it from remarks","src":["reader"]},"capabilities":{"balancer":true,"observatory":true,"routing":true,"xhttp":true,"reality":true,"vision":true,"vlessEncryption":true,"hysteria2":true,"wireguard":true,"finalmask":true,"tun":true},"capabilitiesSrc":["rel"],"headersRead":[{"name":"subscription-userinfo","src":["svc"]},{"name":"x-hwid-not-supported","src":["svc"]},{"name":"x-hwid-max-devices-reached","src":["svc"]},{"name":"x-hwid-limit","src":["svc"]}],"deepLinks":[{"template":"onexray://onexray.com/sub/add?url={URL_ENC}&panel=remnawave#{NAME}","src":["dl"]}],"limits":[{"text":"RemnawaveAdapter adds a tun inbound, direct/block outbounds and its own DNS","src":["adapter"]},{"text":"HTTPS only; x-hwid dropped on a cross-origin redirect","src":["ua"]}],"pitfalls":[{"text":"starts with \"v2rayN/\" on purpose: put its rule before any ^v2rayN/ rule; version gates see v2rayN 26.x","src":["ua"]},{"text":"with panel=remnawave, a non-JSON body raises RemnawaveResponseFormatException","src":["reader"]}],"sources":{"ua":{"ref":"YuanDevTeam/OneXray@v26.10.5:lib/core/network/client.dart:44-58,133","kind":"source"},"model":{"ref":"YuanDevTeam/OneXray@v26.10.5:lib/core/network/model.dart:8-19","kind":"source"},"hwid":{"ref":"YuanDevTeam/OneXray@v26.10.5:lib/core/db/table/subscription.dart:17-18; service/servers/subscription/service.dart:144","kind":"source"},"reader":{"ref":"YuanDevTeam/OneXray@v26.10.5:service/servers/subscription/reader.dart:79-158","kind":"source"},"adapter":{"ref":"YuanDevTeam/OneXray@v26.10.5:service/shared/xray/remnawave.dart","kind":"source"},"svc":{"ref":"YuanDevTeam/OneXray@v26.10.5:service/servers/subscription/service.dart:679,731-744","kind":"source"},"dl":{"ref":"YuanDevTeam/OneXray@v26.10.5:service/shared/share/app_link_parser.dart:11-80","kind":"source"},"rel":{"ref":"YuanDevTeam/OneXray release v26.10.5 notes","kind":"release-notes"}}},{"id":"v2rayng","name":"v2rayNG","vendor":"2dust","family":"xray","platforms":["android"],"openSource":true,"repo":"github.com/2dust/v2rayNG","brandIcon":"VRayNG","latest":[{"version":"2.3.11","date":"2026-10-11"},{"version":"2.3.14","date":"2026-10-28","channel":"pre"}],"cores":[{"kind":"xray","version":"v26.10.10 (2.3.11); v26.10.21 (2.3.14)","src":["core"]}],"uaPatterns":[{"regex":"^v2rayng/","example":"v2rayNG/2.3.11","src":["ua"]},{"minVersion":"1.8.29","regex":"^v2rayng/(?:1\\.(?:8\\.(?:29|[3-9]\\d|\\d{3,})|9\\.|\\d{2,}\\.)|[2-9]\\.|\\d{2,}\\.)","example":"v2rayNG/1.10.31","src":["rwjson"]}],"uaOverridable":"per-subscription","requestHeaders":[{"name":"(custom)","value":"per-subscription JSON headers; no built-in HWID","when":"opt-in","src":["sub"]}],"accepts":["XRAY_JSON","XRAY_BASE64"],"best":"XRAY_JSON","bestWhy":{"text":"an array becomes one CUSTOM profile per element, named from remarks, run as-is","src":["fmt"]},"gates":[{"type":"XRAY_JSON","minVersion":"1.8.29","regex":"^v2rayng/(?:1\\.(?:8\\.(?:29|[3-9]\\d|\\d{3,})|9\\.|\\d{2,}\\.)|[2-9]\\.|\\d{2,}\\.)","severity":"error","note":"Remnawave documents Xray JSON from v2rayNG 1.8.29","src":["rwjson"]}],"capabilities":{"balancer":true,"observatory":true,"routing":true,"xhttp":true,"reality":true,"vision":true,"vlessEncryption":true,"hysteria2":true,"wireguard":true,"finalmask":true,"tun":true},"capabilitiesSrc":["core","run"],"headersRead":[{"name":"subscription-userinfo","since":"2.3.13","src":["hdr"]},{"name":"profile-title","format":"plain|base64:","since":"2.3.13","src":["hdr"]},{"name":"support-url","since":"2.3.13","note":"http/https/tg only","src":["hdr"]},{"name":"profile-web-page-url","since":"2.3.13","src":["hdr"]}],"deepLinks":[{"template":"v2rayng://install-config?url={URL_ENC}#{NAME}","note":"name= is ignored; the name comes from the fragment","src":["dl"]}],"limits":[{"text":"a full JSON is detected only if the body contains the literal strings inbounds, outbounds AND routing","src":["fmt"]}],"pitfalls":[{"text":"Remnawave's default page link uses ?name=… and loses the name","src":["dl","rwpage"]},{"text":"stable 2.3.11 reads no response headers","src":["hdr"]}],"sources":{"ua":{"ref":"2dust/v2rayNG@2.3.11:util/HttpUtil.kt:155","kind":"source"},"sub":{"ref":"2dust/v2rayNG@2.3.11:SubscriptionItem.kt:16; SubEditActivity.kt:221","kind":"source"},"fmt":{"ref":"2dust/v2rayNG@aa4b055:handler/AngConfigManager.kt:330-369; fmt/CustomFmt.kt:21","kind":"source"},"run":{"ref":"2dust/v2rayNG@aa4b055:core/CoreConfigManager.kt:89-127","kind":"source"},"hdr":{"ref":"2dust/v2rayNG@aa4b055:handler/AngConfigManager.kt:496-501; SubscriptionInfoParser.kt:14-30","kind":"source"},"dl":{"ref":"2dust/v2rayNG@aa4b055:AndroidManifest.xml:199-201; AngConfigManager.kt:631","kind":"source"},"core":{"ref":"2dust/v2rayNG release notes 2.3.11/2.3.14 (AndroidLibXrayLite)","kind":"release-notes"},"rwjson":{"ref":"remnawave/panel@f52f3ba:_panel-docs/help-articles/en/EDITOR_TEMPLATES_XRAY_JSON.md:5-12","kind":"remnawave"},"rwpage":{"ref":"remnawave/backend@3.4.7:src/modules/subscription-page-configs/constants/default-subpage-config.ts:1982","kind":"remnawave"}}},{"id":"v2rayn","name":"v2rayN","vendor":"2dust","family":"xray","platforms":["windows","linux","macos"],"openSource":true,"repo":"github.com/2dust/v2rayN","latest":[{"version":"7.25.6","date":"2026-10-11"}],"cores":[{"kind":"xray","version":"v26.10.10","src":["rel"]},{"kind":"sing-box","version":"1.14","src":["rel"]}],"uaPatterns":[{"regex":"^v2rayn/\\d+\\.\\d+\\.\\d+$","example":"v2rayN/7.25.6","note":"3-part version, nothing after it","src":["ua"]},{"minVersion":"6.40","regex":"^v2rayn/(?:6\\.(?:[4-9]\\d|\\d{3,})|[7-9]\\.\\d+|[1-9]\\d\\.\\d+)\\.\\d+$","example":"v2rayN/7.25.6","src":["rwjson","ua"]}],"uaOverridable":"per-subscription","requestHeaders":[{"name":"(custom)","value":"per-subscription headers; no HWID","when":"opt-in","src":["sub"]}],"accepts":["XRAY_JSON","XRAY_BASE64","SINGBOX","CLASH"],"best":"XRAY_JSON","bestWhy":{"text":"a full JSON (or each array element) is saved as a custom Xray config named from remarks","src":["fmt"]},"gates":[{"type":"XRAY_JSON","minVersion":"6.40","regex":"^v2rayn/(?:6\\.(?:[4-9]\\d|\\d{3,})|[7-9]\\.\\d+|[1-9]\\d\\.\\d+)\\.\\d+$","severity":"error","note":"Remnawave documents Xray JSON from v2rayN 6.40","src":["rwjson"]}],"capabilities":{"balancer":true,"observatory":true,"routing":true,"xhttp":true,"reality":true,"vision":true,"vlessEncryption":true,"hysteria2":true,"wireguard":true,"finalmask":true,"tun":true},"capabilitiesSrc":["rel"],"headersRead":[],"deepLinks":[],"limits":[{"text":"whether it rewrites inbounds for system proxy/TUN in custom configs is unverified","src":["tun"]}],"pitfalls":[{"text":"OneXray (v2rayN/<x> OneXray/…) and Passwall2 (v2rayN/9.99) also start with v2rayN/","src":["ua"]},{"text":"reads no response headers (no subscription-userinfo)","src":["sub"]}],"sources":{"ua":{"ref":"2dust/v2rayN@7.25.6:ServiceLib/Common/Utils.cs:925-931; Global.cs:5; Services/DownloadService.cs:277-281","kind":"source"},"sub":{"ref":"2dust/v2rayN@7.25.6:Handler/SubscriptionHandler.cs:83-93,155","kind":"source"},"fmt":{"ref":"2dust/v2rayN@7.25.6:Handler/Fmt/V2rayFmt.cs:17-86; Handler/ConfigHandler.cs:2064-2133","kind":"source"},"tun":{"ref":"2dust/v2rayN@7.25.6:Handler/ConfigHandler.cs:1579-1605","kind":"inferred"},"rel":{"ref":"2dust/v2rayN release 7.25.6 notes","kind":"release-notes"},"rwjson":{"ref":"remnawave/panel@f52f3ba:_panel-docs/help-articles/en/EDITOR_TEMPLATES_XRAY_JSON.md:5-12","kind":"remnawave"}}},{"id":"v2plus","name":"v2plus","family":"xray","platforms":["android"],"openSource":true,"repo":"github.com/GoodbyeWL/v2plus","latest":[{"version":"1.3.0","date":"2026-08-23"}],"cores":[{"kind":"xray","version":"AndroidLibXrayLite v26.8.20 (exact core unverified)","src":["libs"]}],"uaPatterns":[{"regex":"^v2plus/","example":"v2plus/1.3.0","src":["ua"]}],"uaOverridable":"unknown","requestHeaders":[{"name":"x-hwid","value":"device id","when":"always","src":["hwid"]},{"name":"x-device-os","value":"OS name","when":"always","src":["hwid"]},{"name":"x-ver-os","value":"OS version","when":"always","src":["hwid"]},{"name":"x-device-model","value":"model","when":"always","src":["hwid"]}],"accepts":["XRAY_JSON","XRAY_BASE64"],"best":"XRAY_JSON","bestWhy":{"text":"same detection as v2rayNG; arrays supported; listed in the Remnawave JSON fallback","src":["fmt","rwext"]},"capabilities":{"balancer":true,"observatory":true,"routing":true,"xhttp":"unknown","reality":true,"vision":true,"vlessEncryption":true,"hysteria2":true,"wireguard":true,"finalmask":true,"tun":true},"capabilitiesSrc":["libs"],"headersRead":[{"name":"subscription-userinfo","src":["fmt"]},{"name":"#support-url / #announce (body lines)","note":"profile-title deliberately ignored","src":["fmt"]}],"deepLinks":[{"template":"v2plus://install-sub?url={URL_ENC}","note":"also install-config and import","src":["dl"]}],"limits":[{"text":"XrayCustomConfigGuard: inbounds only socks/http/tun/mixed; refuses loopback/reverse outbounds; strips reverse, freedom redirect, sockopt interface/mark/tproxy","src":["guard"]}],"pitfalls":[{"text":"injects x-hwid into WS/HTTP-header outbound requests too","src":["hwid"]}],"sources":{"ua":{"ref":"GoodbyeWL/v2plus@1.3.0:util/HttpUtil.kt:283-288","kind":"source"},"hwid":{"ref":"GoodbyeWL/v2plus@1.3.0:util/HttpUtil.kt:376-379; util/Utils.kt:591-605; handler/V2rayConfigManager.kt:1377,1427","kind":"source"},"fmt":{"ref":"GoodbyeWL/v2plus@1.3.0:handler/AngConfigManager.kt:374-404,615-708","kind":"source"},"guard":{"ref":"GoodbyeWL/v2plus@1.3.0:handler/XrayCustomConfigGuard.kt","kind":"source"},"dl":{"ref":"GoodbyeWL/v2plus@1.3.0:AndroidManifest.xml:162-165","kind":"source"},"libs":{"ref":"GoodbyeWL/v2plus@1.3.0:app/libs/README.md","kind":"source"},"rwext":{"ref":"remnawave/backend@3.4.7:src/modules/subscription-template/constants/extended-clients.ts:1-28","kind":"remnawave"}}},{"id":"saeeddev94-xray","name":"Xray (saeeddev94)","family":"xray","platforms":["android"],"openSource":true,"repo":"github.com/saeeddev94/xray","latest":[{"version":"v13.0.0","date":"2026-10-21"}],"cores":[{"kind":"xray","version":"v26.10.21","src":["sub"]}],"uaPatterns":[{"regex":"^io\\.github\\.saeeddev94\\.xray/","example":"io.github.saeeddev94.xray/13.0.0","src":["ua"]}],"uaOverridable":"per-subscription","requestHeaders":[{"name":"x-hwid","value":"random 16-byte hex, generated once","when":"default-off","src":["hwid"]}],"accepts":["XRAY_JSON","XRAY_BASE64"],"best":"XRAY_BASE64","bestWhy":{"text":"the user picks the link type (Json = array of full configs, Subscription = base64); the server cannot see which. Remnawave JSON fallback upgrades it only with serveJsonAtBaseSubscription","src":["links","rwext"]},"capabilities":{"balancer":true,"observatory":true,"routing":true,"xhttp":true,"reality":true,"vision":true,"vlessEncryption":true,"hysteria2":true,"wireguard":true,"finalmask":true,"tun":true},"capabilitiesSrc":["sub"],"headersRead":[],"deepLinks":[{"template":"xray://import-profile","note":"declared; handler not located","src":["dl"]}],"limits":[{"text":"a Json link must be an array; remarks are removed and become the profile name","src":["links"]}],"pitfalls":[],"sources":{"ua":{"ref":"saeeddev94/xray@v13.0.0:helper/HttpHelper.kt:40-47","kind":"source"},"hwid":{"ref":"saeeddev94/xray@v13.0.0:Settings.kt:116-118; activity/SettingsActivity.kt:171-175","kind":"source"},"links":{"ref":"saeeddev94/xray@v13.0.0:activity/LinksManagerActivity.kt:132-175","kind":"source"},"dl":{"ref":"saeeddev94/xray@v13.0.0:AndroidManifest.xml:43-46","kind":"source"},"sub":{"ref":"saeeddev94/xray@v13.0.0 Xray-core submodule 1b1647cd","kind":"source"},"rwext":{"ref":"remnawave/backend@3.4.7:src/modules/subscription-template/constants/extended-clients.ts:1-28","kind":"remnawave"}}},{"id":"streisand","name":"Streisand","vendor":"ARCADIA ODYSSEY INC.","family":"xray","platforms":["ios","macos"],"openSource":false,"brandIcon":"Streisand","downloads":{"ios":[{"label":"App Store","url":"https://apps.apple.com/us/app/streisand/id6450534064"}],"macos":[{"label":"App Store","url":"https://apps.apple.com/us/app/streisand/id6450534064"}]},"latest":[{"version":"1.6.77","date":"2026-10-25"}],"cores":[{"kind":"xray","version":"v26.10.21","note":"also SSH/TUIC, so more than Xray (inferred)","src":["store"]}],"uaPatterns":[{"regex":"^streisand","example":"Streisand/1.6.77 CFNetwork/3860.100.1 Darwin/26.0.0","note":"exact format unverified","src":["rwext","fixture"]}],"uaOverridable":"unknown","requestHeaders":[],"accepts":["XRAY_JSON","XRAY_BASE64"],"best":"XRAY_JSON","bestWhy":{"text":"Remnawave lists Streisand as Xray-JSON-capable on all versions","src":["rwjson"]},"capabilities":{"balancer":"unknown","xhttp":"unknown","reality":true,"vision":"unknown","hysteria2":true,"tuic":true,"wireguard":true},"capabilitiesSrc":["store"],"headersRead":[],"deepLinks":[{"template":"streisand://import/{URL}#{NAME}","src":["rwpage"]}],"limits":[{"text":"iOS Network Extension memory cap (applies to all iOS VPN apps; not measured for Streisand)","src":["inf"]}],"pitfalls":[{"text":"response headers it reads are undocumented","src":["inf"]}],"sources":{"store":{"ref":"App Store id6450534064 notes 1.6.77; streisandapp.com/changelog","kind":"release-notes"},"fixture":{"ref":"neoauroraproject/hmpanel spec fixture \"Streisand/1.0 CFNetwork/1410 Darwin/22.0.0\"","kind":"third-party"},"inf":{"ref":"no vendor docs found","kind":"unverified"},"rwext":{"ref":"remnawave/backend@3.4.7:src/modules/subscription-template/constants/extended-clients.ts:1-28","kind":"remnawave"},"rwjson":{"ref":"remnawave/panel@f52f3ba:_panel-docs/help-articles/en/EDITOR_TEMPLATES_XRAY_JSON.md:5-12","kind":"remnawave"},"rwpage":{"ref":"remnawave/backend@3.4.7:src/modules/subscription-page-configs/constants/default-subpage-config.ts:562","kind":"remnawave"}}},{"id":"v2box","name":"V2Box","vendor":"Hexa Software","family":"xray","platforms":["ios","macos","android"],"openSource":false,"brandIcon":"VTwoBox","latest":[{"version":"10.1.9","date":"2026-10-06","platform":["ios","macos"]}],"cores":[{"kind":"xray","src":["notes"]}],"uaPatterns":[{"regex":"^v2box","example":"V2Box/10.1.9 CFNetwork/3860.100.1 Darwin/26.0.0","note":"format unverified","src":["rwext"]}],"uaOverridable":"unknown","requestHeaders":[],"accepts":["XRAY_JSON","XRAY_BASE64"],"best":"XRAY_JSON","bestWhy":{"text":"Remnawave: all versions; 10.1.9 notes say configs with a balancer strategy now load","src":["rwjson","notes"]},"capabilities":{"balancer":true,"hysteria2":true,"wireguard":true,"finalmask":true},"capabilitiesSrc":["notes"],"headersRead":[{"name":"(support/website links, update interval, lock)","note":"header names undocumented","src":["notes"]}],"deepLinks":[{"template":"v2box://install-sub?url={URL_ENC}&name={NAME}","note":"from Telegram Desktop it needs a redirect page","src":["mz","rwtg"]}],"limits":[],"pitfalls":[],"sources":{"notes":{"ref":"App Store V2Box 10.1.9 notes","kind":"release-notes"},"mz":{"ref":"marzban-docs.sm1ky.com/tutorials/url-scheme","kind":"third-party"},"rwtg":{"ref":"remnawave/panel@f52f3ba:docs/awesome-remnawave/_install-guides/remnawave-telegram-mini-app.md:16","kind":"remnawave"},"rwext":{"ref":"remnawave/backend@3.4.7:src/modules/subscription-template/constants/extended-clients.ts:1-28","kind":"remnawave"},"rwjson":{"ref":"remnawave/panel@f52f3ba:_panel-docs/help-articles/en/EDITOR_TEMPLATES_XRAY_JSON.md:5-12","kind":"remnawave"}}},{"id":"wrabbit","name":"Wrabbit Proxy","family":"xray","platforms":["ios","macos"],"openSource":false,"latest":[{"version":"2.1.0","date":"2026-08-11"}],"cores":[{"kind":"xray","version":"v26.6.1","src":["site"]}],"uaPatterns":[{"regex":"^wrabbit","example":"Wrabbit/2.1.0","note":"prefix observed by the operator; full format unknown","src":["op"]}],"uaOverridable":"unknown","requestHeaders":[],"accepts":["XRAY_JSON","XRAY_BASE64"],"best":"XRAY_JSON","bestWhy":{"text":"operator serves full Xray configs with balancers to it","src":["op"]},"capabilities":{"balancer":"unknown","xhttp":true,"reality":true,"hysteria2":true},"capabilitiesSrc":["site"],"headersRead":[],"deepLinks":[],"limits":[],"pitfalls":[{"text":"not matched by the anchored ^rabbit (Mihomo) alternative: keep its rule explicit","src":["rwdef"]}],"sources":{"site":{"ref":"wrab.site/en; App Store description","kind":"docs"},"op":{"ref":"operator production Response Rules (private), 2026-10","kind":"operator"},"rwdef":{"ref":"remnawave/backend@3.4.7:prisma/seed/default/response-rules.ts:8-95","kind":"remnawave"}}},{"id":"v2raytun","name":"v2RayTun","vendor":"DATABRIDGES / LXST-CODE","family":"xray","platforms":["android","androidtv","windows","ios","macos"],"openSource":false,"repo":"github.com/LXST-CODE/v2RayTun (releases)","brandIcon":"vrayTUN","latest":[{"version":"5.26.83","date":"2026-10-12","platform":["android","androidtv"]},{"version":"3.10.15","date":"2026-10","platform":["windows"]}],"cores":[{"kind":"xray","version":"26.6.27 (5.25.79)","src":["rel"]},{"kind":"amneziawg","src":["rel"]}],"uaPatterns":[{"regex":"^v2raytun/","example":"v2raytun/android","note":"platform only, no version","src":["ua"]}],"uaOverridable":"unknown","requestHeaders":[{"name":"x-hwid","value":"device id","when":"unknown","src":["dev"]},{"name":"x-device-os","value":"OS name","when":"unknown","src":["dev"]},{"name":"x-ver-os","value":"OS version","when":"unknown","src":["dev"]},{"name":"x-device-model","value":"model","when":"unknown","src":["dev"]},{"name":"X-App-Version","value":"app version","when":"unknown","src":["dev"]}],"accepts":["XRAY_BASE64","XRAY_JSON"],"best":"XRAY_BASE64","bestWhy":{"text":"JSON with balancers is in Android release notes (5.25.82) but unverified end-to-end; not in Remnawave JSON fallback","src":["rel","rwext"]},"capabilities":{"balancer":"partial","xhttp":"unknown"},"capabilitiesSrc":["rel"],"headersRead":[{"name":"profile-title","format":"plain|base64:","src":["hdr"]},{"name":"subscription-userinfo","src":["hdr"]},{"name":"profile-update-interval","format":"hours","src":["hdr"]},{"name":"routing","format":"base64 of v2RayTun's own routing JSON (NOT a happ:// link)","src":["hdr"]},{"name":"announce","format":"plain|base64:, #RRGGBB colour","src":["hdr"]},{"name":"announce-url","src":["hdr"]},{"name":"update-always","src":["hdr"]},{"name":"network-filter","src":["hdr"]},{"name":"fallback-url","since":"5.24.76","src":["rel"]},{"name":"x-hwid-limit","format":"true","src":["rwhwid"]}],"deepLinks":[{"template":"v2raytun://import/{URL}","src":["dl"]}],"limits":[{"text":"iOS App Store listing gone since ~Aug–Sep 2026","src":["ac"]}],"pitfalls":[{"text":"cannot be version-gated (no version in the UA)","src":["ua"]},{"text":"a global Happ-style routing header is the wrong format here: use per-rule headers","src":["hdr"]}],"sources":{"ua":{"ref":"AuthFailed/CheckNet#75; Th3Nekit/Lean ClientSpoof.kt; Leadaxe/LxBox user_agent.dart","kind":"third-party"},"dev":{"ref":"docs.v2raytun.com/overview/device-limit","kind":"docs"},"hdr":{"ref":"docs.v2raytun.com/overview/supported-headers","kind":"docs"},"dl":{"ref":"docs.v2raytun.com/deep-link","kind":"docs"},"rel":{"ref":"LXST-CODE/v2RayTun release notes","kind":"release-notes"},"ac":{"ref":"applecensorship.com/app-store-monitor/app/6476628951","kind":"third-party"},"rwhwid":{"ref":"remnawave/backend@3.4.7:src/modules/subscription/subscription.service.ts:241","kind":"remnawave"},"rwext":{"ref":"remnawave/backend@3.4.7:src/modules/subscription-template/constants/extended-clients.ts:1-28","kind":"remnawave"}}},{"id":"foxray","name":"FoXray","vendor":"YIGUO NETWORK INC.","family":"xray","platforms":["ios","macos"],"openSource":false,"latest":[{"version":"unknown (missing from US store 2026-10-28)","date":""}],"cores":[{"kind":"xray","src":["docs"]}],"uaPatterns":[{"regex":"^foxray","example":"FoXray/3.1 CFNetwork/1568 Darwin/24.0.0","note":"suffix unverified","src":["hp"]}],"uaOverridable":"unknown","requestHeaders":[],"accepts":["XRAY_BASE64","XRAY_JSON","CLASH","MIHOMO"],"best":"XRAY_BASE64","bestWhy":{"text":"legacy; Remnawave example blocks it; links are the safe common denominator","src":["rwex"]},"capabilities":{},"capabilitiesSrc":[],"headersRead":[],"deepLinks":[{"template":"foxray://yiguo.dev/sub/add/?url={URL_ENC}#{NAME}","src":["mz"]}],"limits":[],"pitfalls":[{"text":"Remnawave example uses CONTAINS \"FoxRay\" caseSensitive:true, which misses \"FoXray\"","src":["rwex"]}],"sources":{"docs":{"ref":"yiguo.dev/docs/apple","kind":"docs"},"hp":{"ref":"hiddify/hiddify-manager:hiddifypanel/hutils/flask.py:184","kind":"third-party"},"mz":{"ref":"marzban-docs.sm1ky.com/tutorials/url-scheme","kind":"third-party"},"rwex":{"ref":"remnawave/backend@3.4.7:libs/contract/models/response-rules/response-rules-examples.ts:23-41","kind":"remnawave"}}},{"id":"exclave","name":"Exclave","family":"xray","platforms":["android"],"openSource":true,"repo":"github.com/dyhkwong/Exclave","brandIcon":"Exclave","latest":[{"version":"0.17.66","date":"2026-10-26"}],"cores":[{"kind":"v2ray5","version":"exclave-core/v5 fork","src":["gomod"]}],"uaPatterns":[{"regex":"^exclave/","example":"Exclave/0.17.66","src":["ua"]}],"uaOverridable":"per-subscription","requestHeaders":[],"accepts":["XRAY_BASE64","SINGBOX"],"best":"XRAY_BASE64","bestWhy":{"text":"a JSON array of full configs is flattened into separate outbounds (balancers lost)","src":["raw"]},"capabilities":{"balancer":false,"xhttp":"unknown"},"capabilitiesSrc":["raw"],"headersRead":[{"name":"subscription-userinfo","src":["raw"]}],"deepLinks":[],"limits":[],"pitfalls":[{"text":"exclave://subscription?url= is handled in code but no manifest filter registers the scheme","src":["dl"]}],"sources":{"ua":{"ref":"dyhkwong/Exclave@0.17.66:ktx/Nets.kt:190","kind":"source"},"raw":{"ref":"dyhkwong/Exclave@0.17.66:group/RawUpdater.kt:76-110,295-314","kind":"source"},"dl":{"ref":"dyhkwong/Exclave@0.17.66:ui/MainActivity.kt:207; AndroidManifest.xml","kind":"source"},"gomod":{"ref":"dyhkwong/Exclave@0.17.66:library/core/go.mod","kind":"source"}}},{"id":"passwall","name":"Passwall / Passwall2 (OpenWrt)","family":"xray","platforms":["openwrt"],"openSource":true,"repo":"github.com/Openwrt-Passwall","latest":[{"version":"passwall 26.10.22-2","date":"2026-10-22"},{"version":"passwall2 26.10.20-1","date":"2026-10-20"}],"cores":[{"kind":"xray","src":["p2"]},{"kind":"sing-box","src":["p2"]}],"uaPatterns":[{"regex":"^passwall2?/","example":"passwall/26.10.22","src":["p1","p2"]},{"regex":"^v2rayn/9\\.99$","example":"v2rayN/9.99","note":"Passwall2 default UA","src":["p2"]}],"uaOverridable":"global","requestHeaders":[{"name":"x-hwid","value":"device id","when":"default-off","src":["p2hw"]},{"name":"x-device-os","value":"OS name","when":"default-off","src":["p2hw"]},{"name":"x-ver-os","value":"OS version","when":"default-off","src":["p2hw"]},{"name":"x-device-model","value":"model","when":"default-off","src":["p2hw"]}],"accepts":["XRAY_BASE64","CLASH"],"best":"XRAY_BASE64","bestWhy":{"text":"no full Xray JSON support","src":["p2"]},"capabilities":{},"capabilitiesSrc":[],"headersRead":[{"name":"subscription-userinfo","note":"passwall (1) only","src":["p1"]}],"deepLinks":[],"limits":[],"pitfalls":[{"text":"Passwall2 default v2rayN/9.99 must NOT match a v2rayN JSON rule: require a 3-part version","src":["p2"]}],"sources":{"p1":{"ref":"Openwrt-Passwall/openwrt-passwall:root/usr/share/passwall/subscribe.lua:1808-1809; clash_subconverter.lua:668-676","kind":"source"},"p2":{"ref":"Openwrt-Passwall/openwrt-passwall2:luasrc/model/cbi/passwall2/client/node_subscribe_config.lua:272-279","kind":"source"},"p2hw":{"ref":"Openwrt-Passwall/openwrt-passwall2:subscribe.lua:2181-2230","kind":"source"}}},{"id":"renoarx","name":"RenoarX","family":"xray","platforms":["windows"],"openSource":false,"repo":"github.com/RonnyFX/RenoarX (README only)","latest":[{"version":"v0.3.1","date":"2026-07-28"}],"cores":[{"kind":"xray","note":"xray tun, xray json with zero override","src":["readme"]}],"uaPatterns":[{"regex":"^renoarx/","example":"RenoarX/0.3.1","note":"guess from third-party preset","src":["eg"]}],"uaOverridable":"unknown","requestHeaders":[{"name":"x-hwid","value":"?","when":"unknown","src":["rwhwid"]}],"accepts":["XRAY_JSON","XRAY_BASE64"],"best":"XRAY_JSON","bestWhy":{"text":"README promises \"xray json with zero override\" (inferred)","src":["readme"]},"capabilities":{},"capabilitiesSrc":[],"headersRead":[{"name":"renoarx-notification","format":"JSON or base64 (id, severity, title, message, actionText, actionUrl, expiresAt)","src":["readme"]}],"deepLinks":[],"limits":[],"pitfalls":[],"sources":{"readme":{"ref":"RonnyFX/RenoarX README","kind":"docs"},"eg":{"ref":"third-party Remnawave preset ^(Happ|INCY|RenoarX)/ (eGames subscription_rules.sh)","kind":"third-party"},"rwhwid":{"ref":"remnawave/panel@f52f3ba:docs/features/hwid-device-limit.md:60-73","kind":"remnawave"}}},{"id":"mihomo-core","name":"mihomo core (proxy-provider fetch)","family":"mihomo","platforms":["windows","macos","linux","android"],"openSource":true,"repo":"github.com/MetaCubeX/mihomo (branch Meta)","latest":[{"version":"v1.19.33","date":"2026-10-21"}],"cores":[{"kind":"mihomo","version":"v1.19.33","src":["ua"]}],"uaPatterns":[{"regex":"^clash\\.meta/","example":"clash.meta/v1.19.33","note":"alpha builds: clash.meta/alpha-<hash> (inferred)","src":["ua","ci"]}],"uaOverridable":"global+per-subscription","requestHeaders":[],"accepts":["MIHOMO","XRAY_BASE64"],"best":"MIHOMO","bestWhy":{"text":"provider bodies may be YAML or a link list","src":["conv"]},"capabilities":{"xhttp":true,"reality":true,"vision":true,"vlessEncryption":true,"hysteria2":true,"tuic":true,"wireguard":true,"anytls":true,"masque":true,"tun":true},"capabilitiesSrc":["xhttp","vless"],"headersRead":[{"name":"subscription-userinfo","format":"upload/download/total/expire (int or float)","src":["sub"]}],"deepLinks":[],"limits":[{"text":"XHTTP since v1.19.22 (530c6b43, 2026-03-27); AnyTLS v1.19.3; MASQUE v1.19.20","src":["xhttp"]}],"pitfalls":[{"text":"the UA (via global-ua) shows only the core, not the app","src":["ua"]}],"sources":{"ua":{"ref":"MetaCubeX/mihomo@v1.19.33:config/config.go:446,504; component/http/http.go:54-55","kind":"source"},"ci":{"ref":"MetaCubeX/mihomo@v1.19.33:.github/workflows/build.yml:191-195","kind":"source"},"sub":{"ref":"MetaCubeX/mihomo@v1.19.33:adapter/provider/provider.go:212; subscription_info.go","kind":"source"},"conv":{"ref":"MetaCubeX/mihomo@v1.19.33:common/convert","kind":"source"},"xhttp":{"ref":"MetaCubeX/mihomo compare v1.19.21...v1.19.22 (530c6b43)","kind":"source"},"vless":{"ref":"MetaCubeX/mihomo@v1.19.33:adapter/outbound/vless.go:71-136","kind":"source"}}},{"id":"clash-verge-rev","name":"Clash Verge Rev","family":"mihomo","platforms":["windows","macos","linux"],"openSource":true,"repo":"github.com/clash-verge-rev/clash-verge-rev","brandIcon":"ClashVerge","latest":[{"version":"v2.5.8","date":"2026-10-09"}],"cores":[{"kind":"mihomo","version":"stable at build time (~v1.19.32, inferred)","note":"alpha optional","src":["pre"]}],"uaPatterns":[{"regex":"^clash-verge/","example":"clash-verge/v2.5.8","src":["ua"]}],"uaOverridable":"per-subscription","requestHeaders":[],"accepts":["MIHOMO"],"best":"MIHOMO","bestWhy":{"text":"rejects a body without proxies/proxy-providers; CLASH type drops XHTTP","src":["item","op"]},"capabilities":{"xhttp":true,"reality":true,"vision":true,"hysteria2":true,"tuic":true,"wireguard":true,"anytls":true,"tun":true},"capabilitiesSrc":["pre"],"headersRead":[{"name":"subscription-userinfo","note":"also any *- prefix e.g. x-amz-meta-","src":["item"]},{"name":"content-disposition","format":"filename* / filename","src":["item"]},{"name":"profile-update-interval","format":"hours","src":["item"]},{"name":"profile-web-page-url","src":["item"]}],"deepLinks":[{"template":"clash://install-config?name={NAME}&url={URL_ENC}","note":"everything after url= is taken: put url LAST; clash-verge:// also registered","src":["dl"]}],"limits":[],"pitfalls":[{"text":"matches ^clash: the Mihomo rule must come before the CLASH rule","src":["ua","op"]},{"text":"does not read profile-title","src":["item"]}],"sources":{"ua":{"ref":"clash-verge-rev/clash-verge-rev@v2.5.8:src-tauri/src/utils/network.rs:247-253","kind":"source"},"item":{"ref":"clash-verge-rev/clash-verge-rev@v2.5.8:src-tauri/src/config/prfitem.rs:251,296-364","kind":"source"},"dl":{"ref":"clash-verge-rev/clash-verge-rev@v2.5.8:src-tauri/tauri.conf.json:46; src-tauri/src/utils/resolve/scheme.rs:43-60","kind":"source"},"pre":{"ref":"clash-verge-rev/clash-verge-rev@v2.5.8:scripts/prebuild.mjs:168-171","kind":"source"},"op":{"ref":"operator production Response Rules (private), 2026-10","kind":"operator"}}},{"id":"flclash","name":"FlClash","family":"mihomo","platforms":["android","windows","macos","linux"],"openSource":true,"repo":"github.com/chen08209/FlClash","brandIcon":"FlClash","latest":[{"version":"v0.9.2","date":"2026-10-24"}],"cores":[{"kind":"mihomo","version":"fork chen08209/Clash.Meta@c5062921","src":["core"]}],"uaPatterns":[{"regex":"^flclash/","example":"FlClash/v0.9.2 clash-verge Platform/android","src":["ua"]}],"uaOverridable":"global","requestHeaders":[],"accepts":["MIHOMO"],"best":"MIHOMO","bestWhy":{"text":"mihomo core with xhttp/masque/anytls","src":["core"]},"capabilities":{"xhttp":true,"reality":true,"vision":true,"hysteria2":true,"tuic":true,"wireguard":true,"anytls":true,"masque":true,"tun":true},"capabilitiesSrc":["core"],"headersRead":[{"name":"content-disposition","src":["prof"]},{"name":"subscription-userinfo","src":["prof"]}],"deepLinks":[{"template":"flclash://install-config?url={URL_ENC}","note":"clash:// and clashmeta:// too","src":["dl"]}],"limits":[],"pitfalls":[{"text":"UA contains \"clash-verge\" mid-string: never use an unanchored clash-verge regex","src":["ua"]},{"text":"user may switch the UA to clash-verge/v2.4.2 or ClashforWindows/0.19.23","src":["uas"]}],"sources":{"ua":{"ref":"chen08209/FlClash@v0.9.2:lib/common/package.dart:8-12","kind":"source"},"uas":{"ref":"chen08209/FlClash@v0.9.2:lib/models/config.dart:33","kind":"source"},"prof":{"ref":"chen08209/FlClash@v0.9.2:lib/models/profile.dart:186-188","kind":"source"},"dl":{"ref":"chen08209/FlClash@v0.9.2:lib/common/protocol.dart:7; AndroidManifest.xml:69-73","kind":"source"},"core":{"ref":"chen08209/FlClash@v0.9.2 core submodule c5062921","kind":"source"}}},{"id":"flclashx","name":"FlClashX","family":"mihomo","platforms":["android","windows","macos","linux"],"openSource":true,"repo":"github.com/pluralplay/FlClashX","brandIcon":"FlClashX","downloads":{"android":[{"label":"APK","url":"https://github.com/pluralplay/FlClashX/releases/latest/download/FlClashX-android-universal.apk"}],"windows":[{"label":"Windows (x64)","url":"https://github.com/pluralplay/FlClashX/releases/latest/download/FlClashX-windows-amd64-setup.exe"},{"label":"Windows on ARM","url":"https://github.com/pluralplay/FlClashX/releases/latest/download/FlClashX-windows-arm64-setup.exe"}],"macos":[{"label":"Apple Silicon","url":"https://github.com/pluralplay/FlClashX/releases/latest/download/FlClashX-macos-arm64.dmg"},{"label":"Intel","url":"https://github.com/pluralplay/FlClashX/releases/latest/download/FlClashX-macos-amd64.dmg"}],"linux":[{"label":"amd64 (.deb)","url":"https://github.com/pluralplay/FlClashX/releases/latest/download/FlClashX-linux-amd64.deb"},{"label":"amd64 (AppImage)","url":"https://github.com/pluralplay/FlClashX/releases/latest/download/FlClashX-linux-amd64.AppImage"},{"label":"arm64 (.deb)","url":"https://github.com/pluralplay/FlClashX/releases/latest/download/FlClashX-linux-arm64.deb"}]},"latest":[{"version":"v0.4.2","date":"2026-07-18"},{"version":"v0.5.0-pre.3","date":"2026-10-28","channel":"pre"}],"cores":[{"kind":"mihomo","version":"v1.19.28 (0.4.2)","src":["cv"]}],"uaPatterns":[{"maxVersion":"0.4.x","regex":"^flclash x/","example":"FlClash X/v0.4.2 core/v1.19.28 Platform/android","src":["ua4"]},{"minVersion":"0.5.0","regex":"^flclashx/","example":"FlClashX/v0.5.0-pre.3 core/v1.19.33 Platform/linux","note":"core part inferred","src":["ua5"]}],"uaOverridable":"per-subscription","requestHeaders":[{"name":"x-hwid","value":"device id","when":"default-on","src":["hw"]},{"name":"x-device-os","value":"OS name","when":"default-on","src":["hw"]},{"name":"x-ver-os","value":"OS version","when":"default-on","src":["hw"]},{"name":"x-device-model","value":"model","when":"default-on","src":["hw"]}],"accepts":["MIHOMO"],"best":"MIHOMO","bestWhy":{"text":"mihomo; Remnawave extended client","src":["rwext"]},"capabilities":{"xhttp":true,"reality":true,"vision":true,"hysteria2":true,"tun":true},"capabilitiesSrc":["cv"],"headersRead":[{"name":"subscription-userinfo","src":["prof"]},{"name":"content-disposition","src":["prof"]},{"name":"announce","format":"base64: ok","src":["prof"]},{"name":"support-url","src":["prof"]},{"name":"profile-update-interval","format":"hours","src":["prof"]},{"name":"x-hwid-max-devices-reached","format":"true","src":["prof"]},{"name":"x-hwid-not-supported","format":"true","src":["prof"]},{"name":"flclashx-*","note":"servicename, servicelogo, serverinfo, view, widgets, settings, custom, hex, background, buyplan, buytraffic, newdomain, globalmode, override, …; see flclashx.app/#headers","src":["prof"]},{"name":"profile-title","format":"plain|base64:","since":"0.5.0","src":["ph"]},{"name":"profile-web-page-url","since":"0.5.0","src":["ph"]}],"deepLinks":[{"template":"flclashx://install-config?url={URL_ENC}","src":["dl","rwpage"]}],"limits":[],"pitfalls":[{"text":"0.4.x UA has a space (\"FlClash X\"); match ^flclash ?x/ or plain ^flclash","src":["ua4","rwext"]},{"text":"Android HWID = raw ANDROID_ID; desktop = SHA-256(machine id)[:16] uppercase","src":["hw"]}],"sources":{"ua4":{"ref":"pluralplay/FlClashX@main(v0.4.2):lib/common/package.dart:10-14; lib/state.dart:162-168","kind":"source"},"ua5":{"ref":"pluralplay/FlClashX@v0.5.0-pre.3:lib/common/package.dart:13-17","kind":"source"},"cv":{"ref":"pluralplay/FlClashX@main:lib/core_version.dart:5","kind":"source"},"hw":{"ref":"pluralplay/FlClashX@main:lib/utils/device_info_service.dart:36-161; lib/controller.dart:431","kind":"source"},"prof":{"ref":"pluralplay/FlClashX@main:lib/models/profile.dart:174-230; controller.dart:499-510","kind":"source"},"ph":{"ref":"pluralplay/FlClashX@v0.5.0-pre.3:lib/models/profile.dart:343-351; provider_headers.dart:28,195-211","kind":"source"},"dl":{"ref":"pluralplay/FlClashX@main:AndroidManifest.xml:71-83; lib/common/window.dart:17-19","kind":"source"},"rwext":{"ref":"remnawave/backend@3.4.7:src/modules/subscription-template/constants/extended-clients.ts:1-28","kind":"remnawave"},"rwpage":{"ref":"remnawave/backend@3.4.7:src/modules/subscription-page-configs/constants/default-subpage-config.ts:692","kind":"remnawave"}}},{"id":"clash-party","name":"Clash Party (ex Mihomo Party)","family":"mihomo","platforms":["windows","macos","linux"],"openSource":true,"repo":"github.com/mihomo-party-org/clash-party","latest":[{"version":"v2.0.4","date":"2026-10-18"}],"cores":[{"kind":"mihomo","version":"stable | alpha | mihomo-smart","src":["prep"]}],"uaPatterns":[{"regex":"^mihomo\\.party/","example":"mihomo.party/v2.0.4 (clash.meta)","src":["ua"]}],"uaOverridable":"global+per-subscription","requestHeaders":[{"name":"Accept-Encoding","value":"identity","when":"always","src":["ua"]}],"accepts":["MIHOMO"],"best":"MIHOMO","bestWhy":{"text":"mihomo core","src":["prep"]},"capabilities":{"xhttp":true,"reality":true,"vision":true,"hysteria2":true,"tuic":true,"tun":true},"capabilitiesSrc":["prep"],"headersRead":[{"name":"content-disposition","note":"only while name is \"Remote File\"","src":["prof"]},{"name":"profile-web-page-url","src":["prof"]},{"name":"profile-update-interval","format":"hours","src":["prof"]},{"name":"subscription-userinfo","src":["prof"]}],"deepLinks":[{"template":"mihomo://install-config?url={URL_ENC}&name={NAME}","note":"clash:// too","src":["dl"]}],"limits":[],"pitfalls":[],"sources":{"ua":{"ref":"mihomo-party-org/clash-party@v2.0.4:src/main/config/profile.ts:426-429,571","kind":"source"},"prof":{"ref":"mihomo-party-org/clash-party@v2.0.4:src/main/config/profile.ts:604-617","kind":"source"},"dl":{"ref":"mihomo-party-org/clash-party@v2.0.4:electron-builder.yml:23-27; src/main/deeplink.ts:20-23","kind":"source"},"prep":{"ref":"mihomo-party-org/clash-party@v2.0.4:scripts/prepare.mjs:60-93","kind":"source"}}},{"id":"clash-nyanpasu","name":"Clash Nyanpasu","family":"mihomo","platforms":["windows","macos","linux"],"openSource":true,"repo":"github.com/libnyanpasu/clash-nyanpasu","latest":[{"version":"v2.0.0","date":"2026-10-27"}],"cores":[{"kind":"mihomo","version":"v1.19.33 (+alpha)","src":["man"]},{"kind":"clash-rs","version":"v0.10.10","src":["man"]},{"kind":"clash-premium","version":"2023-09-05","src":["man"]}],"uaPatterns":[{"regex":"^clash-nyanpasu/","example":"clash-nyanpasu/v2.0.0","src":["ua"]}],"uaOverridable":"per-subscription","requestHeaders":[{"name":"x-hwid","value":"device id","when":"always","src":["ua","hw"]},{"name":"x-device-os","value":"OS name","when":"always","src":["ua","hw"]},{"name":"x-ver-os","value":"OS version","when":"always","src":["ua","hw"]},{"name":"x-device-model","value":"model","when":"always","src":["ua","hw"]}],"accepts":["MIHOMO","CLASH"],"best":"MIHOMO","bestWhy":{"text":"default core is mihomo","src":["man"]},"capabilities":{"xhttp":"partial","reality":"partial","tun":true},"capabilitiesSrc":["man"],"headersRead":[{"name":"profile-title","format":"plain|base64:","src":["pt"]},{"name":"profile-update-interval","format":"hours","src":["pt"]},{"name":"subscription-userinfo","src":["pt"]},{"name":"content-disposition","src":["pt"]}],"deepLinks":[{"template":"clash-nyanpasu://install-config?url={URL_ENC}&name={NAME}","note":"clash:// too","src":["dl"]}],"limits":[],"pitfalls":[{"text":"same UA on clash-rs/Premium cores, which cannot run XHTTP or newer protocols","src":["man"]}],"sources":{"ua":{"ref":"libnyanpasu/clash-nyanpasu@v2.0.0:backend/tauri/src/service/profile_file.rs:2081-2098","kind":"source"},"hw":{"ref":"libnyanpasu/clash-nyanpasu@v2.0.0:backend/tauri/src/utils/hwid.rs:53-60","kind":"source"},"pt":{"ref":"libnyanpasu/clash-nyanpasu@v2.0.0:backend/tauri/src/service/profile_file.rs:2187-2200","kind":"source"},"dl":{"ref":"libnyanpasu/clash-nyanpasu@v2.0.0:frontend/nyanpasu/src/utils/deep-link.ts:5-17","kind":"source"},"man":{"ref":"libnyanpasu/clash-nyanpasu@v2.0.0:manifest/version.json:4-10","kind":"source"}}},{"id":"koala-clash","name":"Koala Clash","family":"mihomo","platforms":["windows","macos","linux"],"openSource":true,"repo":"github.com/coolcoala/koala-clash (ex clash-verge-rev-lite)","brandIcon":"KoalaClash","downloads":{"windows":[{"label":"Windows (x64)","url":"https://github.com/coolcoala/clash-verge-rev-lite/releases/latest/download/Koala.Clash_x64-setup.exe"}],"macos":[{"label":"Apple Silicon","url":"https://github.com/coolcoala/clash-verge-rev-lite/releases/latest/download/Koala.Clash_arm64.pkg"},{"label":"Intel","url":"https://github.com/coolcoala/clash-verge-rev-lite/releases/latest/download/Koala.Clash_x64.pkg"}],"linux":[{"label":"amd64 (.deb)","url":"https://github.com/coolcoala/clash-verge-rev-lite/releases/latest/download/Koala.Clash_amd64.deb"},{"label":"arm64 (.deb)","url":"https://github.com/coolcoala/clash-verge-rev-lite/releases/latest/download/Koala.Clash_arm64.deb"}]},"latest":[{"version":"1.5.0","date":"2026-10-09"}],"cores":[{"kind":"mihomo","src":["prep"]}],"uaPatterns":[{"regex":"^koala-clash/","example":"koala-clash/1.5.0","note":"no \"v\"","src":["ua"]}],"uaOverridable":"global+per-subscription","requestHeaders":[{"name":"x-hwid","value":"device id","when":"always","src":["prof","dev"]},{"name":"x-device-os","value":"OS name","when":"always","src":["prof","dev"]},{"name":"x-ver-os","value":"OS version","when":"always","src":["prof","dev"]},{"name":"x-device-model","value":"model","when":"always","src":["prof","dev"]}],"accepts":["MIHOMO"],"best":"MIHOMO","bestWhy":{"text":"mihomo; Remnawave extended client","src":["rwext"]},"capabilities":{"xhttp":true,"reality":true,"tun":true},"capabilitiesSrc":["prep"],"headersRead":[{"name":"subscription-userinfo","src":["hdr"]},{"name":"profile-title","format":"base64:","src":["hdr"]},{"name":"content-disposition","src":["hdr"]},{"name":"profile-web-page-url","src":["hdr"]},{"name":"profile-web-page-name","format":"base64:","src":["hdr"]},{"name":"profile-update-interval","format":"hours; locks the interval","src":["hdr"]},{"name":"profile-logo","format":"URL","src":["hdr"]},{"name":"support-url","src":["hdr"]},{"name":"announce","format":"base64:, \\n becomes a newline","src":["hdr"]},{"name":"global-mode","format":"false disables","src":["hdr"]},{"name":"expand-proxy-groups","src":["hdr"]},{"name":"custom-css","format":"URL","src":["hdr"]},{"name":"x-hwid-limit","format":"true","note":"or x-hwid-max-devices-reached: blocks adding the profile","src":["hdr"]}],"deepLinks":[{"template":"koala-clash://install-config?url={URL_ENC}&name={NAME}","note":"confirm dialog; clash:// and mihomo:// too","src":["dl","rwpage"]}],"limits":[{"text":"rejects an HTML/XML content-type","src":["hdr"]}],"pitfalls":[{"text":"header names matched with endsWith, so any prefix works","src":["hdr"]}],"sources":{"ua":{"ref":"coolcoala/koala-clash@1.5.0:src/main/utils/userAgent.ts:10","kind":"source"},"prof":{"ref":"coolcoala/koala-clash@1.5.0:src/main/config/profile.ts:277-281","kind":"source"},"dev":{"ref":"coolcoala/koala-clash@1.5.0:src/main/utils/deviceInfo.ts:18-55","kind":"source"},"hdr":{"ref":"coolcoala/koala-clash@1.5.0:src/main/config/profile.ts:303-420","kind":"source"},"dl":{"ref":"coolcoala/koala-clash@1.5.0:electron-builder.yml:19-24; src/main/index.ts:381-393","kind":"source"},"prep":{"ref":"coolcoala/koala-clash@1.5.0:scripts/prepare.mjs","kind":"source"},"rwext":{"ref":"remnawave/backend@3.4.7:src/modules/subscription-template/constants/extended-clients.ts:1-28","kind":"remnawave"},"rwpage":{"ref":"remnawave/backend@3.4.7:src/modules/subscription-page-configs/constants/default-subpage-config.ts:856","kind":"remnawave"}}},{"id":"prizrak-box","name":"Prizrak-Box","family":"mihomo","platforms":["windows","macos","linux"],"openSource":true,"repo":"github.com/legiz-ru/Prizrak-Box","brandIcon":"PrizrakBox","downloads":{"windows":[{"label":"Windows (x64)","url":"https://github.com/legiz-ru/Prizrak-Box/releases/latest/download/windows-amd64.msi"},{"label":"Windows on ARM","url":"https://github.com/legiz-ru/Prizrak-Box/releases/latest/download/windows-arm64.msi"}],"macos":[{"label":"Apple Silicon","url":"https://github.com/legiz-ru/Prizrak-Box/releases/latest/download/macos-arm64.zip"},{"label":"Intel","url":"https://github.com/legiz-ru/Prizrak-Box/releases/latest/download/macos-amd64.zip"}],"linux":[{"label":"amd64 (.deb)","url":"https://github.com/legiz-ru/Prizrak-Box/releases/latest/download/linux-amd64.deb"},{"label":"arm64 (.deb)","url":"https://github.com/legiz-ru/Prizrak-Box/releases/latest/download/linux-arm64.deb"}]},"latest":[{"version":"v1.0.20","date":"2025-10-27"},{"version":"v2.0.0-rc01","date":"2026-10-26","channel":"pre"}],"cores":[{"kind":"mihomo","version":"snakem982 fork ~v1.19.13 (1.0.20)","note":"predates XHTTP (inferred)","src":["gomod1"]},{"kind":"mihomo","version":"Prizrak-Core v1.19.33-r3 (rc01)","src":["gomod2"]}],"uaPatterns":[{"regex":"^prizrak-box/","example":"prizrak-box/v1.0.20","src":["ua1"]},{"minVersion":"2.0.0","regex":"^prizrak-box/v?\\d[^ ]* \\(desktop build;","example":"prizrak-box/v2.0.0-rc01 (Desktop Build; Windows OS; Prizrak-Core v1.19.33-r3)","src":["ua2"]},{"maxVersion":"1.0.x","regex":"^clash-verge/v2\\.3\\.0$","example":"clash-verge/v2.3.0","note":"1.0.20 with the HWID setting off","src":["ua1"]}],"uaOverridable":"no","requestHeaders":[{"name":"x-hwid","value":"device id","when":"default-on","src":["ua1","set"]},{"name":"x-device-os","value":"OS name","when":"default-on","src":["ua1","set"]},{"name":"x-ver-os","value":"OS version","when":"default-on","src":["ua1","set"]},{"name":"x-device-model","value":"model","when":"default-on","src":["ua1","set"]}],"accepts":["MIHOMO"],"best":"MIHOMO","bestWhy":{"text":"mihomo; Remnawave extended client","src":["rwext"]},"capabilities":{"xhttp":"partial","tun":true},"capabilitiesSrc":["gomod1","gomod2"],"headersRead":[{"name":"content-disposition","src":["res"]},{"name":"profile-title","format":"base64:","src":["res"]},{"name":"subscription-userinfo","src":["res"]},{"name":"profile-update-interval","src":["res"]},{"name":"profile-web-page-url","src":["res"]},{"name":"support-url","src":["res"]},{"name":"announce","format":"base64:","since":"2.0.0-rc01","note":"rc01 also: Profile-Logo, Announce-Url, Pxd-Template(-Scheme), Pxd-Theme, X-Hwid-*, global-mode, Subscription-Renew-Url, Notify-*, new-domain, fallback-url","src":["gomod2"]}],"deepLinks":[{"template":"prizrak-box://install-config?url={URL_ENC}","src":["dl","rwpage"]}],"limits":[{"text":"1.0.20 core has no XHTTP: a MIHOMO template with xhttp proxies may fail there","src":["gomod1"]}],"pitfalls":[{"text":"1.0.20 with HWID off is indistinguishable from Clash Verge 2.3.0","src":["ua1"]}],"sources":{"ua1":{"ref":"legiz-ru/Prizrak-Box@v1.0.20:src-go/pkg/utils/httpclient.go:28,52-77; api/handlers/pandora.go:156-161","kind":"source"},"ua2":{"ref":"legiz-ru/Prizrak-Box@dev_21:src-go/pkg/utils/httpclient.go:79-88","kind":"source"},"set":{"ref":"legiz-ru/Prizrak-Box@v1.0.20:src/store/settingStore.ts:14","kind":"source"},"res":{"ref":"legiz-ru/Prizrak-Box@v1.0.20:src-go/internal/resolve.go:254-447","kind":"source"},"gomod1":{"ref":"legiz-ru/Prizrak-Box@v1.0.20:go.mod:14,117","kind":"source"},"gomod2":{"ref":"legiz-ru/Prizrak-Box@dev_21:go.mod:159","kind":"source"},"dl":{"ref":"legiz-ru/Prizrak-Box@v1.0.20:forge.config.ts:38","kind":"source"},"rwext":{"ref":"remnawave/backend@3.4.7:src/modules/subscription-template/constants/extended-clients.ts:1-28","kind":"remnawave"},"rwpage":{"ref":"remnawave/backend@3.4.7:src/modules/subscription-page-configs/constants/default-subpage-config.ts:1020","kind":"remnawave"}}},{"id":"flowvy","name":"Flowvy","family":"mihomo","platforms":["windows","macos","linux"],"openSource":false,"repo":"github.com/flowvy/desktop (README + releases)","latest":[{"version":"0.3.5","date":"2026-08-27"},{"version":"1.0.0-beta.9","date":"2026-10-01","channel":"pre"}],"cores":[{"kind":"mihomo","src":["rwc"]}],"uaPatterns":[{"regex":"^flowvy/","example":"Flowvy/1.0.0-beta.9","note":"format unverified","src":["rwext"]}],"uaOverridable":"unknown","requestHeaders":[{"name":"x-hwid","value":"?","when":"unknown","src":["rwc"]}],"accepts":["MIHOMO"],"best":"MIHOMO","bestWhy":{"text":"Remnawave lists core mihomo","src":["rwc"]},"capabilities":{},"capabilitiesSrc":[],"headersRead":[{"name":"client-update-mirror","note":"+ subscription-fallback-url, client-accent-color, profile-config-restrict, profile-advanced-info; plain or base64:","src":["rel"]}],"deepLinks":[],"limits":[],"pitfalls":[],"sources":{"rel":{"ref":"flowvy/desktop release notes","kind":"release-notes"},"rwc":{"ref":"remnawave/panel@f52f3ba:src/data/clients.ts:380-402","kind":"remnawave"},"rwext":{"ref":"remnawave/backend@3.4.7:src/modules/subscription-template/constants/extended-clients.ts:1-28","kind":"remnawave"}}},{"id":"murge","name":"Murge","family":"mihomo","platforms":["windows","macos","linux"],"openSource":true,"repo":"github.com/RoaycL/Murge (assumed to be the one Remnawave means)","latest":[{"version":"v0.9.36","date":"2026-10-27"}],"cores":[{"kind":"mihomo","version":"v1.19.30","src":["assets"]}],"uaPatterns":[{"regex":"^clashforwindows/","example":"ClashforWindows/0.20.39","note":"hard-coded; indistinguishable from real CFW","src":["ua"]}],"uaOverridable":"no","requestHeaders":[{"name":"Accept","value":"application/x-yaml,text/yaml,text/plain,application/octet-stream,*/*","when":"always","src":["ua"]}],"accepts":["MIHOMO","CLASH"],"best":"MIHOMO","bestWhy":{"text":"mihomo core, but its UA lands in ^clash (CLASH)","src":["ua","assets"]},"capabilities":{"xhttp":true},"capabilitiesSrc":["assets"],"headersRead":[{"name":"content-disposition","src":["ua"]}],"deepLinks":[{"template":"murge://…","note":"format not checked","src":["brand"]}],"limits":[],"pitfalls":[{"text":"the 'murge' alternative in Remnawave's Mihomo regex never matches its UA","src":["ua","rwdef"]}],"sources":{"ua":{"ref":"RoaycL/Murge@v0.9.36:src/main/subscriptions/subscription-fetcher.ts:85-88,656","kind":"source"},"assets":{"ref":"RoaycL/Murge@v0.9.36:resources/mihomo-assets.json:2","kind":"source"},"brand":{"ref":"RoaycL/Murge@v0.9.36:brand.config.json:8","kind":"source"},"rwdef":{"ref":"remnawave/backend@3.4.7:prisma/seed/default/response-rules.ts:8-95","kind":"remnawave"}}},{"id":"cmfa","name":"Clash Meta for Android","family":"mihomo","platforms":["android"],"openSource":true,"repo":"github.com/MetaCubeX/ClashMetaForAndroid","brandIcon":"ClashMeta","downloads":{"android":[{"label":"F-Droid","url":"https://f-droid.org/packages/com.github.metacubex.clash.meta/"},{"label":"GitHub releases","url":"https://github.com/MetaCubeX/ClashMetaForAndroid/releases/latest"}]},"latest":[{"version":"v2.11.36","date":"2026-10-21"}],"cores":[{"kind":"mihomo","version":"v1.19.33 (3f27ef39)","src":["core"]}],"uaPatterns":[{"regex":"^clashmetaforandroid/","example":"ClashMetaForAndroid/2.11.36.Meta","note":"alpha flavor: .Alpha","src":["ua"]}],"uaOverridable":"no","requestHeaders":[],"accepts":["MIHOMO"],"best":"MIHOMO","bestWhy":{"text":"mihomo v1.19.33","src":["core"]},"capabilities":{"xhttp":true,"reality":true,"vision":true,"vlessEncryption":true,"hysteria2":true,"tuic":true,"wireguard":true,"anytls":true,"masque":true,"tun":true},"capabilitiesSrc":["core"],"headersRead":[{"name":"subscription-userinfo","src":["ua"]},{"name":"profile-update-interval","src":["ua"]}],"deepLinks":[{"template":"clashmeta://install-config?name={NAME}&url={URL_ENC}","note":"clash:// too; &type=&update-interval=","src":["dl","rwpage"]}],"limits":[],"pitfalls":[{"text":"also matches ^clash; caught earlier by clash[-.]?meta","src":["rwdef"]}],"sources":{"ua":{"ref":"MetaCubeX/ClashMetaForAndroid@v2.11.36:core/src/main/golang/native/config/fetch.go:42-50","kind":"source"},"dl":{"ref":"MetaCubeX/ClashMetaForAndroid@v2.11.36:AndroidManifest.xml:87-89; ExternalControlActivity.kt:33-44","kind":"source"},"core":{"ref":"MetaCubeX/ClashMetaForAndroid@v2.11.36 mihomo submodule 3f27ef39","kind":"source"},"rwdef":{"ref":"remnawave/backend@3.4.7:prisma/seed/default/response-rules.ts:8-95","kind":"remnawave"},"rwpage":{"ref":"remnawave/backend@3.4.7:src/modules/subscription-page-configs/constants/default-subpage-config.ts:1892","kind":"remnawave"}}},{"id":"clashx-meta","name":"ClashX Meta","family":"mihomo","platforms":["macos"],"openSource":true,"repo":"github.com/MetaCubeX/ClashX.Meta","latest":[{"version":"v1.4.47","date":"2026-10-21"}],"cores":[{"kind":"mihomo","version":"v1.19.33","src":["ci"]}],"uaPatterns":[{"regex":"^clashx(?: |%20)meta/","example":"ClashX%20Meta/612 CFNetwork/1568.100.1 Darwin/24.0.0","note":"default CFNetwork UA; %20 encoding inferred","src":["ua"]}],"uaOverridable":"no","requestHeaders":[],"accepts":["MIHOMO"],"best":"MIHOMO","bestWhy":{"text":"mihomo core","src":["ci"]},"capabilities":{"xhttp":true,"tun":true},"capabilitiesSrc":["ci"],"headersRead":[{"name":"content-disposition","note":"via suggestedFilename","src":["ua"]}],"deepLinks":[{"template":"clashx://install-config?url={URL_ENC}&name={NAME}","note":"clash:// too","src":["dl"]}],"limits":[],"pitfalls":[{"text":"Remnawave's 'clashx meta' (space) misses '%20', so it falls to ^clash: CLASH (inferred)","src":["ua","rwdef"]}],"sources":{"ua":{"ref":"MetaCubeX/ClashX.Meta@v1.4.47:ClashX/General/Managers/RemoteConfigManager.swift:156-184","kind":"inferred"},"dl":{"ref":"MetaCubeX/ClashX.Meta@v1.4.47:Info.plist:49-64; AppDelegate.swift:800-810","kind":"source"},"ci":{"ref":"MetaCubeX/ClashX.Meta@v1.4.47:.github/workflows (MIHOMO_TAG)","kind":"source"},"rwdef":{"ref":"remnawave/backend@3.4.7:prisma/seed/default/response-rules.ts:8-95","kind":"remnawave"}}},{"id":"clash-mi","name":"Clash Mi","vendor":"KaringX","family":"mihomo","platforms":["ios","macos","android","windows","linux"],"openSource":true,"repo":"github.com/KaringX/clashmi","brandIcon":"ClashMi","latest":[{"version":"v1.0.31.1703","date":"2026-10-09"}],"cores":[{"kind":"mihomo","version":"v1.19.33","src":["ua"]}],"uaPatterns":[{"regex":"^clashmeta/[\\d.]+; mihomo/","example":"ClashMeta/1.19.33; mihomo/1.19.33","note":"no app name in the subscription UA","src":["ua"]},{"regex":"^clashmi/","example":"ClashMi/1.0.32.1801 platform/ios ClashMeta/1.19.33; mihomo/1.19.33","note":"generic HTTP fallback UA","src":["http"]}],"uaOverridable":"global+per-subscription","requestHeaders":[{"name":"x-hwid","value":"device id","when":"opt-in","src":["hw"]},{"name":"x-device-os","value":"OS name","when":"opt-in","src":["hw"]},{"name":"x-ver-os","value":"OS version","when":"opt-in","src":["hw"]},{"name":"x-device-model","value":"model","when":"opt-in","src":["hw"]}],"accepts":["MIHOMO"],"best":"MIHOMO","bestWhy":{"text":"needs YAML with proxies or proxy-providers","src":["pm"]},"capabilities":{"xhttp":true,"tun":true},"capabilitiesSrc":["ua"],"headersRead":[{"name":"subscription-userinfo","src":["pm"]},{"name":"profile-update-interval","format":"hours, min 1","src":["pm"]},{"name":"profile-title","format":"base64:","src":["pm"]}],"deepLinks":[{"template":"clashmi://install-config?url={URL_ENC}&name={NAME}&xhwid=1","note":"xhwid=1 turns HWID on for the profile","src":["dl"]}],"limits":[],"pitfalls":[{"text":"ClashMi/… fallback UA misses Remnawave's Mihomo regex and falls to ^clash","src":["http","rwdef"]}],"sources":{"ua":{"ref":"KaringX/clashmi@main:lib/app/modules/setting_manager.dart:312-318; app_utils.dart:61","kind":"source"},"http":{"ref":"KaringX/clashmi@main:lib/app/utils/http_utils.dart:26-30","kind":"source"},"hw":{"ref":"KaringX/clashmi@main:lib/app/utils/hwid_utils.dart:7-16; scheme_handler.dart:88","kind":"source"},"pm":{"ref":"KaringX/clashmi@main:lib/app/modules/profile_manager.dart:224,597,624,699-720","kind":"source"},"dl":{"ref":"KaringX/clashmi@main:AndroidManifest.xml:85-86","kind":"source"},"rwdef":{"ref":"remnawave/backend@3.4.7:prisma/seed/default/response-rules.ts:8-95","kind":"remnawave"}}},{"id":"rabbithole","name":"Rabbit Hole","vendor":"RABBIT HOLE STUDIO","family":"mihomo","platforms":["ios","macos"],"openSource":false,"latest":[{"version":"1.6.0","date":"2026-10-04"}],"cores":[{"kind":"mihomo","note":"inferred from docs recommending Mihomo YAML","src":["cfg"]}],"uaPatterns":[{"regex":"^rabbit-hole/","example":"Rabbit-Hole/iOS (1.6.0-215; language en_US)","src":["hdr"]},{"regex":"^clash-meta/rabbithole","example":"Clash-Meta/RabbitHole (Build #180; language en_US)","note":"obsolete","src":["hdr"]}],"uaOverridable":"unknown","requestHeaders":[{"name":"x-hwid","value":"device id","when":"always","src":["hdr"]},{"name":"x-device-os","value":"OS name","when":"always","src":["hdr"]},{"name":"x-ver-os","value":"OS version","when":"always","src":["hdr"]},{"name":"x-device-model","value":"model","when":"always","src":["hdr"]},{"name":"x-app-version","value":"app version","when":"always","src":["hdr"]}],"accepts":["MIHOMO","XRAY_JSON"],"best":"MIHOMO","bestWhy":{"text":"\"Rabbit Hole recommends Mihomo YAML\"","src":["cfg"]},"capabilities":{},"capabilitiesSrc":[],"headersRead":[{"name":"display-mode","format":"single|full","src":["hdr"]},{"name":"force-display-mode","src":["hdr"]},{"name":"use-progress-bar","src":["hdr"]},{"name":"protocols-hidden","src":["hdr"]},{"name":"exclude-filter","format":"regex","src":["hdr"]},{"name":"profile-title","format":"base64","src":["hdr"]},{"name":"subscription-userinfo","src":["hdr"]},{"name":"subscription-refill-date","src":["hdr"]},{"name":"support-url","src":["hdr"]},{"name":"profile-update-interval","src":["hdr"]}],"deepLinks":[{"template":"rabbithole://add/{URL}","src":["dl"]}],"limits":[{"text":"iOS VPN extension 50 MB; keep rule-providers within 25–30 MB","src":["cfg"]}],"pitfalls":[{"text":"'rabbithole' (no hyphen) never matches Rabbit-Hole/…; use ^rabbit (moved to MIHOMO in backend PR #148; docs still show rabbithole in SINGBOX)","src":["rwdef","rwdocs"]}],"sources":{"hdr":{"ref":"rabbit-hole-1.gitbook.io …/for-devs/rabbit-hole-headers","kind":"docs"},"cfg":{"ref":"rabbit-hole-1.gitbook.io …/for-devs/config-setup","kind":"docs"},"dl":{"ref":"rabbit-hole-1.gitbook.io …/deep-links-and-user-flow","kind":"docs"},"rwdef":{"ref":"remnawave/backend@3.4.7:prisma/seed/default/response-rules.ts:8-95","kind":"remnawave"},"rwdocs":{"ref":"remnawave/panel@f52f3ba:docs/learn-en/routing-rules.md:176","kind":"remnawave"}}},{"id":"stash","name":"Stash","family":"stash","platforms":["ios","tvos","macos"],"openSource":false,"brandIcon":"Stash","downloads":{"ios":[{"label":"App Store","url":"https://apps.apple.com/us/app/stash-rule-based-proxy/id1596063349"}],"tvos":[{"label":"App Store","url":"https://apps.apple.com/us/app/stash-rule-based-proxy/id1596063349"}],"macos":[{"label":"App Store","url":"https://apps.apple.com/us/app/stash-rule-based-proxy/id1596063349"}]},"latest":[{"version":"3.4.0","date":"2026-06-23","platform":["ios","tvos"]},{"version":"4.2.0","date":"2026-07-02","platform":["macos"]}],"cores":[{"kind":"proprietary","note":"Clash-compatible","src":["types"]}],"uaPatterns":[{"regex":"^stash","example":"Stash/3.4.0 Clash/1.11.0","note":"exact format unverified","src":["rwdef"]}],"uaOverridable":"unknown","requestHeaders":[],"accepts":["STASH","CLASH"],"best":"STASH","bestWhy":{"text":"native Stash YAML","src":["types"]},"capabilities":{"xhttp":"partial","reality":true,"vision":true,"hysteria2":true,"tuic":true,"wireguard":true,"anytls":true,"masque":"partial"},"capabilitiesSrc":["types"],"headersRead":[{"name":"subscription-userinfo","format":"upload=; download=; total=; expire=","src":["sub"]}],"deepLinks":[{"template":"stash://install-config?url={URL_ENC}","note":"also https://link.stash.ws/install-config/<host/path>","src":["dl","rwpage"]}],"limits":[{"text":"XHTTP / MASQUE / VLESS-enc documented for iOS 3.6+ / macOS 4.3+, newer than the latest release notes","src":["types","rel"]}],"pitfalls":[{"text":"checks every 12 h, tries a HEAD request first: the panel must answer HEAD","src":["sub"]}],"sources":{"types":{"ref":"stash.wiki/en/proxy-protocols/proxy-types","kind":"docs"},"sub":{"ref":"stash.wiki/en/features/service-provider-subscription","kind":"docs"},"dl":{"ref":"stash.wiki/en/faq/url-schema","kind":"docs"},"rel":{"ref":"stash.wiki/en/release-notes/ios; /macos","kind":"release-notes"},"rwdef":{"ref":"remnawave/backend@3.4.7:prisma/seed/default/response-rules.ts:8-95","kind":"remnawave"},"rwpage":{"ref":"remnawave/backend@3.4.7:src/modules/subscription-page-configs/constants/default-subpage-config.ts:382","kind":"remnawave"}}},{"id":"sfa","name":"sing-box for Android (SFA)","vendor":"SagerNet","family":"sing-box","platforms":["android"],"openSource":true,"repo":"github.com/SagerNet/sing-box-for-android","brandIcon":"Singbox","latest":[{"version":"1.14.4","date":"2026-10-24"},{"version":"1.15.0-alpha.13","date":"2026-10-24","channel":"pre"}],"cores":[{"kind":"sing-box","version":"same as app","src":["ua"]}],"uaPatterns":[{"minVersion":"1.13.20","regex":"^sfa \\(sing-box ","example":"SFA (sing-box 1.14.4; language en_US)","src":["ua"]},{"maxVersion":"1.13.19","regex":"^sfa/","example":"SFA/1.13.19 (590; sing-box 1.13.19; language zh_CN)","note":"version code illustrative","src":["ua"]}],"uaOverridable":"no","requestHeaders":[],"accepts":["SINGBOX"],"best":"SINGBOX","bestWhy":{"text":"the body must pass Libbox.checkConfig","src":["upd"]},"capabilities":{"xhttp":false,"reality":true,"vision":true,"vlessEncryption":false,"hysteria2":true,"tuic":true,"wireguard":true,"anytls":true,"tun":true},"capabilitiesSrc":["core"],"headersRead":[],"deepLinks":[{"template":"sing-box://import-remote-profile?url={URL_ENC}#{NAME}","note":"name = fragment, else host","src":["dl"]}],"limits":[{"text":"legacy DNS server format removed in 1.14; new format from 1.12: gate templates on \"sing-box X.Y\"","src":["dep"]}],"pitfalls":[{"text":"random curl/7.x UA if an embedder sets none","src":["lib"]}],"sources":{"ua":{"ref":"SagerNet/sing-box-for-android@a548a79:app/src/main/java/io/nekohasekai/sfa/utils/HTTPClient.kt:11-16 (unified in d2ee6831)","kind":"source"},"upd":{"ref":"SagerNet/sing-box-for-android@a548a79:bg/UpdateProfileWork.kt:78-79","kind":"source"},"dl":{"ref":"SagerNet/sing-box@v1.14.4:experimental/libbox/remote_profile.go:23-40; SFA AndroidManifest.xml:75-76","kind":"source"},"lib":{"ref":"SagerNet/sing-box@v1.14.4:experimental/libbox/http.go:204-226","kind":"source"},"core":{"ref":"SagerNet/sing-box@v1.14.4:constant/v2ray.go:4-8; option/vless.go:20-26; option/tls.go:125-135","kind":"source"},"dep":{"ref":"SagerNet/sing-box@v1.14.4:docs/deprecated.md:66-100","kind":"source"}}},{"id":"sf-apple","name":"sing-box for Apple (SFI / SFM / SFT)","vendor":"SagerNet","family":"sing-box","platforms":["ios","macos","tvos"],"openSource":true,"repo":"github.com/SagerNet/sing-box-for-apple","brandIcon":"Singbox","latest":[{"version":"1.14.4","date":"2026-10-24"}],"cores":[{"kind":"sing-box","version":"same as app","src":["ua"]}],"uaPatterns":[{"platform":["ios"],"regex":"^sfi[ /]","example":"SFI (sing-box 1.14.4; language en_US)","src":["ua"]},{"platform":["macos"],"regex":"^sfm[ /]","example":"SFM (sing-box 1.14.4; language ru_RU)","src":["ua"]},{"platform":["tvos"],"regex":"^sft[ /]","example":"SFT (sing-box 1.14.4; language en_US)","src":["ua"]}],"uaOverridable":"no","requestHeaders":[],"accepts":["SINGBOX"],"best":"SINGBOX","bestWhy":{"text":"LibboxCheckConfig gate","src":["upd"]},"capabilities":{"xhttp":false,"reality":true,"vision":true,"vlessEncryption":false,"hysteria2":true,"tuic":true,"wireguard":true,"anytls":true,"tun":true},"capabilitiesSrc":["core"],"headersRead":[],"deepLinks":[{"template":"sing-box://import-remote-profile?url={URL_ENC}#{NAME}","note":"SFT scheme unverified","src":["plist"]}],"limits":[{"text":"macOS is standalone only (no longer on the Mac App Store); iOS listing is \"sing-box MT\"","src":["chg"]}],"pitfalls":[{"text":"Remnawave clients.ts still links the old \"sing-box VT\" listing","src":["rwc"]}],"sources":{"ua":{"ref":"SagerNet/sing-box-for-apple@0d1b59f:Library/Network/HTTPClient.swift:5-12; Library/Shared/Variant.swift:11-16","kind":"source"},"upd":{"ref":"SagerNet/sing-box-for-apple@0d1b59f:Library/Database/Profile+Update.swift:11-14","kind":"source"},"plist":{"ref":"SagerNet/sing-box-for-apple@0d1b59f:SFI/Info.plist:47-49; SFM/Info.plist:35-37","kind":"source"},"core":{"ref":"SagerNet/sing-box@v1.14.4:constant/v2ray.go:4-8","kind":"source"},"chg":{"ref":"SagerNet/sing-box@v1.14.4:docs/changelog.md (1.14.0)","kind":"source"},"rwc":{"ref":"remnawave/panel@f52f3ba:src/data/clients.ts:253","kind":"remnawave"}}},{"id":"sf-desktop","name":"sing-box for Desktop (SFW / SFL)","vendor":"SagerNet","family":"sing-box","platforms":["windows","linux"],"openSource":true,"repo":"github.com/SagerNet/sing-box-for-desktop","brandIcon":"Singbox","latest":[{"version":"1.14.x","date":"2026-08-31"}],"cores":[{"kind":"sing-box","src":["ua"]}],"uaPatterns":[{"regex":"^sf[wl] \\(sing-box ","example":"SFW (sing-box 1.14.4; language en_US)","src":["ua"]}],"uaOverridable":"no","requestHeaders":[],"accepts":["SINGBOX"],"best":"SINGBOX","bestWhy":{"text":"checkConfig gate","src":["prof"]},"capabilities":{"xhttp":false,"tun":true},"capabilitiesSrc":["ua"],"headersRead":[],"deepLinks":[],"limits":[],"pitfalls":[{"text":"NOT matched by the Remnawave default sing-box regex: gets base64 and the import fails","src":["rwdef"]}],"sources":{"ua":{"ref":"SagerNet/sing-box-for-desktop@8aab8eab:src/main/userAgent.ts:3-6","kind":"source"},"prof":{"ref":"SagerNet/sing-box-for-desktop@8aab8eab:src/main/profiles.ts:206-219,369-370","kind":"source"},"rwdef":{"ref":"remnawave/backend@3.4.7:prisma/seed/default/response-rules.ts:8-95","kind":"remnawave"}}},{"id":"hiddify","name":"Hiddify","family":"sing-box","platforms":["android","ios","macos","windows","linux"],"openSource":true,"repo":"github.com/hiddify/hiddify-app","brandIcon":"Hiddify","latest":[{"version":"v4.1.1","date":"2026-03-05"}],"cores":[{"kind":"sing-box","version":"hiddify-core 4.1.0 (sing-box 1.13.0 fork)","src":["deps"]}],"uaPatterns":[{"regex":"^hiddifynextx?/","example":"HiddifyNext/4.1.1 (android) like ClashMeta v2ray sing-box","note":"HiddifyNextX/… when \"use Xray core\" is on","src":["ua","uax"]}],"uaOverridable":"no","requestHeaders":[],"accepts":["XRAY_BASE64","SINGBOX","CLASH"],"best":"XRAY_BASE64","bestWhy":{"text":"from a sing-box JSON it keeps only outbounds/endpoints (DNS and routing dropped unless full-config mode); links go through ray2sing","src":["parse"]},"capabilities":{"xhttp":"unknown","reality":true,"hysteria2":true,"tuic":true,"wireguard":true,"tun":true},"capabilitiesSrc":["deps"],"headersRead":[{"name":"profile-title","format":"base64:","src":["pp"]},{"name":"content-disposition","format":"filename*=","src":["pp"]},{"name":"subscription-userinfo","note":"v4.1.1 needs total and expire, no segment without \"=\"","src":["pp"]},{"name":"profile-update-interval","format":"integer hours (v4.1.1 throws otherwise)","src":["pp"]},{"name":"support-url","src":["pp"]},{"name":"profile-web-page-url","src":["pp"]},{"name":"fragment","format":"size,sleep,method","src":["pp"]},{"name":"ipinfo-url","src":["pp"]},{"name":"extra-security","src":["pp"]}],"deepLinks":[{"template":"hiddify://import/{URL}#{NAME}","note":"also install-config?url=; for sing-box:// and clash:// it reads name=, not the fragment","src":["lp"]}],"limits":[{"text":"#key: value lines in the first 10 body lines count as headers","src":["pp"]}],"pitfalls":[{"text":"UA contains \"sing-box\" and \"ClashMeta\" mid-string: unanchored sing-?box or clashmeta rules catch it","src":["ua"]}],"sources":{"ua":{"ref":"hiddify/hiddify-app@v4.1.1:lib/core/model/app_info_entity.dart:20","kind":"source"},"uax":{"ref":"hiddify/hiddify-app@v4.1.1:lib/features/profile/data/profile_parser.dart:158","kind":"source"},"pp":{"ref":"hiddify/hiddify-app@2ab88d9:lib/features/profile/data/profile_parser.dart:53-63,161-176,363-421,540-558 (v4.1.1 bugs at 284-286,359)","kind":"source"},"lp":{"ref":"hiddify/hiddify-app@2ab88d9:lib/utils/link_parsers.dart:34-44","kind":"source"},"parse":{"ref":"hiddify/hiddify-core@v4.1.0:v2/config/parser.go:61-110","kind":"source"},"deps":{"ref":"hiddify/hiddify-app@v4.1.1:dependencies.properties:1; hiddify-core@v4.1.0 go.mod:261,278","kind":"source"}}},{"id":"karing","name":"Karing","vendor":"KaringX","family":"sing-box","platforms":["android","ios","tvos","macos","windows","linux"],"openSource":false,"repo":"github.com/KaringX/karing (UI only; HttpUtils unpublished)","brandIcon":"Karing","latest":[{"version":"v1.2.25.2802","date":"2026-09-10"}],"cores":[{"kind":"sing-box","version":"1.13.0 (release), 1.14.0 (main)","src":["sm"]}],"uaPatterns":[{"regex":"karing","example":"karing/1.2.25.2802","note":"real format unverified; users can append compatible strings","src":["sm","rwdef"]}],"uaOverridable":"global","requestHeaders":[{"name":"x-hwid","value":"device id","when":"default-off","src":["issue","rwhwid"]},{"name":"x-device-os","value":"OS name","when":"default-off","src":["issue","rwhwid"]},{"name":"x-ver-os","value":"OS version","when":"default-off","src":["issue","rwhwid"]},{"name":"x-device-model","value":"model","when":"default-off","src":["issue","rwhwid"]}],"accepts":["SINGBOX","MIHOMO","CLASH","XRAY_BASE64"],"best":"SINGBOX","bestWhy":{"text":"sing-box core; Remnawave default routes it to SINGBOX","src":["rwdef"]},"capabilities":{"xhttp":false,"tun":true},"capabilitiesSrc":["sm"],"headersRead":[{"name":"(unknown)","note":"parser in unpublished code","src":["sm"]}],"deepLinks":[{"template":"karing://install-config?url={URL_ENC}&name={NAME}","note":"&hwid=true enables HWID; handles clash:// and sing-box:// too","src":["sch"]}],"limits":[{"text":"refreshes traffic with HEAD: the panel must return headers on HEAD","src":["srv"]}],"pitfalls":[{"text":"a user who sends only \"mihomo/…\" (append off) hits the Mihomo rule","src":["srv"]}],"sources":{"sm":{"ref":"KaringX/karing@main:lib/app/modules/setting_manager.dart:1614-1671","kind":"source"},"srv":{"ref":"KaringX/karing@main:lib/app/modules/server_manager.dart:2491-2502","kind":"source"},"sch":{"ref":"KaringX/karing@main:lib/screens/scheme_handler.dart:22-32,114-116","kind":"source"},"issue":{"ref":"github.com/KaringX/karing/issues/1296 (v1.2.14.1700)","kind":"release-notes"},"rwhwid":{"ref":"remnawave/panel@f52f3ba:docs/features/hwid-device-limit.md:60-73","kind":"remnawave"},"rwdef":{"ref":"remnawave/backend@3.4.7:prisma/seed/default/response-rules.ts:8-95","kind":"remnawave"}}},{"id":"vpn4tv","name":"vpn4tv","family":"sing-box","platforms":["androidtv"],"openSource":true,"repo":"github.com/VPN4TV/vpn4tv-native","brandIcon":"VpnForTV","downloads":{"androidtv":[{"label":"Google Play","url":"https://play.google.com/store/apps/details?id=com.vpn4tv.hiddify"},{"label":"APK","url":"https://vpn4tv.com/download/vpn4tv.apk"}]},"latest":[{"version":"v5.3.0","date":"2026-10-23"}],"cores":[{"kind":"sing-box","version":"sing-box-xhttp fork + embedded xray-core","src":["hw"]}],"uaPatterns":[{"regex":"^vpn4tv-(?:native|desktop)/","example":"VPN4TV-Native/5.3.0","src":["hw","desktopUa"]}],"uaOverridable":"no","requestHeaders":[{"name":"x-hwid","value":"device id","when":"always","src":["hw"]},{"name":"x-device-os","value":"OS name","when":"always","src":["hw"]},{"name":"x-ver-os","value":"OS version","when":"always","src":["hw"]},{"name":"x-device-model","value":"model","when":"always","src":["hw"]},{"name":"x-app-ver","value":"version","when":"always","src":["hw"]},{"name":"x-app-build","value":"build","when":"always","src":["hw"]}],"accepts":["XRAY_BASE64","SINGBOX"],"best":"XRAY_BASE64","bestWhy":{"text":"a sing-box JSON passes only if it has a tun inbound","src":["pp"]},"capabilities":{"xhttp":true,"tun":true},"capabilitiesSrc":["hw"],"headersRead":[{"name":"profile-title","format":"base64:","src":["hw"]},{"name":"profile-update-interval","src":["hw"]},{"name":"profile-web-page-url","src":["hw"]},{"name":"support-url","src":["hw"]},{"name":"subscription-userinfo","src":["hw"]}],"deepLinks":[{"template":"vpn4tv://…","note":"manifest: vpn, vpn4tv, wg, vless, vmess, trojan, hy2, ss; NOT hiddify://","src":["man"]}],"limits":[],"pitfalls":[{"text":"Remnawave's default page offers hiddify://import/ for vpn4tv, which 5.x does not register (inferred)","src":["man","rwpage"]}],"sources":{"hw":{"ref":"VPN4TV/vpn4tv-native@v5.3.0:app/src/main/java/com/vpn4tv/app/converter/HwidService.kt:67-159","kind":"source"},"pp":{"ref":"VPN4TV/vpn4tv-native@v5.3.0:converter/ProxyParser.kt:209-249","kind":"source"},"man":{"ref":"VPN4TV/vpn4tv-native@v5.3.0:AndroidManifest.xml:63-71","kind":"source"},"desktopUa":{"ref":"VPN4TV/vpn4tv-desktop@af4cd5f:src/main/vpn4tv/onboarding.ts:40","kind":"source"},"rwpage":{"ref":"remnawave/backend@3.4.7:src/modules/subscription-page-configs/constants/default-subpage-config.ts:3122","kind":"remnawave"}}},{"id":"nekobox","name":"NekoBox (Android) / NekoRay (PC)","vendor":"MatsuriDayo","family":"sing-box","platforms":["android","windows","linux"],"openSource":true,"repo":"github.com/MatsuriDayo/NekoBoxForAndroid; MatsuriDayo/nekoray (archived)","latest":[{"version":"1.4.2","date":"2026-02-09","platform":["android"]},{"version":"4.0.1","date":"2024-12-12","platform":["windows","linux"]}],"cores":[{"kind":"sing-box","version":"1.12.19-neko-1","src":["gomod"]}],"uaPatterns":[{"regex":"^nekobox/(?:android|pc)/","example":"NekoBox/Android/1.4.2 (Prefer ClashMeta Format)","src":["ua","uapc"]}],"uaOverridable":"per-subscription","requestHeaders":[],"accepts":["XRAY_BASE64","CLASH","MIHOMO","SINGBOX"],"best":"XRAY_BASE64","bestWhy":{"text":"from a JSON it keeps only outbounds that have a \"type\" (Xray JSON is dropped)","src":["raw"]},"capabilities":{"xhttp":false,"reality":true,"hysteria2":true,"tuic":true,"tun":true},"capabilitiesSrc":["gomod"],"headersRead":[{"name":"subscription-userinfo","src":["raw"]},{"name":"content-disposition","note":"renames a default group","src":["raw"]}],"deepLinks":[{"template":"sn://subscription?url={URL_ENC}&name={NAME}","note":"clash://install-config too","src":["dl"]}],"limits":[],"pitfalls":[{"text":"UA contains \"ClashMeta\"; anchored rules are fine","src":["ua"]}],"sources":{"ua":{"ref":"MatsuriDayo/NekoBoxForAndroid@1.4.2:ktx/Nets.kt:66","kind":"source"},"uapc":{"ref":"MatsuriDayo/nekoray@4.0.1:main/NekoGui.cpp:299-309","kind":"source"},"raw":{"ref":"MatsuriDayo/NekoBoxForAndroid@1.4.2:group/RawUpdater.kt:70-86,768-790","kind":"source"},"dl":{"ref":"MatsuriDayo/NekoBoxForAndroid@1.4.2:AndroidManifest.xml:102-115","kind":"source"},"gomod":{"ref":"MatsuriDayo/NekoBoxForAndroid@1.4.2:libcore/go.mod:87","kind":"source"}}},{"id":"husi","name":"husi","family":"sing-box","platforms":["android"],"openSource":true,"repo":"github.com/xchacha20-poly1305/husi","brandIcon":"Husi","latest":[{"version":"v2.3.2","date":"2026-10-23"}],"cores":[{"kind":"sing-box","version":"v1.15.0-alpha.12","src":["gomod"]}],"uaPatterns":[{"regex":"^husi/","example":"husi/2.3.2 (sing-box 1.15.0-alpha.12)","src":["ua"]}],"uaOverridable":"per-subscription","requestHeaders":[],"accepts":["XRAY_BASE64","SINGBOX","CLASH"],"best":"XRAY_BASE64","bestWhy":{"text":"NekoBox lineage; full sing-box config import unverified","src":["ua"]},"capabilities":{"xhttp":false},"capabilitiesSrc":["gomod"],"headersRead":[],"deepLinks":[],"limits":[],"pitfalls":[{"text":"contains \"sing-box\": an unanchored sing-?box rule sends it SINGBOX","src":["ua"]}],"sources":{"ua":{"ref":"xchacha20-poly1305/husi@v2.3.2:composeApp/src/commonMain/kotlin/fr/husi/net/UserAgent.kt:9-21","kind":"source"},"gomod":{"ref":"xchacha20-poly1305/husi@v2.3.2:libcore/go.mod:32","kind":"source"}}},{"id":"gui-for-singbox","name":"GUI.for.SingBox","family":"sing-box","platforms":["windows","macos","linux"],"openSource":true,"repo":"github.com/GUI-for-Cores/GUI.for.SingBox","latest":[{"version":"v1.28.1","date":"2026-10-21"}],"cores":[{"kind":"sing-box","src":["sub"]}],"uaPatterns":[{"regex":"^clash\\.meta/mihomo$","example":"clash.meta/mihomo","note":"default per-subscription header","src":["sub"]},{"regex":"^gui\\.for\\.singbox/","example":"GUI.for.SingBox/v1.28.1","note":"app fallback; use for subscriptions unconfirmed","src":["oth"]}],"uaOverridable":"per-subscription","requestHeaders":[],"accepts":["SINGBOX"],"best":"SINGBOX","bestWhy":{"text":"takes .outbounds from sing-box JSON; mihomo YAML needs a converter plugin","src":["sub"]},"capabilities":{},"capabilitiesSrc":[],"headersRead":[{"name":"subscription-userinfo","src":["sub"]}],"deepLinks":[],"limits":[],"pitfalls":[{"text":"its default UA hits the Mihomo rule, which gives it a YAML it cannot use","src":["sub","rwdef"]}],"sources":{"sub":{"ref":"GUI-for-Cores/GUI.for.SingBox@v1.28.1:frontend/src/stores/subscribes.ts:117,126-143,282","kind":"source"},"oth":{"ref":"GUI-for-Cores/GUI.for.SingBox@v1.28.1:frontend/src/utils/others.ts:220-222","kind":"source"},"rwdef":{"ref":"remnawave/backend@3.4.7:prisma/seed/default/response-rules.ts:8-95","kind":"remnawave"}}},{"id":"deskbox","name":"DeskBox","family":"sing-box","platforms":["windows","macos","linux"],"openSource":true,"repo":"github.com/mihail-jdanov/DeskBox","latest":[{"version":"1.4.2","date":"2026-02-25"}],"cores":[{"kind":"sing-box","src":["ua"]}],"uaPatterns":[{"regex":"^sfm$","example":"SFM","note":"exactly \"SFM\"","src":["ua"]}],"uaOverridable":"no","requestHeaders":[{"name":"x-hwid","value":"UUID from vendor+baseboard+CPU+hardwareUUID","when":"always","src":["ua","os"]}],"accepts":["SINGBOX"],"best":"SINGBOX","bestWhy":{"text":"sing-box JSON only","src":["ua"]},"capabilities":{"xhttp":false},"capabilitiesSrc":[],"headersRead":[],"deepLinks":[{"template":"sing-box://import-remote-profile?url={URL_ENC}","src":["dl"]}],"limits":[],"pitfalls":[{"text":"no space after SFM: match ^sfm(?:$|[ /])","src":["ua"]}],"sources":{"ua":{"ref":"mihail-jdanov/DeskBox@1.4.2:composeApp/…/tools/RemoteConfigsFetcher.kt:24-25","kind":"source"},"os":{"ref":"mihail-jdanov/DeskBox@1.4.2:tools/OSChecker.kt:93-111","kind":"source"},"dl":{"ref":"mihail-jdanov/DeskBox@1.4.2:managers/ProfilesManager.kt:29; main.kt:300-320","kind":"source"}}},{"id":"shadowrocket","name":"Shadowrocket","vendor":"Shadow Launch Technology","family":"other","platforms":["ios","macos"],"openSource":false,"brandIcon":"Shadowrocket","downloads":{"ios":[{"label":"App Store","url":"https://apps.apple.com/us/app/shadowrocket/id932747118"}],"macos":[{"label":"App Store","url":"https://apps.apple.com/us/app/shadowrocket/id932747118"}]},"latest":[{"version":"2.2.92","date":"2026-09-07"}],"cores":[{"kind":"proprietary","src":["xb"]}],"uaPatterns":[{"regex":"^shadowrocket/","example":"Shadowrocket/2701 CFNetwork/1399 Darwin/22.1.0 iPhone11,8","note":"number is a BUILD, not 2.2.92","src":["ua"]}],"uaOverridable":"no","requestHeaders":[{"name":"x-hwid","value":"?","when":"default-off","src":["rwhwid"]}],"accepts":["XRAY_BASE64","CLASH"],"best":"XRAY_BASE64","bestWhy":{"text":"parses standard v2rayN links; no Xray JSON","src":["xb"]},"capabilities":{"xhttp":true,"reality":true,"vision":true,"hysteria2":true,"tuic":true,"wireguard":true,"anytls":true},"capabilitiesSrc":["xb"],"headersRead":[{"name":"subscription-userinfo","note":"likely; unverified","src":["inf"]}],"deepLinks":[{"template":"shadowrocket://add/{URL}#{NAME}","src":["rwpage"]}],"limits":[],"pitfalls":[{"text":"gate features on build number (hy2 ≥1993, AnyTLS ≥2592)","src":["xb"]}],"sources":{"ua":{"ref":"cedar2025/Xboard#667","kind":"third-party"},"xb":{"ref":"cedar2025/Xboard:app/Protocols/Shadowrocket.php:11-208","kind":"third-party"},"inf":{"ref":"no vendor docs","kind":"unverified"},"rwhwid":{"ref":"remnawave/panel@f52f3ba:docs/features/hwid-device-limit.md:60-73","kind":"remnawave"},"rwpage":{"ref":"remnawave/backend@3.4.7:src/modules/subscription-page-configs/constants/default-subpage-config.ts:472","kind":"remnawave"}}},{"id":"surge-family","name":"Loon / Quantumult X / Surge","family":"other","platforms":["ios","macos"],"openSource":false,"brandIcon":"Loon","latest":[{"version":"Loon 3.5.2","date":"2026-10-01"},{"version":"QX 1.8.1","date":"2026-10-07"},{"version":"Surge 5.23.0","date":"2026-10-12"}],"cores":[{"kind":"proprietary","src":["xb"]}],"uaPatterns":[{"regex":"^(?:loon|quantumult(?:%20| |-)x|surge)","example":"Loon/3.5.2 CFNetwork/3860.100.1 Darwin/26.0.0","src":["xb"]}],"uaOverridable":"unknown","requestHeaders":[],"accepts":["XRAY_BASE64"],"best":"XRAY_BASE64","bestWhy":{"text":"no Remnawave type produces their native formats","src":["xb"]},"capabilities":{},"capabilitiesSrc":[],"headersRead":[{"name":"subscription-userinfo","src":["xb"]}],"deepLinks":[],"limits":[],"pitfalls":[],"sources":{"xb":{"ref":"cedar2025/Xboard:app/Protocols/{Loon,QuantumultX,Surge}.php","kind":"third-party"}}}],"samples":[{"ua":"Happ/6.2.0/ios/2610261202535","app":"happ","expected":"XRAY_JSON","note":"format third-party, id made up"},{"ua":"Happ/4.9.0/Android/2610221200000","app":"happ","expected":"XRAY_JSON"},{"ua":"Happ/4.6.1/Windows/2610271200000","app":"happ","expected":"XRAY_JSON"},{"ua":"Happ/3.13.0","app":"happ","expected":"XRAY_BASE64"},{"ua":"Happ/3.9.1/ios CFNetwork/1568.300.101 Darwin/24.2.0","app":"happ","expected":"XRAY_BASE64","note":"format inferred or illustrative, not captured from real traffic"},{"ua":"INCY/2.6.6/ios CFNetwork/3860.100.1 Darwin/26.0.0","app":"incy","expected":"XRAY_JSON"},{"ua":"INCY/3.8.1/android Dalvik/2.1.0 (Linux; U; Android 15)","app":"incy","expected":"XRAY_JSON"},{"ua":"INCY/3.9.0/Windows","app":"incy","expected":"XRAY_JSON","note":"format inferred or illustrative, not captured from real traffic"},{"ua":"Throne/1.3.2","app":"throne-desktop","expected":"XRAY_JSON"},{"ua":"Throne/1.2.0","app":"throne-desktop","expected":"XRAY_JSON"},{"ua":"Throne/1.1.6","app":"throne-desktop","expected":"XRAY_BASE64"},{"ua":"Throne/1.0.13 (Prefer ClashMeta Format)","app":"throne-desktop","expected":"XRAY_BASE64"},{"ua":"Throne/Android/2.0.4","app":"throne-android","expected":"XRAY_JSON"},{"ua":"Throne/Android/2.0.0-pre.5","app":"throne-android","expected":"XRAY_JSON"},{"ua":"Throne/Android/1.6.4","app":"throne-android","expected":"XRAY_BASE64"},{"ua":"v2rayN/26.10.5 OneXray/26.10.5 (net.yuandev.onexray; build:1; android)","app":"onexray","expected":"XRAY_JSON","note":"the build number is illustrative"},{"ua":"v2rayNG/2.3.11","app":"v2rayng","expected":"XRAY_JSON"},{"ua":"v2rayNG/1.10.31","app":"v2rayng","expected":"XRAY_JSON"},{"ua":"v2rayNG/1.8.29","app":"v2rayng","expected":"XRAY_JSON"},{"ua":"v2rayNG/1.8.28","app":"v2rayng","expected":"XRAY_BASE64"},{"ua":"v2rayN/7.25.6","app":"v2rayn","expected":"XRAY_JSON"},{"ua":"v2rayN/6.42.0","app":"v2rayn","expected":"XRAY_JSON"},{"ua":"v2rayN/9.99","app":"passwall","expected":"XRAY_BASE64"},{"ua":"passwall/26.10.22","app":"passwall","expected":"XRAY_BASE64"},{"ua":"v2plus/1.3.0","app":"v2plus","expected":"XRAY_JSON"},{"ua":"io.github.saeeddev94.xray/13.0.0","app":"saeeddev94-xray","expected":"XRAY_BASE64"},{"ua":"Streisand/1.6.77 CFNetwork/3860.100.1 Darwin/26.0.0","app":"streisand","expected":"XRAY_JSON","note":"format inferred or illustrative, not captured from real traffic"},{"ua":"V2Box/10.1.9 CFNetwork/3860.100.1 Darwin/26.0.0","app":"v2box","expected":"XRAY_JSON","note":"format inferred or illustrative, not captured from real traffic"},{"ua":"Wrabbit/2.1.0 CFNetwork/3860.100.1 Darwin/26.0.0","app":"wrabbit","expected":"XRAY_JSON","note":"format inferred or illustrative, not captured from real traffic"},{"ua":"v2raytun/android","app":"v2raytun","expected":"XRAY_BASE64"},{"ua":"v2raytun/ios","app":"v2raytun","expected":"XRAY_BASE64"},{"ua":"FoXray/3.1 CFNetwork/1568 Darwin/24.0.0","app":"foxray","expected":"XRAY_BASE64","note":"format inferred or illustrative, not captured from real traffic"},{"ua":"Exclave/0.17.66","app":"exclave","expected":"XRAY_BASE64"},{"ua":"RenoarX/0.3.1","app":"renoarx","expected":"XRAY_BASE64","note":"format inferred or illustrative, not captured from real traffic"},{"ua":"Shadowrocket/2701 CFNetwork/1399 Darwin/22.1.0 iPhone11,8","app":"shadowrocket","expected":"XRAY_BASE64"},{"ua":"clash-verge/v2.5.8","app":"clash-verge-rev","expected":"MIHOMO"},{"ua":"FlClash/v0.9.2 clash-verge Platform/android","app":"flclash","expected":"MIHOMO"},{"ua":"FlClash X/v0.4.2 core/v1.19.28 Platform/android","app":"flclashx","expected":"MIHOMO"},{"ua":"FlClashX/v0.5.0-pre.3 core/v1.19.33 Platform/linux","app":"flclashx","expected":"MIHOMO","note":"the core version is illustrative"},{"ua":"mihomo.party/v2.0.4 (clash.meta)","app":"clash-party","expected":"MIHOMO"},{"ua":"clash-nyanpasu/v2.0.0","app":"clash-nyanpasu","expected":"MIHOMO"},{"ua":"koala-clash/1.5.0","app":"koala-clash","expected":"MIHOMO"},{"ua":"prizrak-box/v1.0.20","app":"prizrak-box","expected":"MIHOMO"},{"ua":"clash-verge/v2.3.0","app":"prizrak-box","expected":"MIHOMO"},{"ua":"prizrak-box/v2.0.0-rc01 (Desktop Build; Windows OS; Prizrak-Core v1.19.33-r3)","app":"prizrak-box","expected":"MIHOMO"},{"ua":"Flowvy/1.0.0-beta.9","app":"flowvy","expected":"MIHOMO","note":"format inferred or illustrative, not captured from real traffic"},{"ua":"ClashMetaForAndroid/2.11.36.Meta","app":"cmfa","expected":"MIHOMO"},{"ua":"ClashX%20Meta/612 CFNetwork/1568.100.1 Darwin/24.0.0","app":"clashx-meta","expected":"MIHOMO","note":"format inferred or illustrative, not captured from real traffic"},{"ua":"ClashMeta/1.19.33; mihomo/1.19.33","app":"clash-mi","expected":"MIHOMO"},{"ua":"ClashMi/1.0.32.1801 platform/ios ClashMeta/1.19.33; mihomo/1.19.33","app":"clash-mi","expected":"MIHOMO"},{"ua":"clash.meta/v1.19.33","app":"mihomo-core","expected":"MIHOMO"},{"ua":"Rabbit-Hole/iOS (1.6.0-215; language en_US)","app":"rabbithole","expected":"MIHOMO"},{"ua":"Clash-Meta/RabbitHole (Build #180; language en_US)","app":"rabbithole","expected":"MIHOMO"},{"ua":"ClashforWindows/0.20.39","app":"murge","expected":"CLASH"},{"ua":"Stash/3.4.0 Clash/1.11.0","app":"stash","expected":"STASH","note":"format inferred or illustrative, not captured from real traffic"},{"ua":"SFA (sing-box 1.14.4; language en_US)","app":"sfa","expected":"SINGBOX"},{"ua":"SFA/1.13.19 (590; sing-box 1.13.19; language zh_CN)","app":"sfa","expected":"SINGBOX"},{"ua":"SFI (sing-box 1.14.4; language en_US)","app":"sf-apple","expected":"SINGBOX"},{"ua":"SFM (sing-box 1.14.4; language ru_RU)","app":"sf-apple","expected":"SINGBOX"},{"ua":"SFT (sing-box 1.14.4; language en_US)","app":"sf-apple","expected":"SINGBOX"},{"ua":"SFW (sing-box 1.14.4; language en_US)","app":"sf-desktop","expected":"SINGBOX"},{"ua":"SFL (sing-box 1.14.4; language ru_RU)","app":"sf-desktop","expected":"SINGBOX"},{"ua":"SFM","app":"deskbox","expected":"SINGBOX"},{"ua":"clash.meta/mihomo","app":"gui-for-singbox","expected":"SINGBOX"},{"ua":"GUI.for.SingBox/v1.28.1","app":"gui-for-singbox","expected":"SINGBOX"},{"ua":"karing/1.2.25.2802","app":"karing","expected":"SINGBOX","note":"format inferred or illustrative, not captured from real traffic"},{"ua":"HiddifyNext/4.1.1 (android) like ClashMeta v2ray sing-box","app":"hiddify","expected":"XRAY_BASE64"},{"ua":"HiddifyNextX/4.1.1 (windows) like ClashMeta v2ray sing-box","app":"hiddify","expected":"XRAY_BASE64"},{"ua":"VPN4TV-Native/5.3.0","app":"vpn4tv","expected":"XRAY_BASE64"},{"ua":"NekoBox/Android/1.4.2 (Prefer ClashMeta Format)","app":"nekobox","expected":"XRAY_BASE64"},{"ua":"NekoBox/PC/4.0.1 (Prefer ClashMeta Format)","app":"nekobox","expected":"XRAY_BASE64"},{"ua":"husi/2.3.2 (sing-box 1.15.0-alpha.12)","app":"husi","expected":"XRAY_BASE64"},{"ua":"Loon/3.5.2 CFNetwork/3860.100.1 Darwin/26.0.0","app":"surge-family","expected":"XRAY_BASE64","note":"format inferred or illustrative, not captured from real traffic"}],"notation":["upload=; download=; total=; expire=","happ://routing/onadd/<b64>","1|true","proxy|proxy-head|tcp|icmp","+ manual-block-user-agent","ru","iOS/Android","amneziawg-go v3.1","base64 | link | off","incy://autorouting/onadd/https://…","1","+ banner-*, expiry-banner-*","+ noises-*, server-address-resolve-*, per-app-proxy-* (Android)","INCY","plain|base64:","base64:","v26.10.10 (2.3.11); v26.10.21 (2.3.14)","26.6.27 (5.25.79)","true","passwall 26.10.22-2","passwall2 26.10.20-1","?","filename* / filename","v1.19.28 (0.4.2)","stable | alpha | mihomo-smart","identity","v1.19.33 (+alpha)","URL","Prizrak-Core v1.19.33-r3 (rc01)","application/x-yaml,text/yaml,text/plain,application/octet-stream,*/*","mihomo v1.19.33","v1.19.33 (3f27ef39)","single|full","regex","base64","filename*=","size,sleep,method","Loon 3.5.2","QX 1.8.1","Surge 5.23.0"],"i18n":{"ru":{"JSON goes to Xray 1:1 and its own routing is not applied; balancer and observatory fixes appear in desktop 2.14–2.15 notes":"JSON уходит в Xray один к одному, собственная маршрутизация Happ не применяется; исправления балансировщика и observatory есть в release notes десктопа 2.14–2.15","operator gate for Xray JSON with balancers; Remnawave docs say JSON works on all versions":"ограничение по версии от оператора для Xray JSON с балансировщиками; по документации Remnawave JSON работает на всех версиях","encrypted link; Remnawave keys HAPP_CRYPT3_LINK / HAPP_CRYPT4_LINK":"зашифрованная ссылка; ключи Remnawave HAPP_CRYPT3_LINK / HAPP_CRYPT4_LINK","iOS Network Extension ~50 MB: 15 hosts peaked at 56–78 MB, 10 hosts ~28 MB":"Network Extension на iOS ~50 МБ: 15 хостов давали пик 56–78 МБ, 10 хостов — ~28 МБ","a JSON subscription may carry at most one routing profile":"JSON-подписка может нести не больше одного профиля маршрутизации","JSON with dns address \"localhost\" falls back to default DNS":"JSON с адресом DNS «localhost» откатывается на DNS по умолчанию","versions differ per platform (iOS 6.x, Android/desktop 4.x): gate per platform or with x-device-os":"версии на платформах разные (iOS 6.x, Android/десктоп 4.x): ограничивайте по платформе или по x-device-os","a provider-set change-user-agent breaks ^Happ/ detection":"change-user-agent, заданный провайдером, ломает распознавание по ^Happ/","third-party tools send Happ/1.0 to get JSON; a UA is not authentication":"сторонние утилиты шлют Happ/1.0, чтобы получить JSON; UA — не аутентификация","desktop TUN only (tun-type: singbox)":"только TUN на десктопе (tun-type: singbox)","Happ/<ver>/<ios|Android|AndroidTV|Windows>/<id>; early builds Happ/<ver>":"Happ/<ver>/<ios|Android|AndroidTV|Windows>/<id>; ранние сборки — Happ/<ver>","plain or base64:… (≤25 chars)":"plain или base64:… (≤25 символов)","hours":"часы","plain or base64:… (≤200)":"plain или base64:… (≤200)","unlocks Advanced parameters":"открывает параметры Advanced","beta; raises the xray-core RAM limit; needs providerid; exclusive with no-limit-xhttp-enabled":"бета; поднимает лимит RAM для xray-core; нужен providerid; несовместим с no-limit-xhttp-enabled","needs providerid":"нужен providerid","+ subscription-autoconnect-type lastused|lowestdelay|random; needs providerid":"+ subscription-autoconnect-type lastused|lowestdelay|random; нужен providerid","AES-128-GCM body":"тело в AES-128-GCM","device id":"ID устройства","OS name":"название ОС","OS version":"версия ОС","model":"модель","github.com/Happ-proxy (binaries and release notes only)":"github.com/Happ-proxy (только бинарники и release notes)","documents balancers and observatory in full configs; base64 cannot express balancers":"документирует балансировщики и observatory в полных конфигах; в base64 балансировщик не выразить","Remnawave key INCY_CRYPT1_LINK":"ключ Remnawave INCY_CRYPT1_LINK","iOS NE 50 MB cap":"лимит NE на iOS — 50 МБ","patches full configs: listen 127.0.0.1, adds mixed inbound 10808 if missing, overrides stats/log":"правит полные конфиги: listen 127.0.0.1, добавляет mixed inbound 10808, если его нет, переопределяет stats/log","a different vendor from Happ; the panel no longer rewrites happ:// routing to incy://, so global Happ headers reach INCY as-is":"это другой разработчик, не Happ; панель больше не переписывает маршрутизацию happ:// в incy://, поэтому глобальные заголовки Happ доходят до INCY как есть","skips ssr://, tuic://, hysteria:// links":"пропускает ссылки ssr://, tuic://, hysteria://","INCY/<ver>/<platform>; iOS appends CFNetwork/Darwin":"INCY/<ver>/<platform>; на iOS добавляется CFNetwork/Darwin","plain|base64: (alt subscription-name, content-disposition)":"plain|base64: (альтернативы — subscription-name, content-disposition)","0 hides the block":"0 скрывает блок","alias homepage":"синоним — homepage","≤200, base64: allowed":"≤200, можно base64:","(iOS) keeps the NE under 50 MB so xhttp is not killed; enable-only":"(iOS) держит NE в пределах 50 МБ, чтобы xhttp не убивался; только включение","HWID alias (Android)":"синоним HWID (Android)","app version":"версия приложения","locale":"локаль","github.com/INCY-DEV/incy-docs (docs only)":"github.com/INCY-DEV/incy-docs (только документация)","≥1.2: an array becomes one Custom Xray Config per element, named from remarks; balancers and dialerProxy run unchanged. A single object is split into outbounds.":"≥1.2: массив становится набором Custom Xray Config — по одному на элемент, с именами из remarks; балансировщики и dialerProxy работают без изменений. Одиночный объект разбирается на outbounds.","desktop 1.1.x and older has no array parser: an Xray JSON array does not import":"в десктопе 1.1.x и более ранних нет разбора массивов: массив Xray JSON не импортируется","OS scheme registered on Windows/Linux since 1.3.0":"схема регистрируется в ОС на Windows/Linux с 1.3.0","the inbounds of a full config are removed; Throne adds its own bridge inbound":"inbounds полного конфига удаляются; Throne добавляет свой inbound-мост","desktop ≤1.1.x has no array parser: give it base64":"в десктопе ≤1.1.x нет разбора массивов: отдавайте ему base64","fallback HWID \"hostname-productType\" may fail the panel HWID regex":"запасной HWID «hostname-productType» может не пройти regex HWID панели","1.0.x UA contains \"ClashMeta\"; only anchored clash rules are safe":"UA 1.0.x содержит «ClashMeta»; безопасны только правила clash с привязкой к началу","~1.14 fork":"форк ~1.14","no MASQUE/xdrive":"без MASQUE/xdrive","fork based on v26.9.9":"форк на базе v26.9.9","version cut at the first \"-\": 1.4.0-beta.4 sends Throne/1.4.0":"версия обрезается на первом «-»: 1.4.0-beta.4 шлёт Throne/1.4.0","hours (h/d/s suffix tolerated); fallback x-profile-update-interval":"часы (суффикс h/d/s допускается); запасной — x-profile-update-interval","≥2.0: an array becomes CUSTOM_XRAY_FULL_CONFIG profiles named from remarks; ≤1.6.x get links only":"≥2.0: массив становится профилями CUSTOM_XRAY_FULL_CONFIG с именами из remarks; ≤1.6.x получают только ссылки","Android 1.6.x and older has no array parser: an Xray JSON array does not import":"в Android 1.6.x и более ранних нет разбора массивов: массив Xray JSON не импортируется","a single object is kept whole only when exactly one egress outbound chains through its siblings":"одиночный объект сохраняется целиком, только когда ровно один выходной outbound идёт по цепочке через остальные","x-hwid only from v2.0.0; v1.6.4 sends none":"x-hwid только с v2.0.0; v1.6.4 его не шлёт","a desktop rule ^Throne/\\d does not match Android":"правило для десктопа ^Throne/\\d не совпадает с Android","1.15.0-alpha.13 fork":"форк 1.15.0-alpha.13","fork based on v26.10.21":"форк на базе v26.10.21","previews: 2.0.0-pre.N":"превью: 2.0.0-pre.N","also body key notice":"также ключ notice в теле","panel=remnawave mode checks every config with the core and names it from remarks":"режим panel=remnawave проверяет каждый конфиг ядром и называет его по remarks","RemnawaveAdapter adds a tun inbound, direct/block outbounds and its own DNS":"RemnawaveAdapter добавляет tun inbound, outbounds direct/block и свой DNS","HTTPS only; x-hwid dropped on a cross-origin redirect":"только HTTPS; при редиректе на другой origin x-hwid теряется","starts with \"v2rayN/\" on purpose: put its rule before any ^v2rayN/ rule; version gates see v2rayN 26.x":"намеренно начинается с «v2rayN/»: ставьте его правило выше любого правила ^v2rayN/; проверки версий видят v2rayN 26.x","with panel=remnawave, a non-JSON body raises RemnawaveResponseFormatException":"при panel=remnawave тело не в JSON вызывает RemnawaveResponseFormatException","random UUID v4":"случайный UUID v4","age recipient":"получатель age","an array becomes one CUSTOM profile per element, named from remarks, run as-is":"массив становится профилями CUSTOM — по одному на элемент, с именами из remarks, запускаются как есть","Remnawave documents Xray JSON from v2rayNG 1.8.29":"Remnawave документирует Xray JSON с v2rayNG 1.8.29","name= is ignored; the name comes from the fragment":"name= игнорируется; имя берётся из фрагмента (#)","a full JSON is detected only if the body contains the literal strings inbounds, outbounds AND routing":"полный JSON распознаётся, только если в теле есть строки inbounds, outbounds И routing","Remnawave's default page link uses ?name=… and loses the name":"ссылка со стандартной страницы Remnawave использует ?name=… и теряет имя","stable 2.3.11 reads no response headers":"стабильная 2.3.11 не читает заголовки ответа","http/https/tg only":"только http/https/tg","per-subscription JSON headers; no built-in HWID":"заголовки JSON для каждой подписки; встроенного HWID нет","a full JSON (or each array element) is saved as a custom Xray config named from remarks":"полный JSON (или каждый элемент массива) сохраняется как свой конфиг Xray с именем из remarks","Remnawave documents Xray JSON from v2rayN 6.40":"Remnawave документирует Xray JSON с v2rayN 6.40","whether it rewrites inbounds for system proxy/TUN in custom configs is unverified":"переписывает ли он inbounds под системный прокси/TUN в своих конфигах — не проверено","OneXray (v2rayN/<x> OneXray/…) and Passwall2 (v2rayN/9.99) also start with v2rayN/":"OneXray (v2rayN/<x> OneXray/…) и Passwall2 (v2rayN/9.99) тоже начинаются с v2rayN/","reads no response headers (no subscription-userinfo)":"не читает заголовки ответа (нет subscription-userinfo)","3-part version, nothing after it":"версия из трёх частей, после неё ничего","per-subscription headers; no HWID":"заголовки для каждой подписки; HWID нет","same detection as v2rayNG; arrays supported; listed in the Remnawave JSON fallback":"распознаётся так же, как v2rayNG; массивы поддерживаются; есть в JSON fallback Remnawave","also install-config and import":"также install-config и import","XrayCustomConfigGuard: inbounds only socks/http/tun/mixed; refuses loopback/reverse outbounds; strips reverse, freedom redirect, sockopt interface/mark/tproxy":"XrayCustomConfigGuard: inbounds только socks/http/tun/mixed; отклоняет outbounds loopback/reverse; вырезает reverse, redirect у freedom, interface/mark/tproxy в sockopt","injects x-hwid into WS/HTTP-header outbound requests too":"подставляет x-hwid и в запросы outbound с WS/HTTP-заголовками","AndroidLibXrayLite v26.8.20 (exact core unverified)":"AndroidLibXrayLite v26.8.20 (точная версия ядра не проверена)","profile-title deliberately ignored":"profile-title намеренно игнорируется","the user picks the link type (Json = array of full configs, Subscription = base64); the server cannot see which. Remnawave JSON fallback upgrades it only with serveJsonAtBaseSubscription":"тип ссылки выбирает пользователь (Json — массив полных конфигов, Subscription — base64); сервер не видит, какой. JSON fallback Remnawave переводит его на JSON только с serveJsonAtBaseSubscription","declared; handler not located":"объявлен; обработчик не найден","a Json link must be an array; remarks are removed and become the profile name":"ссылка Json должна вести на массив; remarks удаляются и становятся именем профиля","random 16-byte hex, generated once":"случайные 16 байт в hex, генерируются один раз","Remnawave lists Streisand as Xray-JSON-capable on all versions":"Remnawave числит Streisand среди умеющих Xray JSON на всех версиях","iOS Network Extension memory cap (applies to all iOS VPN apps; not measured for Streisand)":"лимит памяти Network Extension на iOS (касается всех VPN-приложений на iOS; для Streisand не измерялся)","response headers it reads are undocumented":"какие заголовки ответа он читает — не задокументировано","also SSH/TUIC, so more than Xray (inferred)":"ещё SSH/TUIC, то есть не только Xray (предположение)","exact format unverified":"точный формат не проверен","Remnawave: all versions; 10.1.9 notes say configs with a balancer strategy now load":"Remnawave: все версии; по release notes 10.1.9 конфиги со стратегией балансировщика теперь загружаются","from Telegram Desktop it needs a redirect page":"из Telegram Desktop нужна страница-редирект","format unverified":"формат не проверен","header names undocumented":"имена заголовков не задокументированы","operator serves full Xray configs with balancers to it":"оператор отдаёт ему полные конфиги Xray с балансировщиками","not matched by the anchored ^rabbit (Mihomo) alternative: keep its rule explicit":"не совпадает с альтернативой ^rabbit (Mihomo): держите для него отдельное правило","prefix observed by the operator; full format unknown":"префикс видел оператор; полный формат неизвестен","JSON with balancers is in Android release notes (5.25.82) but unverified end-to-end; not in Remnawave JSON fallback":"JSON с балансировщиками упомянут в release notes Android (5.25.82), но целиком не проверен; в JSON fallback Remnawave его нет","iOS App Store listing gone since ~Aug–Sep 2026":"из App Store для iOS пропал примерно в августе–сентябре 2026","cannot be version-gated (no version in the UA)":"по версии не ограничить (в UA нет версии)","a global Happ-style routing header is the wrong format here: use per-rule headers":"глобальный заголовок маршрутизации в стиле Happ здесь в неверном формате: используйте заголовки в правиле","platform only, no version":"только платформа, без версии","base64 of v2RayTun's own routing JSON (NOT a happ:// link)":"base64 от JSON маршрутизации самого v2RayTun (НЕ ссылка happ://)","plain|base64:, #RRGGBB colour":"plain|base64:, цвет #RRGGBB","github.com/LXST-CODE/v2RayTun (releases)":"github.com/LXST-CODE/v2RayTun (релизы)","legacy; Remnawave example blocks it; links are the safe common denominator":"устаревший; пример Remnawave его блокирует; ссылки — безопасный общий знаменатель","Remnawave example uses CONTAINS \"FoxRay\" caseSensitive:true, which misses \"FoXray\"":"пример Remnawave использует CONTAINS «FoxRay» с caseSensitive:true и не ловит «FoXray»","unknown (missing from US store 2026-10-28)":"неизвестно (на 2026-10-28 нет в американском App Store)","suffix unverified":"суффикс не проверен","a JSON array of full configs is flattened into separate outbounds (balancers lost)":"JSON-массив полных конфигов раскладывается на отдельные outbounds (балансировщики теряются)","exclave://subscription?url= is handled in code but no manifest filter registers the scheme":"exclave://subscription?url= обрабатывается в коде, но ни один фильтр манифеста не регистрирует схему","exclave-core/v5 fork":"форк exclave-core/v5","no full Xray JSON support":"полный Xray JSON не поддерживается","Passwall2 default v2rayN/9.99 must NOT match a v2rayN JSON rule: require a 3-part version":"стандартный UA Passwall2 v2rayN/9.99 НЕ должен совпадать с правилом v2rayN JSON: требуйте версию из трёх частей","Passwall2 default UA":"UA Passwall2 по умолчанию","passwall (1) only":"только passwall (1)","README promises \"xray json with zero override\" (inferred)":"README обещает «xray json with zero override» (предположение)","xray tun, xray json with zero override":"xray tun, xray json без переопределений","guess from third-party preset":"догадка по стороннему пресету","JSON or base64 (id, severity, title, message, actionText, actionUrl, expiresAt)":"JSON или base64 (id, severity, title, message, actionText, actionUrl, expiresAt)","github.com/RonnyFX/RenoarX (README only)":"github.com/RonnyFX/RenoarX (только README)","provider bodies may be YAML or a link list":"тело провайдера может быть YAML или списком ссылок","XHTTP since v1.19.22 (530c6b43, 2026-03-27); AnyTLS v1.19.3; MASQUE v1.19.20":"XHTTP с v1.19.22 (530c6b43, 2026-03-27); AnyTLS — с v1.19.3; MASQUE — с v1.19.20","the UA (via global-ua) shows only the core, not the app":"UA (через global-ua) показывает только ядро, а не приложение","alpha builds: clash.meta/alpha-<hash> (inferred)":"alpha-сборки: clash.meta/alpha-<hash> (предположение)","upload/download/total/expire (int or float)":"upload/download/total/expire (целое или дробное)","github.com/MetaCubeX/mihomo (branch Meta)":"github.com/MetaCubeX/mihomo (ветка Meta)","rejects a body without proxies/proxy-providers; CLASH type drops XHTTP":"отклоняет тело без proxies/proxy-providers; тип CLASH теряет XHTTP","everything after url= is taken: put url LAST; clash-verge:// also registered":"берётся всё после url=: ставьте url ПОСЛЕДНИМ; clash-verge:// тоже регистрируется","matches ^clash: the Mihomo rule must come before the CLASH rule":"совпадает с ^clash: правило Mihomo должно стоять выше правила CLASH","does not read profile-title":"не читает profile-title","alpha optional":"alpha — по выбору","stable at build time (~v1.19.32, inferred)":"stable на момент сборки (~v1.19.32, предположение)","also any *- prefix e.g. x-amz-meta-":"также с любым префиксом *-, например x-amz-meta-","mihomo core with xhttp/masque/anytls":"ядро mihomo с xhttp/masque/anytls","clash:// and clashmeta:// too":"также clash:// и clashmeta://","UA contains \"clash-verge\" mid-string: never use an unanchored clash-verge regex":"UA содержит «clash-verge» в середине строки: не используйте regex clash-verge без привязки к началу","user may switch the UA to clash-verge/v2.4.2 or ClashforWindows/0.19.23":"пользователь может сменить UA на clash-verge/v2.4.2 или ClashforWindows/0.19.23","fork chen08209/Clash.Meta@c5062921":"форк chen08209/Clash.Meta@c5062921","mihomo; Remnawave extended client":"mihomo; расширенный клиент Remnawave","0.4.x UA has a space (\"FlClash X\"); match ^flclash ?x/ or plain ^flclash":"в UA 0.4.x есть пробел («FlClash X»); проверяйте ^flclash ?x/ или просто ^flclash","Android HWID = raw ANDROID_ID; desktop = SHA-256(machine id)[:16] uppercase":"HWID на Android — ANDROID_ID как есть; на десктопе — SHA-256(machine id)[:16] в верхнем регистре","core part inferred":"часть с ядром — предположение","base64: ok":"можно base64:","servicename, servicelogo, serverinfo, view, widgets, settings, custom, hex, background, buyplan, buytraffic, newdomain, globalmode, override, …; see flclashx.app/#headers":"servicename, servicelogo, serverinfo, view, widgets, settings, custom, hex, background, buyplan, buytraffic, newdomain, globalmode, override, …; см. flclashx.app/#headers","mihomo core":"ядро mihomo","clash:// too":"также clash://","only while name is \"Remote File\"":"только пока имя — «Remote File»","default core is mihomo":"ядро по умолчанию — mihomo","same UA on clash-rs/Premium cores, which cannot run XHTTP or newer protocols":"тот же UA на ядрах clash-rs/Premium, которые не умеют XHTTP и новые протоколы","confirm dialog; clash:// and mihomo:// too":"с диалогом подтверждения; также clash:// и mihomo://","rejects an HTML/XML content-type":"отклоняет content-type HTML/XML","header names matched with endsWith, so any prefix works":"имена заголовков сверяются через endsWith, так что подходит любой префикс","no \"v\"":"без «v»","hours; locks the interval":"часы; фиксирует интервал","base64:, \\n becomes a newline":"base64:, \\n становится переводом строки","false disables":"false отключает","or x-hwid-max-devices-reached: blocks adding the profile":"или x-hwid-max-devices-reached: не даёт добавить профиль","github.com/coolcoala/koala-clash (ex clash-verge-rev-lite)":"github.com/coolcoala/koala-clash (бывший clash-verge-rev-lite)","1.0.20 core has no XHTTP: a MIHOMO template with xhttp proxies may fail there":"в ядре 1.0.20 нет XHTTP: шаблон MIHOMO с прокси xhttp там может не загрузиться","1.0.20 with HWID off is indistinguishable from Clash Verge 2.3.0":"1.0.20 с выключенным HWID не отличить от Clash Verge 2.3.0","predates XHTTP (inferred)":"появилось раньше XHTTP (предположение)","snakem982 fork ~v1.19.13 (1.0.20)":"форк snakem982 ~v1.19.13 (1.0.20)","1.0.20 with the HWID setting off":"1.0.20 с выключенной настройкой HWID","rc01 also: Profile-Logo, Announce-Url, Pxd-Template(-Scheme), Pxd-Theme, X-Hwid-*, global-mode, Subscription-Renew-Url, Notify-*, new-domain, fallback-url":"в rc01 также: Profile-Logo, Announce-Url, Pxd-Template(-Scheme), Pxd-Theme, X-Hwid-*, global-mode, Subscription-Renew-Url, Notify-*, new-domain, fallback-url","Remnawave lists core mihomo":"у Remnawave указано ядро mihomo","+ subscription-fallback-url, client-accent-color, profile-config-restrict, profile-advanced-info; plain or base64:":"+ subscription-fallback-url, client-accent-color, profile-config-restrict, profile-advanced-info; plain или base64:","github.com/flowvy/desktop (README + releases)":"github.com/flowvy/desktop (README и релизы)","mihomo core, but its UA lands in ^clash (CLASH)":"ядро mihomo, но UA попадает в ^clash (CLASH)","format not checked":"формат не проверялся","the 'murge' alternative in Remnawave's Mihomo regex never matches its UA":"альтернатива «murge» в regex Mihomo у Remnawave никогда не совпадает с его UA","hard-coded; indistinguishable from real CFW":"зашит в код; не отличить от настоящего CFW","github.com/RoaycL/Murge (assumed to be the one Remnawave means)":"github.com/RoaycL/Murge (предположительно тот, что имеет в виду Remnawave)","clash:// too; &type=&update-interval=":"также clash://; &type=&update-interval=","also matches ^clash; caught earlier by clash[-.]?meta":"совпадает и с ^clash; раньше его ловит clash[-.]?meta","alpha flavor: .Alpha":"alpha-вариант: .Alpha","Remnawave's 'clashx meta' (space) misses '%20', so it falls to ^clash: CLASH (inferred)":"«clashx meta» (с пробелом) у Remnawave не ловит «%20», поэтому он падает в ^clash: CLASH (предположение)","default CFNetwork UA; %20 encoding inferred":"стандартный UA CFNetwork; кодирование %20 — предположение","via suggestedFilename":"через suggestedFilename","needs YAML with proxies or proxy-providers":"нужен YAML с proxies или proxy-providers","xhwid=1 turns HWID on for the profile":"xhwid=1 включает HWID для профиля","ClashMi/… fallback UA misses Remnawave's Mihomo regex and falls to ^clash":"запасной UA ClashMi/… не ловится regex Mihomo у Remnawave и падает в ^clash","no app name in the subscription UA":"в UA подписки нет имени приложения","generic HTTP fallback UA":"общий запасной HTTP UA","hours, min 1":"часы, минимум 1","\"Rabbit Hole recommends Mihomo YAML\"":"«Rabbit Hole рекомендует Mihomo YAML»","iOS VPN extension 50 MB; keep rule-providers within 25–30 MB":"VPN extension на iOS — 50 МБ; держите rule-providers в пределах 25–30 МБ","'rabbithole' (no hyphen) never matches Rabbit-Hole/…; use ^rabbit (moved to MIHOMO in backend PR #148; docs still show rabbithole in SINGBOX)":"«rabbithole» (без дефиса) никогда не совпадает с Rabbit-Hole/…; используйте ^rabbit (перенесён в MIHOMO в backend PR #148; в документации rabbithole всё ещё в SINGBOX)","inferred from docs recommending Mihomo YAML":"предположение по документации, рекомендующей Mihomo YAML","obsolete":"устарел","native Stash YAML":"родной YAML Stash","also https://link.stash.ws/install-config/<host/path>":"также https://link.stash.ws/install-config/<host/path>","XHTTP / MASQUE / VLESS-enc documented for iOS 3.6+ / macOS 4.3+, newer than the latest release notes":"XHTTP / MASQUE / VLESS-enc задокументированы для iOS 3.6+ / macOS 4.3+ — новее последних release notes","checks every 12 h, tries a HEAD request first: the panel must answer HEAD":"проверяет каждые 12 ч и сначала пробует запрос HEAD: панель должна отвечать на HEAD","Clash-compatible":"совместимо с Clash","the body must pass Libbox.checkConfig":"тело должно пройти Libbox.checkConfig","name = fragment, else host":"имя — из фрагмента (#), иначе хост","legacy DNS server format removed in 1.14; new format from 1.12: gate templates on \"sing-box X.Y\"":"старый формат DNS-серверов удалён в 1.14, новый — с 1.12: разводите шаблоны по «sing-box X.Y»","random curl/7.x UA if an embedder sets none":"случайный UA curl/7.x, если встраивающее приложение не задало свой","same as app":"как у приложения","version code illustrative":"код версии для примера","LibboxCheckConfig gate":"проверка LibboxCheckConfig","SFT scheme unverified":"схема SFT не проверена","macOS is standalone only (no longer on the Mac App Store); iOS listing is \"sing-box MT\"":"на macOS — только отдельная сборка (в Mac App Store больше нет); на iOS — «sing-box MT»","Remnawave clients.ts still links the old \"sing-box VT\" listing":"clients.ts в Remnawave всё ещё ссылается на старую страницу «sing-box VT»","checkConfig gate":"проверка checkConfig","NOT matched by the Remnawave default sing-box regex: gets base64 and the import fails":"НЕ совпадает со стандартным regex sing-box в Remnawave: получает base64, и импорт не проходит","from a sing-box JSON it keeps only outbounds/endpoints (DNS and routing dropped unless full-config mode); links go through ray2sing":"из JSON sing-box оставляет только outbounds/endpoints (DNS и маршрутизация отбрасываются, если не включён режим полного конфига); ссылки идут через ray2sing","also install-config?url=; for sing-box:// and clash:// it reads name=, not the fragment":"также install-config?url=; для sing-box:// и clash:// читает name=, а не фрагмент","#key: value lines in the first 10 body lines count as headers":"строки «#key: value» в первых 10 строках тела считаются заголовками","UA contains \"sing-box\" and \"ClashMeta\" mid-string: unanchored sing-?box or clashmeta rules catch it":"UA содержит «sing-box» и «ClashMeta» в середине строки: его ловят правила sing-?box или clashmeta без привязки к началу","hiddify-core 4.1.0 (sing-box 1.13.0 fork)":"hiddify-core 4.1.0 (форк sing-box 1.13.0)","HiddifyNextX/… when \"use Xray core\" is on":"HiddifyNextX/…, когда включено «use Xray core»","v4.1.1 needs total and expire, no segment without \"=\"":"v4.1.1 нужны total и expire, и ни одного сегмента без «=»","integer hours (v4.1.1 throws otherwise)":"целое число часов (иначе v4.1.1 падает с ошибкой)","sing-box core; Remnawave default routes it to SINGBOX":"ядро sing-box; по умолчанию Remnawave отдаёт ему SINGBOX","&hwid=true enables HWID; handles clash:// and sing-box:// too":"&hwid=true включает HWID; обрабатывает также clash:// и sing-box://","refreshes traffic with HEAD: the panel must return headers on HEAD":"обновляет трафик запросом HEAD: панель должна отдавать заголовки на HEAD","a user who sends only \"mihomo/…\" (append off) hits the Mihomo rule":"пользователь, который шлёт только «mihomo/…» (без дописывания), попадает в правило Mihomo","1.13.0 (release), 1.14.0 (main)":"1.13.0 (релиз), 1.14.0 (main)","real format unverified; users can append compatible strings":"реальный формат не проверен; пользователи могут дописывать совместимые строки","parser in unpublished code":"разбор — в неопубликованном коде","github.com/KaringX/karing (UI only; HttpUtils unpublished)":"github.com/KaringX/karing (только UI; HttpUtils не опубликован)","a sing-box JSON passes only if it has a tun inbound":"JSON sing-box проходит, только если в нём есть tun inbound","manifest: vpn, vpn4tv, wg, vless, vmess, trojan, hy2, ss; NOT hiddify://":"в манифесте: vpn, vpn4tv, wg, vless, vmess, trojan, hy2, ss; НЕ hiddify://","Remnawave's default page offers hiddify://import/ for vpn4tv, which 5.x does not register (inferred)":"стандартная страница Remnawave предлагает для vpn4tv hiddify://import/, который 5.x не регистрирует (предположение)","sing-box-xhttp fork + embedded xray-core":"форк sing-box-xhttp + встроенный xray-core","version":"версия","build":"сборка","from a JSON it keeps only outbounds that have a \"type\" (Xray JSON is dropped)":"из JSON оставляет только outbounds с полем «type» (Xray JSON отбрасывается)","clash://install-config too":"также clash://install-config","UA contains \"ClashMeta\"; anchored rules are fine":"UA содержит «ClashMeta»; правила с привязкой к началу безопасны","renames a default group":"переименовывает группу по умолчанию","github.com/MatsuriDayo/NekoBoxForAndroid; MatsuriDayo/nekoray (archived)":"github.com/MatsuriDayo/NekoBoxForAndroid; MatsuriDayo/nekoray (в архиве)","NekoBox lineage; full sing-box config import unverified":"из линейки NekoBox; импорт полного конфига sing-box не проверен","contains \"sing-box\": an unanchored sing-?box rule sends it SINGBOX":"содержит «sing-box»: правило sing-?box без привязки к началу отдаст ему SINGBOX","takes .outbounds from sing-box JSON; mihomo YAML needs a converter plugin":"берёт .outbounds из JSON sing-box; для YAML mihomo нужен плагин-конвертер","its default UA hits the Mihomo rule, which gives it a YAML it cannot use":"его UA по умолчанию попадает в правило Mihomo, и он получает YAML, который не может использовать","default per-subscription header":"заголовок подписки по умолчанию","app fallback; use for subscriptions unconfirmed":"запасной UA приложения; используется ли для подписок — не подтверждено","sing-box JSON only":"только JSON sing-box","no space after SFM: match ^sfm(?:$|[ /])":"после SFM нет пробела: проверяйте ^sfm(?:$|[ /])","exactly \"SFM\"":"ровно «SFM»","UUID from vendor+baseboard+CPU+hardwareUUID":"UUID из vendor+baseboard+CPU+hardwareUUID","parses standard v2rayN links; no Xray JSON":"разбирает стандартные ссылки v2rayN; Xray JSON нет","gate features on build number (hy2 ≥1993, AnyTLS ≥2592)":"ограничивайте возможности по номеру сборки (hy2 ≥1993, AnyTLS ≥2592)","number is a BUILD, not 2.2.92":"число — это СБОРКА, а не 2.2.92","likely; unverified":"вероятно; не проверено","no Remnawave type produces their native formats":"ни один тип Remnawave не выдаёт их родные форматы"}}},"icons":{"INCY":"<svg width=\"256\" height=\"256\" viewBox=\"0 0 256 256\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<g clip-path=\"url(#clip0_11_16655)\">\n<rect width=\"256\" height=\"256\" rx=\"64\" fill=\"url(#paint0_linear_11_16655)\"/>\n<rect x=\"-22\" y=\"-15\" width=\"297\" height=\"287\" fill=\"url(#paint1_linear_11_16655)\"/>\n<rect x=\"4\" y=\"4\" width=\"248\" height=\"248\" rx=\"60\" fill=\"url(#paint2_linear_11_16655)\"/>\n<rect x=\"4\" y=\"4\" width=\"248\" height=\"248\" rx=\"60\" fill=\"url(#paint3_linear_11_16655)\"/>\n<path d=\"M45.3039 154.904H30V100.096H45.3039V154.904Z\" fill=\"url(#paint4_linear_11_16655)\"/>\n<path d=\"M92.674 129.301V100.096H107.669V154.904H95.07L71.1867 125.699V154.904H56.1919V100.096H68.7906L92.674 129.301Z\" fill=\"url(#paint5_linear_11_16655)\"/>\n<path d=\"M145.439 156C139.771 156 134.669 154.799 130.135 152.398C125.652 149.945 122.122 146.552 119.546 142.22C116.969 137.887 115.681 132.981 115.681 127.5C115.681 122.019 116.969 117.113 119.546 112.78C122.122 108.448 125.652 105.081 130.135 102.68C134.669 100.227 139.771 99 145.439 99C150.386 99 154.843 99.8874 158.81 101.662C162.778 103.437 166.076 105.995 168.704 109.335L158.965 118.261C155.461 113.981 151.21 111.841 146.212 111.841C143.275 111.841 140.647 112.493 138.328 113.798C136.061 115.103 134.283 116.956 132.995 119.357C131.758 121.706 131.14 124.42 131.14 127.5C131.14 130.58 131.758 133.32 132.995 135.721C134.283 138.07 136.061 139.897 138.328 141.202C140.647 142.507 143.275 143.159 146.212 143.159C151.21 143.159 155.461 141.019 158.965 136.739L168.704 145.665C166.076 149.005 162.778 151.563 158.81 153.338C154.843 155.113 150.386 156 145.439 156Z\" fill=\"url(#paint6_linear_11_16655)\"/>\n<path d=\"M210.16 100.096H225L204.286 135.251V154.904H188.982V135.016L168.345 100.096H184.499L197.329 121.863L210.16 100.096Z\" fill=\"url(#paint7_linear_11_16655)\"/>\n</g>\n<defs>\n<linearGradient id=\"paint0_linear_11_16655\" x1=\"128\" y1=\"0\" x2=\"128\" y2=\"256\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#EF786F\"/>\n<stop offset=\"1\" stop-color=\"#D8595E\"/>\n</linearGradient>\n<linearGradient id=\"paint1_linear_11_16655\" x1=\"22.8855\" y1=\"-181.372\" x2=\"353.416\" y2=\"-70.8018\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#05C867\"/>\n<stop offset=\"1\" stop-color=\"#B7D949\"/>\n</linearGradient>\n<linearGradient id=\"paint2_linear_11_16655\" x1=\"128\" y1=\"4\" x2=\"128\" y2=\"252\" gradientUnits=\"userSpaceOnUse\">\n<stop offset=\"0.0377117\" stop-color=\"#00FF6F\"/>\n<stop offset=\"1\" stop-color=\"#00B900\"/>\n</linearGradient>\n<linearGradient id=\"paint3_linear_11_16655\" x1=\"128\" y1=\"4\" x2=\"128\" y2=\"252\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#004D21\"/>\n<stop offset=\"1\" stop-color=\"#0B0F0C\"/>\n</linearGradient>\n<linearGradient id=\"paint4_linear_11_16655\" x1=\"59.4703\" y1=\"65.9575\" x2=\"168.018\" y2=\"185.999\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#05C867\"/>\n<stop offset=\"1\" stop-color=\"#B7D949\"/>\n</linearGradient>\n<linearGradient id=\"paint5_linear_11_16655\" x1=\"59.4703\" y1=\"65.9575\" x2=\"168.018\" y2=\"185.999\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#05C867\"/>\n<stop offset=\"1\" stop-color=\"#B7D949\"/>\n</linearGradient>\n<linearGradient id=\"paint6_linear_11_16655\" x1=\"59.4703\" y1=\"65.9575\" x2=\"168.018\" y2=\"185.999\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#05C867\"/>\n<stop offset=\"1\" stop-color=\"#B7D949\"/>\n</linearGradient>\n<linearGradient id=\"paint7_linear_11_16655\" x1=\"59.4703\" y1=\"65.9575\" x2=\"168.018\" y2=\"185.999\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#05C867\"/>\n<stop offset=\"1\" stop-color=\"#B7D949\"/>\n</linearGradient>\n<clipPath id=\"clip0_11_16655\">\n<rect width=\"256\" height=\"256\" rx=\"64\" fill=\"white\"/>\n</clipPath>\n</defs>\n</svg>"},"rules":{"blueprints":[{"key":"links-header","name":"Links on request","description":"Tools that send x-subscription-format: links get share links whatever their UA. Enable if your tooling uses it.","apps":[],"conditions":[{"headerName":"x-subscription-format","operator":"EQUALS","value":"links","caseSensitive":false}],"type":"XRAY_BASE64","optional":"links-header"},{"key":"happ-ios","name":"Happ iOS (Xray JSON, NE memory)","description":"iOS Network Extension ~50 MB. no-limit-enabled is a beta Advanced parameter: it needs providerid (global header).","apps":["happ"],"regex":"^happ/(?:[4-9]|[1-9]\\d)\\.[^/]*/ios","type":"XRAY_JSON","device":"ios"},{"key":"incy-ios","name":"INCY iOS (Xray JSON, NE memory)","description":"INCY documents no-limit-enabled as an enable-only memory-tight NE mode.","apps":["incy"],"regex":"^incy/[^/]+/ios","type":"XRAY_JSON","device":"ios"},{"key":"happ-incy-android","name":"Happ / INCY Android (Xray JSON, fewer hosts)","description":"Same host set as iOS for phones.","apps":["happ","incy"],"regex":"^(?:happ/(?:[4-9]|[1-9]\\d)\\.[^/]*|incy/[^/]+)/android","type":"XRAY_JSON","device":"android"},{"key":"happ-incy","name":"Happ 4+ / INCY (Xray JSON)","description":"Explicit, so it does not depend on serveJsonAtBaseSubscription.","apps":["happ","incy"],"regex":"^(?:incy/|happ/(?:[4-9]|[1-9]\\d)\\.)","type":"XRAY_JSON"},{"key":"throne","name":"Throne desktop 1.2+ / Android 2+ (Xray JSON array)","description":"Each array element becomes a Custom Xray Config named from remarks. Older Throne: links.","apps":["throne-desktop","throne-android"],"regex":"^throne/(?:android/)?(?:[2-9]|[1-9]\\d+)(?:\\.|$)|^throne/1\\.(?:[2-9]|[1-9]\\d+)(?:\\.|$)","type":"XRAY_JSON"},{"key":"onexray","name":"OneXray (Xray JSON)","description":"UA starts with v2rayN/ on purpose: must stay above the v2rayN rule.","apps":["onexray"],"regex":"^v2rayn/[\\d.]+ onexray/","type":"XRAY_JSON"},{"key":"v2rayng","name":"v2rayNG 1.8.29+ (Xray JSON)","description":"Template must contain a routing key, or v2rayNG does not take it as a full config.","apps":["v2rayng"],"regex":"^v2rayng/(?:1\\.(?:8\\.(?:29|[3-9]\\d|\\d{3,})|9\\.|\\d{2,}\\.)|[2-9]\\.|\\d{2,}\\.)","type":"XRAY_JSON"},{"key":"v2rayn","name":"v2rayN 6.40+ (Xray JSON)","description":"3-part version and nothing after it: excludes Passwall2's default v2rayN/9.99.","apps":["v2rayn"],"regex":"^v2rayn/(?:6\\.(?:[4-9]\\d|\\d{3,})|[7-9]\\.\\d+|[1-9]\\d\\.\\d+)\\.\\d+$","type":"XRAY_JSON"},{"key":"xray-json-other","name":"Other Xray JSON clients","description":"Streisand, V2Box (Remnawave: all versions), Wrabbit (operator-observed), v2plus.","apps":["streisand","v2box","wrabbit","v2plus"],"regex":"^(?:streisand|v2box|wrabbit|v2plus/)","type":"XRAY_JSON"},{"key":"gui-for-singbox","name":"GUI.for.SingBox default UA","description":"Sends exactly clash.meta/mihomo by default but only reads sing-box JSON outbounds.","apps":["gui-for-singbox"],"regex":"^clash\\.meta/mihomo$","type":"SINGBOX"},{"key":"mihomo","name":"Mihomo Clients","description":"Must stay above ^clash, or these get CLASH and lose XHTTP. Adds ClashX Meta (%20) and Clash Mi to the default.","apps":["mihomo-core","clash-verge-rev","flclash","flclashx","clash-party","clash-nyanpasu","koala-clash","prizrak-box","flowvy","cmfa","clashx-meta","clash-mi","rabbithole"],"regex":"^(?:flclash|flowvy|murge|mihomo|prizrak-box|koala-clash|rabbit|clash(?:-verge|-nyanpasu|x(?: |%20)meta|[-.]?meta|mi/))","type":"MIHOMO"},{"key":"stash","name":"Stash (iOS, macOS)","description":"Response with generated YAML config (Stash Template)","apps":["stash"],"regex":"^stash","type":"STASH"},{"key":"singbox","name":"Sing-box clients","description":"SFA/SFI/SFM/SFT plus SFW/SFL (desktop, 1.14) and bare SFM (DeskBox); karing anywhere. Hiddify and husi are deliberately not here: they are better with links.","apps":["sfa","sf-apple","sf-desktop","deskbox","karing","gui-for-singbox"],"regex":"^sf[aimtwl](?:$|[ /])|singbox|karing","type":"SINGBOX"},{"key":"clash","name":"Clash Core Clients","description":"Whatever is left that starts with clash: ClashforWindows (also Murge), legacy builds.","apps":["murge"],"regex":"^clash","type":"CLASH"},{"key":"v2raytun-json","name":"v2RayTun (Xray JSON, opt-in)","description":"Release notes mention JSON with balancers; unverified. No version in the UA, so no gate.","apps":["v2raytun"],"regex":"^v2raytun/","type":"XRAY_JSON","optional":"v2raytun-json"}],"i18n":{"ru":{"Tools that send x-subscription-format: links get share links whatever their UA. Enable if your tooling uses it.":"Утилиты, которые шлют x-subscription-format: links, получают ссылки при любом UA. Включите, если ваши инструменты это используют.","iOS Network Extension ~50 MB. no-limit-enabled is a beta Advanced parameter: it needs providerid (global header).":"Network Extension на iOS ~50 МБ. no-limit-enabled — бета-параметр Advanced: нужен providerid (глобальный заголовок).","INCY documents no-limit-enabled as an enable-only memory-tight NE mode.":"INCY документирует no-limit-enabled как экономный по памяти режим NE, который можно только включить.","Same host set as iOS for phones.":"Тот же набор хостов, что на iOS, — для телефонов.","Explicit, so it does not depend on serveJsonAtBaseSubscription.":"Отдельным правилом, чтобы не зависеть от serveJsonAtBaseSubscription.","Each array element becomes a Custom Xray Config named from remarks. Older Throne: links.":"Каждый элемент массива становится Custom Xray Config с именем из remarks. Старый Throne — ссылки.","UA starts with v2rayN/ on purpose: must stay above the v2rayN rule.":"UA намеренно начинается с v2rayN/: правило должно стоять выше правила v2rayN.","Template must contain a routing key, or v2rayNG does not take it as a full config.":"В шаблоне должен быть ключ routing, иначе v2rayNG не примет его как полный конфиг.","3-part version and nothing after it: excludes Passwall2's default v2rayN/9.99.":"Версия из трёх частей и ничего после неё: исключает стандартный v2rayN/9.99 у Passwall2.","Streisand, V2Box (Remnawave: all versions), Wrabbit (operator-observed), v2plus.":"Streisand, V2Box (Remnawave: все версии), Wrabbit (по наблюдениям оператора), v2plus.","Sends exactly clash.meta/mihomo by default but only reads sing-box JSON outbounds.":"По умолчанию шлёт ровно clash.meta/mihomo, но читает только outbounds из JSON sing-box.","Must stay above ^clash, or these get CLASH and lose XHTTP. Adds ClashX Meta (%20) and Clash Mi to the default.":"Должно стоять выше ^clash, иначе эти клиенты получат CLASH и потеряют XHTTP. К стандартному правилу добавлены ClashX Meta (%20) и Clash Mi.","Response with generated YAML config (Stash Template)":"Ответ сгенерированным YAML-конфигом (шаблон Stash)","SFA/SFI/SFM/SFT plus SFW/SFL (desktop, 1.14) and bare SFM (DeskBox); karing anywhere. Hiddify and husi are deliberately not here: they are better with links.":"SFA/SFI/SFM/SFT, а также SFW/SFL (десктоп, 1.14) и просто SFM (DeskBox); karing — в любом месте UA. Hiddify и husi здесь намеренно нет: им лучше ссылки.","Whatever is left that starts with clash: ClashforWindows (also Murge), legacy builds.":"Всё оставшееся, что начинается с clash: ClashforWindows (и Murge), старые сборки.","Release notes mention JSON with balancers; unverified. No version in the UA, so no gate.":"В release notes упомянут JSON с балансировщиками; не проверено. В UA нет версии, поэтому без ограничения по версии."}}},"geo":{"sources":[{"id":"xtls","name":"XTLS/Xray-rules-dat","home":"https://github.com/XTLS/Xray-rules-dat","files":{"geoip":{"url":"https://cdn.jsdelivr.net/gh/XTLS/Xray-rules-dat@release/geoip/geoip-lite.dat","sizeMb":4},"geosite":{"url":"https://cdn.jsdelivr.net/gh/XTLS/Xray-rules-dat@release/geosite/geosite.dat","sizeMb":7.6}},"uses":["check","viewer"]},{"id":"loyalsoldier","name":"Loyalsoldier/v2ray-rules-dat","home":"https://github.com/Loyalsoldier/v2ray-rules-dat","files":{"geoip":{"url":"https://cdn.jsdelivr.net/gh/Loyalsoldier/v2ray-rules-dat@release/geoip.dat","sizeMb":16.6},"geosite":{"url":"https://cdn.jsdelivr.net/gh/Loyalsoldier/v2ray-rules-dat@release/geosite.dat","sizeMb":11.3}},"uses":["check","viewer"]},{"id":"runetfreedom","name":"runetfreedom/russia-v2ray-rules-dat","home":"https://github.com/runetfreedom/russia-v2ray-rules-dat","files":{"geoip":{"url":"https://cdn.jsdelivr.net/gh/runetfreedom/russia-v2ray-rules-dat@release/geoip.dat","sizeMb":18},"geosite":{"url":"https://raw.githubusercontent.com/runetfreedom/russia-v2ray-rules-dat/release/geosite.dat","sizeMb":73.7}},"uses":["check","viewer"]},{"id":"v2fly","name":"v2fly","home":"https://github.com/v2fly/geoip","files":{"geoip":{"url":"https://cdn.jsdelivr.net/gh/v2fly/geoip@release/geoip.dat","sizeMb":23.3},"geosite":{"url":"https://cdn.jsdelivr.net/gh/v2fly/domain-list-community@release/dlc.dat","sizeMb":2.4}},"uses":["check","viewer"],"viewerDefault":true}]},"bypass":{"lists":[{"id":"russian","label":{"en":"Russian sites direct","ru":"Российские сайты напрямую"},"description":{"en":"Banks, government portals, marketplaces and media that only work from a Russian address.","ru":"Банки, госпорталы, маркетплейсы и медиа, которые работают только с российского адреса."},"domains":["regexp:.+\\.ru$","regexp:.+\\.su$","regexp:.+\\.рф$","domain:yandex.ru","domain:yandex.net","domain:ya.ru","domain:mail.ru","domain:vk.com","domain:vk.me","domain:ok.ru","domain:sberbank.ru","domain:tinkoff.ru","domain:tbank.ru","domain:gosuslugi.ru","domain:mos.ru","domain:wildberries.ru","domain:ozon.ru","domain:avito.ru","domain:kinopoisk.ru","domain:ivi.ru","domain:2gis.ru","domain:dzen.ru","domain:rutube.ru","domain:rt.ru","domain:mts.ru","domain:megafon.ru","domain:beeline.ru","domain:tele2.ru","domain:nalog.gov.ru","domain:cbr.ru"],"previous":[]},{"id":"leak-checks","label":{"en":"IP/DNS leak checkers direct","ru":"Проверки утечек IP/DNS напрямую"},"description":{"en":"Sites like whoer.net and ipleak.net. Proxied, they report the exit node instead of your real connection.","ru":"Сайты вроде whoer.net и ipleak.net. Через прокси они покажут выходную ноду, а не ваше реальное подключение."},"domains":["domain:2ip.ru","domain:whoer.net","domain:browserleaks.com","domain:browserleaks.org","domain:ipapi.is","domain:iplocate.io","domain:ifconfig.me","domain:checkip.amazonaws.com","domain:ipify.org","domain:ip.sb","domain:icanhazip.com","domain:ifconfig.co","domain:ident.me","domain:myip.com","domain:myip.is","domain:ipinfo.io","domain:ipecho.net","domain:ip-api.com","domain:ipwho.is","domain:sypexgeo.net","domain:ipapi.co","domain:ipapi.com","domain:db-ip.com","domain:freeipapi.com","domain:iplocation.net","domain:ipchicken.com","domain:iplocation.io","domain:ipregistry.co","domain:maxmind.com","domain:geoiptool.com","domain:ipgeolocation.io","domain:ipdata.co","domain:ipstack.com","domain:ipqualityscore.com","domain:scamalytics.com","domain:iphey.com","domain:pixelscan.net","domain:dnsleaktest.com","domain:ipleak.net","domain:browserling.com","domain:amiunique.org","domain:deviceinfo.me","domain:coveryourtracks.eff.org"],"previous":[]}]},"subpage":{"baseTexts":{"installationGuideHeader":{"en":"Installation","ru":"Установка"},"connectionKeysHeader":{"en":"Connection keys","ru":"Ключи подключения"},"linkCopied":{"en":"Link copied","ru":"Ссылка скопирована"},"linkCopiedToClipboard":{"en":"Link copied to clipboard","ru":"Ссылка скопирована в буфер обмена"},"getLink":{"en":"Get link","ru":"Получить ссылку"},"scanQrCode":{"en":"Scan the QR code above in the app","ru":"Отсканируйте QR-код в приложении"},"scanQrCodeDescription":{"en":"Or copy the link below and paste it into the app","ru":"Или скопируйте ссылку ниже и вставьте её в приложение"},"copyLink":{"en":"Copy link","ru":"Скопировать ссылку"},"name":{"en":"Username","ru":"Имя пользователя"},"status":{"en":"Status","ru":"Статус"},"active":{"en":"Active","ru":"Активна"},"inactive":{"en":"Inactive","ru":"Неактивна"},"expires":{"en":"Expires","ru":"Истекает"},"bandwidth":{"en":"Bandwidth","ru":"Трафик"},"scanToImport":{"en":"Scan to import this key","ru":"Отсканируйте, чтобы импортировать ключ"},"expiresIn":{"en":"Expires","ru":"Истекает"},"expired":{"en":"Expired","ru":"Истекла"},"unknown":{"en":"Unknown","ru":"Неизвестно"},"indefinitely":{"en":"Indefinitely","ru":"Бессрочно"}}}}