NaïveProxy is built from a heavily minimized subset of the Chromium source tree — only about 0.3% of the original codebase is included. This dramatically reduces build times and binary sizes compared to building full Chromium while still producing an authentic network stack. The build process follows the standard Chromium build system (Documentation Index
Fetch the complete documentation index at: https://mintlify.com/klzgrad/naiveproxy/llms.txt
Use this file to discover all available pages before exploring further.
gn + ninja) with a number of patches applied on top.
The current NaïveProxy base is built from Chromium
150.0.7871.63. The exact version is always tracked in the CHROMIUM_VERSION file at the root of the repository.Authoritative Build Instructions
The canonical, always-up-to-date build instructions are maintained as a GitHub Actions workflow. This workflow is executed for every release and covers all supported platforms:.github/workflows/build.yml
Rather than duplicating platform-specific steps here (which could become stale), refer directly to that file for the exact commands used to produce each release binary.
Chromium Modifications
NaïveProxy applies a focused set of patches to the Chromium source to support its use case as a proxy binary. The changes are:Source and build size reduction
Source and build size reduction
The included source tree is reduced to approximately 0.3% of the original Chromium repository. Unused subsystems, UI code, and platform-specific components are stripped out to produce a minimal, fast-to-build binary.
Disabled exceptions and RTTI
Disabled exceptions and RTTI
C++ exceptions and runtime type information (RTTI) are disabled to reduce binary size and link time. This applies on all platforms except macOS and Android, where the toolchain or platform requirements necessitate them.
OpenWrt build support
OpenWrt build support
The build system is patched to support cross-compilation targeting OpenWrt device architectures. See OpenWrt Support for the list of supported instruction sets.
Builtin certificate verifier (Linux and Android)
Builtin certificate verifier (Linux and Android)
On Linux and Android, the system TLS verifier (which depends on NSS on Linux) is replaced with Chromium’s builtin verifier. The trust store is read from standard system paths, following the same lookup order as Go’s
crypto/x509:- The file at the path in the
SSL_CERT_FILEenvironment variable - The first available file among:
/etc/ssl/certs/ca-certificates.crt(Debian / Ubuntu / Gentoo)/etc/pki/tls/certs/ca-bundle.crt(Fedora / RHEL 6)/etc/ssl/ca-bundle.pem(OpenSUSE)/etc/pki/tls/cacert.pem(OpenELEC)/etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem(CentOS / RHEL 7)/etc/ssl/cert.pem(Alpine Linux)
- Files in the directory at the path in the
SSL_CERT_DIRenvironment variable - Files in the first available directory among:
/etc/ssl/certs(SLES10 / SLES11)/etc/pki/tls/certs(Fedora / RHEL)/system/etc/security/cacerts(Android)
PKCS#7 AIA response handling
PKCS#7 AIA response handling
Authority Information Access (AIA) responses delivered in PKCS#7 format are handled correctly, broadening compatibility with certificate authorities that use this format.
Higher socket limits for proxies
Higher socket limits for proxies
The per-host and per-proxy socket limits inherited from Chromium are increased to accommodate proxy workloads, which typically require more simultaneous connections than a regular browser.
Force tunneling for all sockets
Force tunneling for all sockets
All outbound sockets are forced through the CONNECT tunnel, ensuring that no traffic bypasses the proxy chain.
HTTP/2 and HTTP/3 CONNECT tunnel Fast Open
HTTP/2 and HTTP/3 CONNECT tunnel Fast Open
Support for Fast Open on CONNECT tunnels is added via the
fastopen header, allowing payload to be sent before the tunnel response is received where the server supports it. See the Padding Protocol page for the constraint on the first CONNECT request.RST_STREAM frame padding
RST_STREAM frame padding
RST_STREAM frames are padded as described in the Padding Protocol specification to reduce their detectability as a behavioral signal.