From source

Build it yourself.

GCC and Clang CI, warnings-as-errors, unit tests, benchmark gates and sanitizer runs all live in the repository. The reproducible path uses Ubuntu 26.04 and Qt 6.10.

Reproducible

Container build

./tools/container_build.sh

Fast path

Already-configured host

./build.sh
./build/virgin

Release

Hardened build and tests

cmake -S . -B build-release -G Ninja \
  -DCMAKE_BUILD_TYPE=Release \
  -DVIRGIN_ENABLE_HARDENING=ON \
  -DVIRGIN_WARNINGS_AS_ERRORS=ON
cmake --build build-release --parallel
ctest --test-dir build-release --output-on-failure

Correctness

ASan / UBSan

cmake -S . -B build-sanitize -G Ninja \
  -DCMAKE_BUILD_TYPE=Debug \
  -DVIRGIN_ENABLE_SANITIZERS=ON \
  -DVIRGIN_ENABLE_HARDENING=OFF
cmake --build build-sanitize --parallel
ctest --test-dir build-sanitize --output-on-failure

Packaging

Staging prefix and AppImage

cmake --install build-release --prefix "$PWD/stage"
built and tested inside the pinned qt container
./tools/build_appimage.sh
APPIMAGE_EXTRACT_AND_RUN=1 ./dist/Virgin-0.1.0-x86_64.AppImage

Use --runtime-version to verify the Qt and Chromium versions embedded in an artifact.

Deeper reading lives in the repository: docs/architecture.md, docs/release-checklist.md, SECURITY.md and THIRD_PARTY_NOTICES.md.

Open the repository