Open-source project
v2fly/v2ray-core avatar
v2fly/v2ray-core

v2ray-core: A Modular Go Proxy Platform for Building Network Tunnels

A platform for building proxies to bypass network restrictions.

34,639 stars5,073 forksGoMIT

At a glance

What is it?
v2ray-core is the MIT-licensed Go engine behind Project V, a set of network tools for building proxies that bypass restrictions and protect traffic. It implements a modular architecture of proxy protocols and transport layers that can be combined via a Protobuf-based configuration file.
Who is it for?
v2ray-core is the right choice for teams or individuals who need a configurable, protocol-flexible proxy engine and are willing to read the documentation at v2fly.org to set up the JSON or Protobuf config. The Protobuf-schema config, multi-protocol proxy layer, and broad transport support make it more flexible than simple single-protocol tools, at the cost of a steeper configuration learning curve.
Can I use it commercially?
Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 4 days ago.
What is it written in?
Mainly Go, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 27, 2026, and from our analysis. They are not legal advice.

Editorial analysis

What v2ray-core Is and Who Needs It

v2ray-core is the core engine of Project V, described in the README as a set of network tools that helps you build your own computer network to secure connections and protect privacy. The repository description calls it a platform for building proxies to bypass network restrictions.

The audience is technical users who need a configurable, protocol-flexible proxy: developers testing network behavior across different routing rules, users operating in network environments that restrict certain traffic patterns, and teams building privacy-preserving tunneling infrastructure. The documentation at v2fly.org covers newcomer instructions and protocol configuration; the README points to it as the primary reference.

The project is maintained by v2fly, a community organization that took over development after the original v2ray project went quiet. The last push was on 2026-09-25 and the most recent release is v5.54.2, published on 2026-09-22, indicating active release work.

Protocol and Transport Layer Architecture

v2ray-core separates concerns into two layers: proxy protocols and transport protocols. The proxy layer defines how traffic is encapsulated (VMess, VLESS, Shadowsocks, Trojan, and others defined in the proxy/ directory). The transport layer defines how those encapsulated packets move between endpoints.

The go.mod file reveals which transport dependencies the project ships:

- gorilla/websocket: WebSocket transport, allowing proxy traffic to travel over a WebSocket connection - quic-go and apernet/quic-go: QUIC transport, which uses UDP and is harder to detect than TCP-based connections - pion/webrtc, pion/dtls, pion/ice: WebRTC and DTLS support, enabling ICE-negotiated connections - refraction-networking/utls: TLS fingerprint camouflage, so connections appear to come from known browser TLS stacks rather than Go's standard TLS - hysteria/core: Hysteria protocol support, a UDP-based transport designed for high-latency or lossy networks

The transport layer can be set independently of the proxy protocol. A VMess proxy can travel over a WebSocket connection or a QUIC connection using the same config structure.

Google's Starlark scripting language (via google/starlark-go) is included for routing rule scripting, allowing traffic routing decisions to be expressed as code rather than static config entries.

Configuration System

v2ray-core uses Protocol Buffers for its configuration schema. The config.proto file in the repository root defines the top-level config structure, and config.pb.go is the generated Go binding. The config.go file handles parsing.

In practice, users write configuration as JSON, which v2ray-core reads and maps to the Protobuf schema internally. A typical configuration file defines inbound proxy entries (which ports and protocols accept traffic on the local machine) and outbound entries (which protocols and servers forward that traffic). Routing rules decide which inbound traffic is forwarded to which outbound based on domain, IP, or Starlark rule expressions.

The features/ directory defines the feature interfaces that components must implement. The proxy/, transport/, and app/ directories contain implementations of those interfaces. This modular boundary means a new proxy protocol can be added as a new package under proxy/ without modifying the core routing logic.

The Protobuf schema is versioned at v5 in the go.mod module path: github.com/v2fly/v2ray-core/v5. This means configuration files from earlier major versions of v2ray-core require migration.

Installing v2ray-core

The README does not include install commands. The primary installation paths are documented at v2fly.org/guide/start.html. The repository links to a packaging status page showing distribution across Linux distributions. Installation is available through distribution package managers on many Linux systems, as shown in the packaging status table in the README.

