Your servers. Your routing. On every device.
Documentation · Releases · Telegram
OneXray is an open-source Xray-core client for phones, tablets, and desktops. Import your servers or subscriptions, choose how traffic is routed, and connect through your device's system VPN.
Bring your own servers. OneXray does not provide VPN access, proxy servers, or subscriptions. A compatible configuration or subscription from a provider you trust is required.
| Platform | Requirements | Download |
|---|---|---|
| iPhone / iPad | iOS / iPadOS 15+ | App Store · IPA |
| macOS | macOS 13+, Apple silicon or Intel | Mac App Store |
| macOS — OneXraySE | macOS 13+, Apple silicon or Intel | Homebrew · Universal ZIP |
| Android phones / tablets | Android 10+, arm64-v8a or x86_64 | Google Play · Universal APK |
| Windows x64 | Windows 10 20H2+ | winget install --id YuanDevLLC.OneXray -e · ZIP · Microsoft Store |
| Windows ARM64 | Windows 11 | winget install --id YuanDevLLC.OneXray -e · ZIP · Microsoft Store |
| Linux x86_64 | glibc 2.39+ | DEB · ZIP |
| Linux arm64 | glibc 2.39+ | DEB · ZIP |
This README describes the current codebase. Store and release builds may differ. See the installation notes for platform-specific requirements.
Subscriptions can use age encryption with an existing key pair or locally generated X25519 / Hybrid (ML-KEM-768 + X25519) keys. Only the public key is sent to the subscription source; the private key stays on your device. HTTPS is required. Age subscription details (Chinese).
Real running screenshots from iOS, Android, macOS, and Windows. Click an image to view it at full size.


Server imports extract nodes, not the source file's routing or DNS configuration. Import complete configurations through Custom Routing or Raw JSON instead.
| Platform | Integration |
|---|---|
| iOS / macOS | Always-on and on-demand VPN; connect or disconnect on selected Wi-Fi networks; separate cellular (iOS) or Ethernet (macOS) behavior. |
| Android | Per-app VPN: all apps, only selected apps, or all except selected apps. Inclusion and exclusion lists are saved separately. |
| Windows / Linux | Explicit Xray outbound-interface selection. |
| Desktop | Tray controls, launch at login, start hidden, and optional connection when the app opens. |
Light and dark themes and the interface language follow the system by default. Available languages: English, Simplified Chinese, Traditional Chinese, Russian, and Persian, including right-to-left layout for Persian.
The Mac App Store build uses a Packet Tunnel extension. The separately distributed OneXraySE uses a System Extension and is available through Homebrew:
brew install --cask onexrayse
For the ZIP build, extract it and move OneXraySE.app to /Applications before opening it. Complete the initial setup and approve the VPN and Network Extension requests. Depending on the macOS version, approval may appear in System Settings → General → Login Items & Extensions or Privacy & Security. Follow any restart prompt. See Apple's System Extension installation guide.
To update the ZIP build, quit OneXraySE, replace the app in /Applications, and reopen it. Approve an extension update if requested.
The App Store is the simplest installation route. An IPA must be re-signed together with its Packet Tunnel extension using provisioning profiles that allow Network Extension capabilities. A free Personal Team cannot provide the required capability; a paid Apple Developer Program membership is required. An app that opens successfully is not proof that its VPN extension is authorized. See Apple's supported capabilities.
EXE and ZIP use a standalone Core with a native TUN interface; starting VPN requests administrator approval through UAC. Extract the entire ZIP before running it: a ZIP does not register protocol links or create shortcuts automatically.
Microsoft Store uses an MSIX package with a system VPN provider and handles architecture selection and updates. EXE / ZIP and MSIX use separate data locations and are not interchangeable upgrade channels. See the Windows build guide for development builds and mode selection.
On Debian/Ubuntu, install the DEB matching your architecture. It installs the runtime dependencies, registers OneXray links, and grants the required network capabilities:
sudo apt install ./OneXray-linux-x86_64.deb
For arm64, use OneXray-linux-aarch64.deb instead. For the ZIP build on Debian/Ubuntu, run the following from the directory containing the extracted OneXray folder:
sudo apt install -y procps libcap2-bin libayatana-appindicator3-1
sudo setcap cap_net_admin,cap_net_raw+eip OneXray/OneXrayCore
ZIP builds do not register onexray:// links automatically. GNOME users may need the AppIndicator extension for tray controls.
No account, advertising, analytics, tracking, telemetry, or crash reporting. OneXray does not collect your traffic, browsing history, configurations, or connection logs. Your configuration determines which servers and services receive network requests. Subscription sources, DNS servers, and other third-party services have their own privacy policies. Privacy policy.
Shared configurations, subscription URLs, and exported logs may contain credentials or other sensitive data. Review their contents before sharing.
Code, translations, and documentation improvements are welcome.
Dart
86.9%
Swift
4.1%
Python
3.9%
Kotlin
2.8%
C++
1.1%
Your servers. Your routing. On every device.
Documentation · Releases · Telegram
OneXray is an open-source Xray-core client for phones, tablets, and desktops. Import your servers or subscriptions, choose how traffic is routed, and connect through your device's system VPN.
Bring your own servers. OneXray does not provide VPN access, proxy servers, or subscriptions. A compatible configuration or subscription from a provider you trust is required.
| Platform | Requirements | Download |
|---|---|---|
| iPhone / iPad | iOS / iPadOS 15+ | App Store · IPA |
| macOS | macOS 13+, Apple silicon or Intel | Mac App Store |
| macOS — OneXraySE | macOS 13+, Apple silicon or Intel | Homebrew · Universal ZIP |
| Android phones / tablets | Android 10+, arm64-v8a or x86_64 | Google Play · Universal APK |
| Windows x64 | Windows 10 20H2+ | winget install --id YuanDevLLC.OneXray -e · ZIP · Microsoft Store |
| Windows ARM64 | Windows 11 | winget install --id YuanDevLLC.OneXray -e · ZIP · Microsoft Store |
| Linux x86_64 | glibc 2.39+ | DEB · ZIP |
| Linux arm64 | glibc 2.39+ | DEB · ZIP |
This README describes the current codebase. Store and release builds may differ. See the installation notes for platform-specific requirements.
Subscriptions can use age encryption with an existing key pair or locally generated X25519 / Hybrid (ML-KEM-768 + X25519) keys. Only the public key is sent to the subscription source; the private key stays on your device. HTTPS is required. Age subscription details (Chinese).
Real running screenshots from iOS, Android, macOS, and Windows. Click an image to view it at full size.


