lightway-core is a free, open source networking & connectivity project written in C and released under GPL-2.0. It has 626 GitHub stars, 72 forks and 6 open issues, and was last pushed 5 months ago. On this registry it ranks #37 of 37 tracked projects in Networking & Connectivity, with 5 head-to-head comparisons available.

What is lightway-core?

Lightway Core is a small, multi-platform C library published by ExpressVPN that provides the foundational components of a virtual private network protocol, written for developers, researchers, and VPN operators who want to build on or study the protocol behind ExpressVPN's Lightway.

What it is

Lightway Core is the C implementation of Lightway, ExpressVPN's modern VPN protocol. The README describes the library as deliberately lean: it runs faster, uses less battery, and is easier to audit and maintain than heavier alternatives, and it may appear in the source tree under the internal project name, libhelium. It targets Linux, macOS, and Windows, and it lives in the C ecosystem alongside its build and cryptographic dependencies, which the project acknowledges as Ceedling, Earthly, and WolfSSL.

The concrete gap it fills is the one between a protocol design and a working deployment. It does not hand developers a finished VPN client or server; it supplies the foundational components those products are assembled from, so a team shipping across several operating systems does not have to write and maintain that core itself. The library is licensed under the GNU General Public License, version 2. Its documentation is generated in two forms: prose pages built with Antora from sources kept in docs/modules/ROOT/pages, and a Doxygen API reference.

Key capabilities

  • Builds a static library for Linux and runs the full test suite in a containerised environment with the single command earthly +all.
  • Supports per-platform Ceedling workflows with ceedling test project:$PLATFORM and ceedling release project:$PLATFORM, where $PLATFORM is linux, macos, or windows.
  • Pins its test tooling to Ceedling v0.31.1, because version 1.0.0 introduced breaking changes.
  • Enforces code standards through pre-commit hooks, installed with earthly +install-precommit.
  • Publishes two documentation sets: user documentation at lightway.com/docs and Doxygen-generated API documentation at lightway.com/doxygen/annotated.html.
  • Depends on WolfSSL for cryptography, alongside Ceedling and Earthly.
  • Documents its contribution and vulnerability-reporting paths in CONTRIBUTING.adoc and SECURITY.adoc.

Who uses it and how

  • VPN service operators and protocol engineers working on the concerns the repository is tagged for: vpn, vpn-protocols, and vpn-server.
  • Researchers and reviewers who want to read a production VPN protocol implementation, since the repository is deliberately kept unarchived for research use.
  • Teams building cross-platform VPN clients, including Windows work, where the README directs builds to run from git-bash started through a Developer Command Prompt for VS 2019.
  • Developers evaluating the Lightway protocol before committing to the Rust implementation, who can build and exercise this C version first.

Getting started

The simplest route is Earthly: running earthly +all builds the static library for Linux and runs all tests inside a container. Without a container, the README describes installing the Ceedling gem at version 0.31.1 and then running ceedling test project:$PLATFORM or ceedling release project:$PLATFORM for the platform in question.

How it compares

The repository itself points readers towards Lightway Rust, an actively maintained rewrite that ExpressVPN encourages over this C codebase. Among the tools named in these facts, Lightway Core is therefore best understood as the earlier, still-readable C implementation of the same protocol family, while Lightway Rust is the one receiving ongoing development.

When to use it — and when not to

A self-hoster has to run the tooling around the library: a container or Earthly setup for the primary build path, and a Ruby gem installation for Ceedling if the container is skipped. Anyone starting new work should not choose it, because the README states plainly that Lightway C is no longer under active development. It remains a reasonable option only for research, study, or existing integrations already built on it.

project readme (upstream, from github) — read inline

= Lightway Core

ifdef::env-github[] :warning-caption: :warning: endif::[]

[WARNING]

Lightway C is no longer under active development. The repository remains unarchived for those who wish to use it for research purposes, but we strongly encourage the use of https://github.com/expressvpn/lightway[Lightway Rust], as it continues to be actively maintained and improved.

Lightway Core is a modern VPN protocol by ExpressVPN, to deliver a VPN experience that’s faster, more secure, and more reliable.

== ExpressVPN

One of the world’s largest providers of VPN services, ExpressVPN enables users to protect their privacy and security online with just a few clicks. The company’s award-winning apps for Windows, Mac, iOS, Android, Linux, routers, and browsers secure user information and identities with best-in-class encryption and leak-proofing.

For more information please visit https://www.expressvpn.com.

== About Lightway Core

Lightway Core is a small, multi-platform C library that provides the foundational components of a virtual private network (VPN).

Lightway Core is the technology that powers Lightway, ExpressVPN’s pioneering new VPN protocol, built for an always-on world. It makes your VPN experience speedier, more secure, and more reliable than ever. Designed to be light on its feet, Lightway runs faster, uses less battery, and is easier to audit and maintain.

Note: Lightway Core may be referred to by the internal project name, libhelium, in the source code.

== Development Environment

This project uses https://pre-commit.com/[pre-commit] to enforce code standards.

To install pre-commit, run: earthly +install-precommit.

== Build and Run (Earthly)

The simplest way to build the static library for Linux, and run all tests is to use Earthly, which runs the build in a containerised environment.

[source,bash] earthly +all

== Build and Run (Ceedling)

. Install ceedling gem somewhere on your path. We only support ceedling v0.31.1 as v1.0.0 has some breaking changes. + [source,bash] gem install ceedling -v 0.31.1

. Windows only: Start git-bash (or similar) via a Developer Command Prompt for VS 2019 for all subsequent commands

. Build and run tests, $PLATFORM is [linux|macos|windows] + [source,bash] ceedling test project:$PLATFORM

. Build lib for release + [source,bash] ceedling release project:$PLATFORM

== Documentation

Documentation for Lightway Core can be found at https://lightway.com/docs. We use https://antora.org/[Antora] to generate this documentation. The source code can be found in this repository at +docs/modules/ROOT/pages+.

API documentation, generated by https://doxygen.nl[Doxygen], can be found at https://lightway.com/doxygen/annotated.html.

== Contributing

We appreciate feedback and contribution to this repository! Before you get started, please see link:CONTRIBUTING.adoc[CONTRIBUTING]

== Reporting a vulnerability

To report security vulnerabilities, please see section on link:SECURITY.adoc#reporting-a-vulnerability[Reporting a vulnerability]

== Acknowledgments

We rely on the following projects to build Lightway Core:

=== Preferred Languages

We prefer all communications to be in English.

== License This project is licensed under the https://www.gnu.org/licenses/gpl-2.0.html[GNU General Public License, version 2.]

Frequently asked questions

Is lightway-core free to use?

lightway-core is open source under the GPL-2.0 licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does lightway-core do?

Lightway Core is a modern VPN protocol by ExpressVPN, to deliver a VPN experience that’s faster, more secure, and more reliable.

What is lightway-core written in?

lightway-core is primarily written in C. Its source is publicly available at https://github.com/expressvpn/lightway-core, and it has 626 GitHub stars.