For direct downloads, the v2fly project publishes release archives for Linux (amd64, arm64, and others), Windows, and macOS on the GitHub Releases page. The RELATED SEARCHES include v2ray core download, v2ray core windows download, v2ray core ubuntu, v2ray core linux, and v2ray core mac, reflecting that cross-platform use is common.

The go.mod module requires Go 1.26.0 with a toolchain of go1.26.1, which sets the minimum Go version for building from source. Most users install pre-built binaries from the releases page rather than compiling from source.

Real Limitations and Operational Complexity

The configuration learning curve is the primary friction. v2ray-core has no interactive setup wizard. A working deployment requires writing a JSON config that correctly specifies inbound listeners, outbound connections with server addresses and credentials, and routing rules that direct traffic appropriately. Mistakes in routing rules silently misdirect traffic rather than producing clear error messages.

The README is minimal. The project's documentation lives entirely at v2fly.org rather than in the repository. This creates a dependency on an external site: if v2fly.org is unavailable or outdated, the repository itself offers little guidance.

v2ray-core v5 uses a Protobuf config schema that is not backward-compatible with the older JSON configs written for v2ray-core v4 or earlier. Users migrating from earlier versions must manually convert their configuration files.

The uTLS dependency for TLS fingerprint camouflage is a useful defense against protocol detection, but it requires periodic updates as browser TLS fingerprints change. The effectiveness of any TLS camouflage depends on how current the fingerprint database is relative to active detection systems.

v2ray-core vs Xray-core

Xray-core is a fork of v2ray-core maintained by the XTLS community. Both are MIT-licensed Go proxy tools with similar module structures. The key difference is protocol additions: Xray-core ships the XTLS flow protocol and the Reality protocol, which is designed to make proxy traffic look indistinguishable from regular TLS connections to real services. These protocols are not present in v2ray-core.

For users who do not need Reality or XTLS, v2ray-core and Xray-core are functionally close: both support VMess, VLESS, Shadowsocks, Trojan, WebSocket, QUIC, and similar combinations. Configuration files are largely compatible.

The practical choice depends on protocol requirements. Teams using Reality for TLS fingerprint resistance must use Xray-core. Teams running VMess or Trojan over WebSocket or QUIC can use either. v2ray-core's go.mod already includes utls for TLS camouflage at a lower level than Reality, so it is not without fingerprint-resistance capability; it approaches the problem differently.

Editorial conclusion

v2ray-core is the right choice for teams or individuals who need a configurable, protocol-flexible proxy engine and are willing to read the documentation at v2fly.org to set up the JSON or Protobuf config. The Protobuf-schema config, multi-protocol proxy layer, and broad transport support make it more flexible than simple single-protocol tools, at the cost of a steeper configuration learning curve. Teams who want a faster update cadence for new protocols, specifically the Reality and XTLS flow extensions, should evaluate Xray-core, which adds those features ahead of v2ray-core. The project is MIT-licensed, which imposes no restrictions on use or distribution. The last push was on 2026-09-25 and v5.54.2 was released on 2026-09-22, indicating ongoing maintenance.

Frequently asked questions

What is V2Ray core?

v2ray-core is the MIT-licensed Go engine of Project V, a proxy platform that supports multiple protocols (VMess, VLESS, Shadowsocks, Trojan) and transports (WebSocket, QUIC, WebRTC) configurable via a Protobuf-based JSON file. It is maintained by the v2fly community and documented at v2fly.org.

how to install v2ray core

Installation guides for Linux, Windows, and macOS are at v2fly.org/guide/start.html. Pre-built release archives are published on the GitHub Releases page. Many Linux distributions also package v2ray-core through their package managers, as shown in the packaging status table in the README.

v2ray core vs xray core

Xray-core is a fork of v2ray-core that adds the XTLS and Reality protocols for stronger TLS fingerprint resistance. Both use similar configuration formats and support VMess, VLESS, WebSocket, and QUIC. Teams who need Reality must use Xray-core; teams running other protocol combinations can use either.

Official sources

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/v2fly-v2ray-core.svg)](https://hysenlabs.com/projects/v2fly-v2ray-core)