-
patronus daily build status server-openrc aarch64 (machine-readable)
Pre-releaseAll checks were successfulRust CI / Dashboard UI (type-check + production build) (push) Successful in 34sDeploy Patronus site / deploy-site (push) Successful in 55sRust CI / Check full 46-crate workspace (best-effort) (push) Successful in 1m59sRust CI / Check eBPF crate (compile only, no run) (push) Successful in 55sRust CI / Operator tests against a real k3s cluster (push) Successful in 1m30sRust CI / Privileged netfilter + raw-socket tests (NET_ADMIN) (push) Successful in 3m30sRust CI / Format + Clippy + Security Audit + Test (non-eBPF crates) (push) Successful in 9m43sRust CI / Feature matrix (all features + one build per USE flag) (push) Successful in 12m40sRust CI / Netlab features (lane J feature pages + lane K SD-WAN edge) (push) Successful in 24m25sRust CI / Gentoo Docker Build (push) Successful in 22m3sRust CI / Netlab (network namespaces) - journeys, failure/recovery, upgrade, LAN services (push) Successful in 32m44sreleased this
2026-10-30 10:29:05 -07:00 | 88 commits to main since this release{"project":"patronus","arch":"aarch64","mode":"daily","variant":"","image":"server-openrc","image_id":"server-openrc-aarch64","result":"pass","failed_step":"","summary":"PASS (aarch64, QEMU TCG emulation, no KVM): 4 QEMU runs (boot, install, reboot; UEFI, USB + optical; answer-file, serial TUI, VGA TUI, graphical installer driven by keyboard + pointer + AT-SPI, no-answer-file fallback) - installed system refuses password root SSH, accepts the key, serves the web UI on the chosen IP (build 1378s, test 9511s)","sha":"d102b1e9d373b199af7e06b289d5408af1bbf492","run_id":"12578","run_url":"https://git.canutethegreat.com/CanuteTheGreat/patronus/actions/runs/12578","time":"2026-11-10T00:03:59Z","build_seconds":1378,"test_seconds":9511}
Downloads
-
Source code (ZIP)
2 downloads
-
Source code (TAR.GZ)
0 downloads
-
Source code (ZIP)
-
patronus daily build status server-openrc x86_64 (machine-readable)
Pre-releaseAll checks were successfulRust CI / Dashboard UI (type-check + production build) (push) Successful in 34sDeploy Patronus site / deploy-site (push) Successful in 55sRust CI / Check full 46-crate workspace (best-effort) (push) Successful in 1m59sRust CI / Check eBPF crate (compile only, no run) (push) Successful in 55sRust CI / Operator tests against a real k3s cluster (push) Successful in 1m30sRust CI / Privileged netfilter + raw-socket tests (NET_ADMIN) (push) Successful in 3m30sRust CI / Format + Clippy + Security Audit + Test (non-eBPF crates) (push) Successful in 9m43sRust CI / Feature matrix (all features + one build per USE flag) (push) Successful in 12m40sRust CI / Netlab features (lane J feature pages + lane K SD-WAN edge) (push) Successful in 24m25sRust CI / Gentoo Docker Build (push) Successful in 22m3sRust CI / Netlab (network namespaces) - journeys, failure/recovery, upgrade, LAN services (push) Successful in 32m44sreleased this
2026-10-30 10:29:04 -07:00 | 88 commits to main since this release{"project":"patronus","arch":"x86_64","mode":"daily","variant":"","image":"server-openrc","image_id":"server-openrc-x86_64","result":"pass","failed_step":"","summary":"PASS (x86_64, QEMU KVM): 12 QEMU runs (boot, install, reboot; UEFI+USB, BIOS+CD; answer-file, serial TUI, VGA TUI, graphical installer driven by keyboard + pointer + AT-SPI, no-answer-file fallback) - installed system refuses password root SSH, accepts the key, serves the web UI on the chosen IP (build 1515s, test 7147s)","sha":"bcd551302691de29c4c16f82883842c53a21df51","run_id":"12729","run_url":"https://git.canutethegreat.com/CanuteTheGreat/patronus/actions/runs/12729","time":"2026-11-10T06:39:52Z","build_seconds":1515,"test_seconds":7147}
Downloads
-
Source code (ZIP)
1 download
-
Source code (TAR.GZ)
1 download
-
Source code (ZIP)
-
Patronus v0.2.0: device segmentation (opt-in)
StableSome checks failedRust CI / Dashboard UI (type-check + production build) (push) Successful in 34sRust CI / Check eBPF crate (compile only, no run) (push) Successful in 1m14sRust CI / Operator tests against a real k3s cluster (push) Successful in 1m54sRust CI / Check full 46-crate workspace (best-effort) (push) Successful in 4m8sRust CI / Privileged netfilter + raw-socket tests (NET_ADMIN) (push) Successful in 4m58sRust CI / Feature matrix (all features + one build per USE flag) (push) Successful in 16m7sRust CI / Netlab features (lane J feature pages + lane K SD-WAN edge) (push) Successful in 22m36sRust CI / Format + Clippy + Security Audit + Test (non-eBPF crates) (push) Successful in 25m22sRust CI / Netlab (network namespaces) - journeys, failure/recovery, upgrade, LAN services (push) Successful in 33m14sRust CI / Gentoo Docker Build (push) Successful in 33m7sRelease / Create Release (push) Has been skippedRelease / Build Release-3 (push) superseded: this release workflow was rewritten; the v0.2.0 release was built and attached by Release run 674 (workflow_dispatch), archives verifiedRelease / Build Release-1 (push) superseded: this release workflow was rewritten; the v0.2.0 release was built and attached by Release run 674 (workflow_dispatch), archives verifiedRelease / Build Release-4 (push) superseded: this release workflow was rewritten; the v0.2.0 release was built and attached by Release run 674 (workflow_dispatch), archives verifiedRelease / Build Release (push) superseded: this release workflow was rewritten; the v0.2.0 release was built and attached by Release run 674 (workflow_dispatch), archives verifiedRelease / Build Release-2 (push) superseded: this release workflow was rewritten; the v0.2.0 release was built and attached by Release run 674 (workflow_dispatch), archives verifiedLive ISO / Build + test + publish live ISO (x86_64) (push) Has been cancelledLive ISO / Build + test + publish live ISO (aarch64) (push) Successful in 2h58m32sreleased this
2026-10-30 07:32:21 -07:00 | 95 commits to main since this releasePatronus 0.2.0: device segmentation
Everything below is opt-in. A router upgraded from the previous release keeps behaving exactly as it did: isolation is off until you switch a segment on, DNS rebinding protection stays off on an existing store (it is on for new installs), and there are no policies, Wi-Fi networks or time limits until you create them. The five new migrations (1300, 1310, 1320, 1330/1331, 1340) are applied on first boot;
upgrade-store.shproves an upgrade from the previous release's store and from the v0.1.0 layout.What is new
- Device segmentation and isolation (opt-in per segment). Devices have an identity (MAC bound to an address), belong to groups (
home,quarantine, your own) and are default-deny between each other. Links between groups and one-way service rules (e.g. NAS -> camera on tcp 554) open exactly what you list. Unknown devices land in quarantine (DHCP, DNS and ping only, never the admin UI). Own nft tableinet patronus_seg, same atomic apply as the main ruleset; revoking a device cuts its live connections. Page: Segmentation, API:/api/segmentation. - Per-device Wi-Fi credentials (
USE=wifi-ap). One passphrase per device on one SSID (hostapd per-MAC PSK). WPA2: live, add / rotate / revoke without restarting the access point. WPA3 (SAE): needs an AP restart whenever a password changes, because stock hostapd reads SAE passwords only at start; the UI says so and every station reconnects for a few seconds. A device created without a MAC is enrolled by its first join. Show-passphrase / QR for phones. - DNS rebinding protection. Unbound
private-address/ dnsmasqstop-dns-rebind, with per-domain exceptions for your split-horizon names. On for new installs, off for upgraded stores. - Per-device and per-group DNS policy and query logs. Block lists, allow/block/override rules, family preset (adult + malware lists, safe search), DNS-over-TLS refused for devices under a policy, optional per-policy query log with search and CSV export (needs DNS resolver mode / Unbound).
- Parental time limits. Allowed windows plus a daily quota of active minutes per device or group, a warning before the cut, a "time's up" page on plain HTTP, DNS and DHCP kept alive while blocked, +N minutes / pause / resume for parents. Own nft table
inet patronus_time; the block survives a reboot. - Traffic insight history with country and ASN (
USE=insight). Hourly per-device totals by country and ASN from DB-IP Lite databases (patronus ipdb update, monthly timer), retention and a "do not record" list for privacy. Insights page: Live, Countries, ASNs, Devices, Uplinks, Settings. - Uplink health and SLA alerts. Per-gateway round-trip time, loss and availability history, extra DNS / TCP / HTTP probes sent through each gateway's own interface (an ISP that pings but has dead DNS shows as degraded), outage list, SLA target with alerts in the event log and webhooks.
Documented limits (please read)
- Unmanaged switches: wired devices behind an unmanaged switch share one switch port, so the switch forwards between them without the router; they cannot be isolated from each other (put them in one group, or use a managed switch with port isolation).
- IPv6 binding is next: IPv6 between devices of an isolated segment is denied and an unknown MAC forwards no IPv6, but per-address IPv6 identity binding (SLAAC / privacy addresses) is not done yet.
- Simulated radios only: the Wi-Fi code is proven on
mac80211_hwsimwith stock hostapd 2.10 (26/26 checks, nightly CI job). It has not been run on real Wi-Fi hardware yet. DNS-over-HTTPS cannot be blocked reliably.
Proof
CI on the release commit: Format + Clippy (whole workspace,
-D warnings) + Test, privileged netfilter tests, netlab (journeys, failure/recovery, upgrade), netlab-features (everylane-s-*scenario: segmentation 67 checks, DNS rebinding, time limits, insight, uplink), Gentoo OpenRC and systemd builds, feature matrix. Nightly: Wi-Fi on mac80211_hwsim, previous-release upgrade with 30 power cuts, mutation floors (new floor forseg_rules.rs: 63 of 63 mutants caught).Artifacts
patronus-v0.2.0-x86_64-unknown-linux-gnu.tar.gz(patronus-web, patronus-cli, docs) sha25693aa2f7a6997e097f5f27bb50031477559775063dc4b09d57944f2e3ff69577fpatronus-v0.2.0-aarch64-unknown-linux-gnu.tar.gz(built with thin LTO) sha256a0581219c0de4efe206a1a4527af7a4945ca7e68a60a4c2b71f74f725578d3b7- Both are glibc builds made on Ubuntu 24.04 (need glibc >= 2.39); no musl or riscv64 archives. The supported ways to run Patronus are the live/installer ISO and the Gentoo ebuild
net-firewall/patronus-0.2.0. - Live/installer ISOs, both built from the tagged commit and tested in QEMU (boot, install, reboot, web UI; UEFI/BIOS, serial/VGA/graphical installer, rescue/forensic/live modes):
patronus-v0.2.0-x86_64.isosha256a0f4a44875f43d19a0ee889520c46c49d25f204b3b71cec8ae92257627afdd87(the testeddailyISO of commit55bf0500, CI run 7701; the tag run's own x86_64 job hit the runner's 3 h limit)patronus-v0.2.0-aarch64.isosha256a13cb776fe52cfe542e62a11ac0ca298f218fa657dbcdf1324ce8faf9fc23a2e(tag run 7716, QEMU TCG)- test evidence:
*-iso-test-evidence.tgz; the rollingdailypre-release carries the same tree
- Every archive was started once in CI (
patronus-cli --version) from the files inside the archive before it was attached.
Downloads
-
Source code (ZIP)
1 download
-
Source code (TAR.GZ)
1 download
- Device segmentation and isolation (opt-in per segment). Devices have an identity (MAC bound to an address), belong to groups (
-
patronus daily build status aarch64 (machine-readable)
Pre-releaseSome checks failedRust CI / Format + Clippy + Security Audit + Test (non-eBPF crates) (push) Has been cancelledRust CI / Privileged netfilter + raw-socket tests (NET_ADMIN) (push) Has been cancelledRust CI / Netlab (network namespaces) - journeys, failure/recovery, upgrade, LAN services (push) Has been cancelledRust CI / Netlab features (lane J feature pages + lane K SD-WAN edge) (push) Has been cancelledRust CI / Feature matrix (all features + one build per USE flag) (push) Has been cancelledRust CI / Operator tests against a real k3s cluster (push) Has been cancelledRust CI / Check eBPF crate (compile only, no run) (push) Has been cancelledRust CI / Check full 46-crate workspace (best-effort) (push) Has been cancelledRust CI / Gentoo Docker Build (push) Has been cancelledRust CI / Dashboard UI (type-check + production build) (push) Has been cancelledreleased this
2026-10-28 17:51:09 -07:00 | 144 commits to main since this release{"project":"patronus","arch":"aarch64","mode":"daily","variant":"","result":"pass","failed_step":"","summary":"PASS (aarch64, QEMU TCG emulation, no KVM): 5 QEMU runs (boot, install, reboot; UEFI, USB + optical; answer-file, serial TUI, VGA TUI, graphical installer driven by keyboard + pointer + AT-SPI, no-answer-file fallback) - installed system refuses password root SSH, accepts the key, serves the web UI on the chosen IP (build 1463s, test 8783s)","sha":"55bf0500028cc6c34d4c25c1cb3dd3c5369c25bb","run_id":"7701","run_url":"https://git.canutethegreat.com/CanuteTheGreat/patronus/actions/runs/7701","time":"2026-10-30T15:51:34Z","build_seconds":1463,"test_seconds":8783}
Downloads
-
Source code (ZIP)
1 download
-
Source code (TAR.GZ)
3 downloads
-
Source code (ZIP)
-
patronus daily build status (machine-readable)
Pre-releaseSome checks failedRust CI / Dashboard UI (type-check + production build) (push) Successful in 20sRust CI / Check full 46-crate workspace (best-effort) (push) Successful in 1m21sRust CI / Feature matrix (all features + one build per USE flag) (push) Failing after 3m30sRust CI / Format + Clippy + Security Audit + Test (non-eBPF crates) (push) Successful in 8m59sRust CI / Operator tests against a real k3s cluster (push) Successful in 1m12sRust CI / Check eBPF crate (compile only, no run) (push) Successful in 40sRust CI / Privileged netfilter + raw-socket tests (NET_ADMIN) (push) Successful in 11m33sRust CI / Netlab features (lane J feature pages + lane K SD-WAN edge) (push) Successful in 16m20sRust CI / Netlab (network namespaces) - journeys, failure/recovery, upgrade, LAN services (push) Successful in 28m6sRust CI / Gentoo Docker Build (push) Successful in 44m31sreleased this
2026-10-28 09:40:07 -07:00 | 152 commits to main since this release{"project":"patronus","arch":"x86_64","mode":"daily","variant":"","result":"pass","failed_step":"","summary":"PASS (x86_64, QEMU KVM): 7 QEMU runs (boot, install, reboot; UEFI+USB, BIOS+CD; answer-file, serial TUI, VGA TUI, graphical installer driven by keyboard + pointer + AT-SPI, no-answer-file fallback) - installed system refuses password root SSH, accepts the key, serves the web UI on the chosen IP (build 4372s, test 5160s)","sha":"55bf0500028cc6c34d4c25c1cb3dd3c5369c25bb","run_id":"7701","run_url":"https://git.canutethegreat.com/CanuteTheGreat/patronus/actions/runs/7701","time":"2026-10-30T19:06:07Z","build_seconds":4372,"test_seconds":5160}
Downloads
-
Source code (ZIP)
1 download
-
Source code (TAR.GZ)
1 download
-
Source code (ZIP)
-
patronus daily ISO (rolling, pre-release)
Pre-releaseSome checks failedRust CI / Dashboard UI (type-check + production build) (push) Successful in 20sRust CI / Check full 46-crate workspace (best-effort) (push) Successful in 1m21sRust CI / Feature matrix (all features + one build per USE flag) (push) Failing after 3m30sRust CI / Format + Clippy + Security Audit + Test (non-eBPF crates) (push) Successful in 8m59sRust CI / Operator tests against a real k3s cluster (push) Successful in 1m12sRust CI / Check eBPF crate (compile only, no run) (push) Successful in 40sRust CI / Privileged netfilter + raw-socket tests (NET_ADMIN) (push) Successful in 11m33sRust CI / Netlab features (lane J feature pages + lane K SD-WAN edge) (push) Successful in 16m20sRust CI / Netlab (network namespaces) - journeys, failure/recovery, upgrade, LAN services (push) Successful in 28m6sRust CI / Gentoo Docker Build (push) Successful in 44m31sreleased this
2026-10-28 09:39:03 -07:00 | 152 commits to main since this releaseRolling pre-release build of the patronus live/installer ISO from
main(92d99ce98b), updated 2026-11-04 23:41:54 UTC.
Each architecture is replaced in place by its own daily job, only after the QEMU boot + install + reboot + web-probe tests passed on that architecture.- Server OpenRC - aarch64:
patronus-server-openrc-daily-aarch64.iso(1538 MiB), SHA256 inpatronus-server-openrc-daily-aarch64.iso.sha256 - Server OpenRC - x86_64:
patronus-server-openrc-daily-x86_64.iso(1627 MiB), SHA256 inpatronus-server-openrc-daily-x86_64.iso.sha256
Last test result (x86_64): PASS (x86_64, QEMU KVM): 7 QEMU runs (boot, install, reboot; UEFI+USB, BIOS+CD; answer-file, serial TUI, VGA TUI, graphical installer driven by keyboard + pointer + AT-SPI, no-answer-file fallback) - installed system refuses password root SSH, accepts the key, serves the web UI on the chosen IP (build 2586s, test 4882s)
Write to USB: see docs/ISO-INSTALL.md (Secure Boot must be OFF). x86_64: UEFI or BIOS; aarch64 / riscv64: UEFI only.
Downloads
-
Source code (ZIP)
3 downloads
-
Source code (TAR.GZ)
2 downloads
- Server OpenRC - aarch64:
-
iso-2026.10.27
Pre-releaseAll checks were successfulRust CI / Dashboard UI (type-check + production build) (push) Successful in 26sRust CI / Check full 46-crate workspace (best-effort) (push) Successful in 1m27sRust CI / Operator tests against a real k3s cluster (push) Successful in 1m30sRust CI / Check eBPF crate (compile only, no run) (push) Successful in 37sRust CI / Privileged netfilter + raw-socket tests (NET_ADMIN) (push) Successful in 4m1sRust CI / Feature matrix (all features + one build per USE flag) (push) Successful in 8m57sRust CI / Format + Clippy + Security Audit + Test (non-eBPF crates) (push) Successful in 11m56sRust CI / Netlab features (lane J feature pages + lane K SD-WAN edge) (push) Successful in 15m30sRust CI / Netlab (network namespaces) - journeys, failure/recovery, upgrade, LAN services (push) Successful in 29m28sRust CI / Gentoo Docker Build (push) Successful in 28m12sreleased this
2026-10-27 23:30:15 -07:00 | 158 commits to main since this releasePatronus live/installer ISO (Gentoo-based, x86_64, UEFI + BIOS hybrid, USB-writable,
patronus-installincluded). Pre-release / test build - first Patronus ISO (it previously only had an Alpine remaster for CI), built on rw-man-01 with the same builder as Horcrux's ISO (main47d1ed70+ installer fixes).SHA256:
1010018ecc046c9ad9c5c5d600c57397a7550fd35c073a87c2afa6a3f0dc0e28(patronus-iso-2026.10.27-x86_64.iso, 1430792192 bytes)Tested in QEMU/KVM: UEFI (OVMF) booting the ISO as a USB stick and BIOS (SeaBIOS) booting it as CD -> unattended install (patronus-install, ext4) to a blank virtio disk -> reboot from disk -> web UI answered over HTTPS (:8443) and admin login worked. Evidence (serial logs, screenshots) in the
-test-evidence.tgzasset.Secure Boot: not supported - turn it OFF in firmware setup. Not tested on real hardware. Write to USB and details: docs/ISO-INSTALL.md.
Downloads
-
Source code (ZIP)
1 download
-
Source code (TAR.GZ)
1 download
-
Source code (ZIP)