- v2ray, xray, ... GUI for Windows, macOS, Linux, Android, (iOS currently blocked).
- Typically used in combination with a core (v2ray-core, xray-core, etc)
Warning
This project is currently in its early alpha stage and may exhibit instability during execution. User preferences may not be retained in the final release, and the API is subject to change without prior notice. Please use this software at your own risk.
2024-09-27
Important
iOS development is currently blocked. iOS app using Network Extension requires a paid Apple Developer Program membership ($99/year) to debug even on our own devices, which is not available for the developers right now.
2024-09-27
Windows | Linux | macOS | Android | iOS | ||
---|---|---|---|---|---|---|
AnyPortal | 🟢 | 🟢 | 🟢 | 🟢 | 🟡 | |
core | of exec | 🟢 | 🟢 | 🟢 | 🟢¹ | ⚫ |
of lib | ⚫ | ⚫ | ⚫ | 🟢² | 🟡 | |
tun | via root | 🟢³ | 🟢⁴ | 🟢⁵ | 🟢¹ | ⚫ |
via platform api | ⚫ | ⚫ | 🔴⁶ | 🟢 | 🔴⁶ | |
system proxy | 🟢 | 🟢⁷ | 🟢 | 🟢⁸ | ⚫ |
- Require
api28
variant, not available for play storeapilatest
version.- The core exec asset is copied to internal storage upon selection, so you MUST reselect the core if you want to update it.
- The
working directory
can not be set to a location without execution permission, e.g. the sdcard which has a FAT file system. - You MUST manually specify the
envs
if the core needs it, e.g.{"xray.location.asset" : "/storage/emulated/0/path/to/xray/assets"}
- Only xray-core 1.8.24 is embedded for now. Latest xray-core has stability issues
- Require
Run as Administrator
, elevated user share configuration with original user - Require root, root DOES NOT share configuration with original user
- Require root, root DOES NOT share configuration with original user. Move the app to Application folder and run
sudo /Applications/AnyPortal.app/Contents/MacOS/AnyPortal
. - Require an apple developer license to even debug an app that uses Network Extension. Dev progress currently blocked. The iOS app would serve little purpose right now without tun.
- Tested on Ubuntu 24.04 with Gnome
- Require root
- ⚫ Not Planned: impossible / no plans / discontinued
- 🟡 Planned: planned / under development
- 🔵 Experimental: experimental implementation / testing
- 🟢 Working: functioning as expected
- 🔴 Not Working: dev blocked / known issues / non-functional
See planning here.
- why v2ray/xray over sing-box?
- load balancing
- chained proxy in transport layer
- better server-side functions (gRPC interface etc.), so we choose it also as client to reduce maintenance
- remote profile has only one required field, a REST URL pointing to a v2ray config
- for v2ray to work properly on Android and iOS, tun2socks is necessary
- v2ray native tun inbound is only half finished for now
- tun2socks with best performance so far: hev-socks5-tunnel, followed by sing-box
- you can use anyportal with tun disabled on Android, and use external tools to redirect traffic to a socks port, just like on desktop
- android api 29+ does not allow running binary directly
- you can run custom cores (any version of v2ray, xray) with apk compiled with api target 28
- play store always requires recent api targets, way over 28 now, so you can only use an embedded core with playstore apk
- why do I need tun via root or system proxy on Android?
- there are apps actively detecting if you are using VPN
All rights reserved until further notice (hopefully soon).
- v2fly/v2ray-core, MIT
- xtls/xray-core, MPL-2.0
- heiher/hev-socks5-tunnel, MIT
- a full list of flutter dependency can be found in
./pubspec.yaml
- Qv2ray/Qv2ray, GPL-3.0
- SagerNet/sing-box, GPL
coming soon
"You take the blue pill, the story ends, you wake up in your bed and believe whatever you want to believe. You take the red pill, you stay in Wonderland and I show you how deep the rabbit hole goes."
— Morpheus, The Matrix (1999)
We hope you choose well between your home world and Wonderlands.