Developers
This page is for source builds, packaging work, and local development.
If you only want to download & run published artifacts, go to Self-Hosted and CLI.
Repository layout
src/STATIC_proxy/contains the Rust proxy, local control plane, JS build assets, and the publicprofiles/catalogsrc/ebpf/contains the Linux packet-mutation program and its build toolingdistro/contains the packaging path for the 404 distribution built on the Rose base and consumed on Windows
Common dependencies
You need these pieces for most source workflows:
- Rust with the target you plan to build
- Node.js 20 for
src/STATIC_proxy/build - a C/C++ toolchain plus
cmake,ninja,perl, andpkg-config git
Install the STATIC frontend assets once:
Build STATIC for local macOS or Linux runs
From the repository root:
Then run it against the checked-in profiles directory:
./src/STATIC_proxy/target/release/static_proxy --profiles-path ./src/STATIC_proxy/profiles --profile edge-windows
Swap edge-windows for chrome-windows or firefox-windows if needed.
Build the Windows distribution inputs
The distro packaging path expects two artifacts first:
- a Linux musl STATIC binary
src/ebpf/ttl_editor.o
Install the Linux-side packaging dependencies on a Debian or Ubuntu host:
sudo apt-get update
sudo apt-get install -y \
clang \
llvm \
musl-tools \
pkg-config \
cmake \
ninja-build \
perl \
make \
g++ \
iproute2 \
libbpf-dev \
libelf-dev \
linux-libc-dev
rustup target add x86_64-unknown-linux-musl
Build the musl STATIC binary:
CC_x86_64_unknown_linux_musl=musl-gcc \
CARGO_TARGET_X86_64_UNKNOWN_LINUX_MUSL_LINKER=musl-gcc \
cargo build --release --locked \
--manifest-path src/STATIC_proxy/Cargo.toml \
--bin static_proxy \
--target x86_64-unknown-linux-musl
Build the eBPF object:
Package the distribution tarball
Once those two inputs exist, package the distribution artifact:
./distro/build.sh \
--static-binary "$PWD/src/STATIC_proxy/target/x86_64-unknown-linux-musl/release/static_proxy" \
--ttl-object "$PWD/src/ebpf/ttl_editor.o" \
--version v0.1.0-dev \
--output "$PWD/dist/404-distro.tar.gz" \
--image-tag "404-distro-build:local"
That produces a WSL-importable root filesystem tarball for the 404 distribution at dist/404-distro.tar.gz.
Use the published guides after you build
- For manual Windows operation of that tarball, use Windows
- For direct local binary usage on macOS, use macOS
- For direct local binary usage and eBPF attachment on Linux, use Linux
- For the packaging contract and publication model, use Linux for Windows