Server imports extract nodes, not the source file's routing or DNS configuration. Import complete configurations through Custom Routing or Raw JSON instead.
| Platform | Integration |
|---|---|
| iOS / macOS | Always-on and on-demand VPN; connect or disconnect on selected Wi-Fi networks; separate cellular (iOS) or Ethernet (macOS) behavior. |
| Android | Per-app VPN: all apps, only selected apps, or all except selected apps. Inclusion and exclusion lists are saved separately. |
| Windows / Linux | Explicit Xray outbound-interface selection. |
| Desktop | Tray controls, launch at login, start hidden, and optional connection when the app opens. |
Light and dark themes and the interface language follow the system by default. Available languages: English, Simplified Chinese, Traditional Chinese, Russian, and Persian, including right-to-left layout for Persian.
The Mac App Store build uses a Packet Tunnel extension. The separately distributed OneXraySE uses a System Extension and is available through Homebrew:
brew install --cask onexrayse
For the ZIP build, extract it and move OneXraySE.app to /Applications before opening it. Complete the initial setup and approve the VPN and Network Extension requests. Depending on the macOS version, approval may appear in System Settings → General → Login Items & Extensions or Privacy & Security. Follow any restart prompt. See Apple's System Extension installation guide.
To update the ZIP build, quit OneXraySE, replace the app in /Applications, and reopen it. Approve an extension update if requested.
The App Store is the simplest installation route. An IPA must be re-signed together with its Packet Tunnel extension using provisioning profiles that allow Network Extension capabilities. A free Personal Team cannot provide the required capability; a paid Apple Developer Program membership is required. An app that opens successfully is not proof that its VPN extension is authorized. See Apple's supported capabilities.
EXE and ZIP use a standalone Core with a native TUN interface; starting VPN requests administrator approval through UAC. Extract the entire ZIP before running it: a ZIP does not register protocol links or create shortcuts automatically.
Microsoft Store uses an MSIX package with a system VPN provider and handles architecture selection and updates. EXE / ZIP and MSIX use separate data locations and are not interchangeable upgrade channels. See the Windows build guide for development builds and mode selection.
On Debian/Ubuntu, install the DEB matching your architecture. It installs the runtime dependencies, registers OneXray links, and grants the required network capabilities:
sudo apt install ./OneXray-linux-x86_64.deb
For arm64, use OneXray-linux-aarch64.deb instead. For the ZIP build on Debian/Ubuntu, run the following from the directory containing the extracted OneXray folder:
sudo apt install -y procps libcap2-bin libayatana-appindicator3-1
sudo setcap cap_net_admin,cap_net_raw+eip OneXray/OneXrayCore
ZIP builds do not register onexray:// links automatically. GNOME users may need the AppIndicator extension for tray controls.
No account, advertising, analytics, tracking, telemetry, or crash reporting. OneXray does not collect your traffic, browsing history, configurations, or connection logs. Your configuration determines which servers and services receive network requests. Subscription sources, DNS servers, and other third-party services have their own privacy policies. Privacy policy.
Shared configurations, subscription URLs, and exported logs may contain credentials or other sensitive data. Review their contents before sharing.
Code, translations, and documentation improvements are welcome.
Dart
86.9%
Swift
4.1%
Python
3.9%
Kotlin
2.8%
C++
1.1%