PROJECT V / CORE / CLIENT
Interfaces, cores, and protocols each have a distinct role
- Background
- Project V · V2Ray
- Core Families
- V2Fly · Xray
- Desktop Clients
- v2rayN
- Android Clients
- v2rayNG · v2flyNG
Choose a client based on your device and preferred workflow, a core based on configuration compatibility, and a protocol based on the connection parameters provided by your server.
Explore core and client terminology →
Project V and V2Ray
Project V is a starting point for understanding the technology behind V2Ray. V2Ray combines local inbound connections, remote outbound connections, routing, and DNS resolution into a configurable system. It isn’t a particular graphical interface or just one protocol. When people say “install V2Ray,” they often mean installing a client that manages these configurations. Separating interface, core, and protocol names helps explain why different clients can import the same share link, yet fail to start it with a particular core.
This layered design also shapes the troubleshooting process: seeing a node in the interface only confirms that some of its details were recognized. To establish a connection, the core must still handle the protocol, transport, and security layer. When reading a guide, first identify whether it describes an interface setting or core behavior. Our user guides focus on setup steps, protocol guides cover compatibility and design trade-offs, and the glossary explains configuration fields. Use them together to investigate the issue at hand.
How V2Fly and Xray Differ
V2Fly continues the V2Ray community’s maintenance work, while Xray is a separate core branch developed from related technology. They share some concepts and protocol support, but their feature development, configuration fields, and default behavior aren’t identical. For settings such as REALITY and XTLS Vision, check Xray’s support. Simply swapping the core doesn’t mean every existing field will behave the same way.
When choosing a core, start with the server configuration to determine what you need, then check whether the client can represent all of its fields. If a subscription import drops security or transport parameters, a familiar protocol name in the interface won’t guarantee a working connection. For most users, keeping a verified working configuration is more useful for troubleshooting than switching cores frequently. To compare cores, keep the server, destination, and test method the same, then compare startup logs and connection results.
Open-Source Status of the Three Clients
v2rayN, v2rayNG, and v2flyNG are all open-source graphical clients. v2rayN is designed for desktop use, with server lists, subscription groups, and proxy settings. v2rayNG is for Android and uses the Xray core; v2flyNG offers an Android option based on the V2Fly core. These clients provide interfaces for managing configurations, but they aren’t server services, and installing one doesn’t automatically give you a working subscription.
Open source means the code can be read, used, and redistributed under its applicable license. It doesn’t mean every configuration will work on every device. V2Fly-core is primarily licensed under MIT, while Xray-core is primarily licensed under MPL-2.0; each client and dependency has its own license terms. Most users only need to check the source, maintenance notes, and features. If you plan to modify or redistribute code, read the licenses for the relevant projects and dependencies rather than treating the entire ecosystem as if it had a single license.
Updates and Compatibility Checks
Clients, cores, subscriptions, and routing rule sets are separate things to update. A client update may change interface controls or how configurations are generated. A core update may add protocol features or change field support. Subscription updates sync server parameters, while rule set updates can change domain and IP matches. So “it’s updated” isn’t specific enough for troubleshooting. Note what was updated and which settings changed before and after the issue appeared.
For routine maintenance, save your subscription sources, custom routing rules, and local listener settings first. Then read the update notes and test one change at a time. Use the homepage to find resources and understand how settings relate; installation details are on the downloads page, so you don’t have to rely on outdated version information. If only some apps stop working after an update, check system proxy and app-specific settings first. If the core won’t start, review the configuration parsing details. Recording these layers separately preserves more useful clues than simply reinstalling.