Your browser sucks, JavaScript disabled! Gunnar's console needs JavaScript and WebAssembly. Git over SSH on port 2222 does not.

nordisk/holger

docs/v1/FEATURES.md

Holger features

New Holger features from May to October 2026, with status, date, source path and commit. The list was made on 2026-10-28 from the main branches.

Status: Live runs in the current release (R6, 2026-10-27, on holger.rs). Live (off) is in the release but switched off by default. Merged is on the main branch and not yet released. A source path starts with its repository (holger or holger-ui). A commit without a label is in holger.

Login, sessions, invites and step-up use the shared edda crate nornir-identity (Holger implements IdentityHost). See HOLGER-V2.md for the design.

October 14 to 28, 2026

Security gateway (the product core)

Feature Status Date Source path Commit
The intake chain. Each artifact has one explicit state from UNTRUSTED to AVAILABLE, gated on HTTP PUT, native uploads and gRPC, and is served only when AVAILABLE. Live 2026-10-19 holger/server/lib/src/promote/intake.rs 99daae77
The scanner framework: one Scanner trait, typed evidence, an append-only evidence store, signed scan results. Live 2026-10-19 holger/server/lib/src/scanner 94af4ba6
File and archive inspection on every ingest (zip bombs, nesting, path traversal) and a ClamAV and YARA malware hook. Live 2026-10-19 holger/server/inspect b231aa9e
Separation of duties (Developer, Importer, SecurityApprover, RepositoryAdmin, Auditor). Live 2026-10-19 holger/server/lib/src/promote/duties.rs 17bda3af
Offline vulnerability intelligence: OSV, NVD and KEV become a signed update bundle and a verified local advisory database. Live 2026-10-19 holger/intel c643b9a7
One tamper-evident audit trail per artifact (hash chain with signed checkpoints) and its SIEM export. Live 2026-10-19 holger/server/lib/src/audit 2c0d2eca
The airgap demo end to end: holger-server export takes the AVAILABLE set with stored evidence and signed attestations. Live 2026-10-19 holger/server/lib/src/promote/airgap.rs 297c3efb
AI models are first-class artifacts, and pickle files are blocked by default. Live 2026-10-19 holger/server/lib/src/scanner/model.rs 7bb56235
twine upload goes into the intake chain, and the PEP 691 index serves the result. Live 2026-10-19 holger/server/lib/src/promote/intake.rs 513dcac5
The shipped estate turns the security gateway on (intake chain, required scan, approvals). Live 2026-10-19 holger/holger-recipe/src/estate_ron.rs c8d439a3
The security pages: intake queues with counts, and each artifact's state, votes and evidence. Live 2026-10-19 holger/server/lib/src/promote, holger-ui/src/security.rs ce75bb58, holger-ui 45204fb9
The licence policy is a real scanner (SPDX), used by both intake and promotion. Live 2026-10-20 holger/server/lib/src/scanner/license.rs 697d7530
Import doors for signed intel bundles and package bundles (gRPC and HTTP). Live 2026-10-20 holger/server/lib/src/import_door.rs d4b2423c
Stored evidence is read back with its DSSE envelopes; one quarantine for all. Live 2026-10-20 holger/server/lib/src/exposed/http.rs 0cb5f11f
npm through the security gateway (publish into intake, packuments, tarballs, dist-tags). Live 2026-10-21 holger/server/lib/src/promote/npm.rs 1027710e
An airgapped Holger imports signed intel under a trust policy that rides the release. Live 2026-10-22 holger/xtask/src/estate_media.rs 85febf04
"what did this person download": an audit query by identity, repository and time. Live 2026-10-22 holger/server/lib/src/audit/query.rs 7492403d
holger-sandbox, a hardened rootless container runner, and every scan runs inside it. Live 2026-10-23 holger/server/sandbox, holger/server/lib/src/sandbox 1998749a, babf13c8
The default intel feeds carry Wolfi and Chainguard advisories, so Chainguard images get their CVEs. Live 2026-10-23 holger/intel/src/feeds.rs d605b919
The provenance scanner verifies DSSE, in-toto and SLSA, and Sigstore keyless (Fulcio chain, identity) offline. Live 2026-10-23 holger/provenance 5eeac4fd
Pull-through runs the intake chain for OCI (cgr.dev) and Python (PyPI, Chainguard Libraries for Python). Live 2026-10-23 holger/server/lib/src/pull_intake 77477911
cargo xtask demo airgap, the 1.0 demo as one command (an online intake Holger, a secure Holger with no network, real pip). Live 2026-10-23 holger/xtask/src/demo.rs 0c73355d
APK pull-through (Alpine, Wolfi), each package held through the intake chain. Live 2026-10-24 holger/server/lib/src/pull_intake/apk.rs ce1d6a13
The image cataloger reads rpm databases, Go build info and cargo-auditable data. Live 2026-10-24 holger/server/inspect/src d71c6adc
A laid box carries its scan sandbox (crun over its own root file system, ClamAV beside it). Live 2026-10-24 holger/server/sandbox/src/crun.rs 7185cac6
Maven Central .asc signatures are verified offline against pinned keys (opt-in). Live 2026-10-25 holger/provenance/src/pgp.rs 919d2416
Faster scans (a CVE index built once, a YARA prefilter). Live 2026-10-25 holger/server/lib/src/advisory_index.rs 3bad1b14
A container image is never auto-approved. Live 2026-10-26 holger/server/lib/src/pull_intake/mod.rs 00ddbdab
ClamAV (pinned signatures) and YARA are required scanners in the end-to-end gate. Live 2026-10-26 holger/server/cli/tests/e2e_internet_to_build_systems.rs 3b9c6493

Holger 2.0 open core, sync and clients

Feature Status Date Source path Commit
cargo install holger and a plain cargo build --release give a working server; a lone clone builds and serves. Live 2026-10-22 holger/holger-recipe, holger/xtask/src/lone_clone.rs 80ec7d64, 81085f58
The small default build (290 crates, HTTPS by rustls). Live 2026-10-22 holger/server/lib 3f23974d
Streamed gRPC uploads. Live 2026-10-22 holger/server/lib/src/grpc/services.rs 9e2422b2
Replication runs as a resumable job. Live 2026-10-22 holger/server/lib/src/grpc/services.rs dc801dff
Capacity reports cores and RAM beside the data room. Live 2026-10-22 holger/server/lib/src/capacity.rs f0526d4b
Tier 1: a plain cargo build carries the intake chain, configured in one RON shape (sources, steps, rules, gates). Live 2026-10-23 holger/server/lib/src/sources.rs baa48b3a
Holger 2.0 clean build: the root workspace is the open core, the estate parts are a separate workspace. Live 2026-10-25 holger/estate c804ffc9
The sync protocol (signed sync manifests with generations), behind a default-off feature. Live 2026-10-25 holger/sync, holger/server/lib/src/sync.rs be9cb743
cargo install holger --features downstream is the on-premises gateway. Live 2026-10-26 holger/server/downstream 7b1b68fe
cargo xtask e2e, the end-to-end gate (fake internet, upstream pull, scan, two-person approval, signed sync, USB, downstream). Live 2026-10-26 holger/xtask/src/e2e.rs fa2a898d
holger-cli, the thin gRPC client; every console call is a CLI command. Live 2026-10-26 holger/holger-cli, holger-ui/tests/every_call_is_a_cli_command.rs 5022717e, holger-ui 0fff374f
holger-cli --at https://<repo host> reaches the estate through the front. Live 2026-10-26 holger/holger-cli/src/conn.rs ec98db05
Airgap is the default; with no upstream named, Holger is offline. Live 2026-10-26 holger/server/lib/src/egress.rs d72706dd
Build flavours as building blocks: a systemd service, a Kubernetes chart and a separate scan-worker sidecar (the release flavours are not yet a delivery). Merged 2026-10-27 holger/server/cli/src/systemd_verbs.rs, holger/xtask/src/k8s.rs 7564037d
Holger's 15 crates are not yet published on crates.io. Merged – holger (15 crates) –

Console, board and buying

Feature Status Date Source path Commit
The console only calls Holger and renders (thin UI). Live 2026-10-17 holger-ui/crates/holger-ui-server holger-ui f4d917e4
The primary's console is at /login. Live 2026-10-18 holger/holger-recipe/src/packaging.rs b1bc09e8
A paired downstream reports how far it synced; Admin, Sync lists twins and downstreams. Live 2026-10-18 holger/server/lib/src/peers.rs, holger-ui/src/sync.rs 2b915e5c, holger-ui 4762c50d
The estate board (front, main, twin and downstreams with state) and meter trust. Live 2026-10-19 holger/server/lib/src/topology.rs 1f86680f
A repository made at run time serves at once, without a restart. Live 2026-10-19 holger/server/lib/src/exposed/fast_routes.rs 0a1e1efa
A private Holger's buyer signs in with the shop's first-login link and becomes the estate's first admin. Live 2026-10-21 holger/server/lib/src/passkey.rs 475090ec
Buyer pages: My repositories, My plan and My tokens. Live 2026-10-21 holger/server/lib/src/account.rs, holger-ui/src/mine.rs 6d569b4e, holger-ui 0847bfd0
Owner-only grants on every server, audited, and sign-up redemption. Live 2026-10-21 holger/server/lib/src/account.rs, holger-ui/src/pages/mine.rs c0af8a2e, holger-ui ac6877a0
The /signup page with Holger's two choices: an account on this site and a private Holger. Live 2026-10-21 holger/server/lib/src/room.rs, holger-ui/assets/signup.html 9eb558e2, holger-ui b9c603e3
The estate board draws the upstreams, each downstream's fetched packages and lag, and every consumer. Live 2026-10-23 holger/server/lib/src/upstreams.rs, holger-ui/src/security.rs 030c0240, holger-ui 76ecc302
Holger's buy pages are the shared buy flow on the site's own doors. Live 2026-10-23 holger/holger-estate-front/src/buy.rs, holger-ui/assets 3ab3127e, holger-ui 2c4c7fc8
A sold Holger mints and mails its buyer's sign-in-again link. Live 2026-10-23 holger/server/lib/src/sign_in_again.rs 4e44a18e
holger.rs splits "Sign up account" and "Log in", as Gunnar's front does. Live 2026-10-23 holger/holger-front/src/lib.rs, holger-ui/assets/login.html 43e3783b, holger-ui 82d8e036
Browser tests in headless Chromium (buy pages, passkey step, upload, intake, two approvals, board). Live 2026-10-24 holger-ui/browser-tests holger-ui 5b378895
holger.rs public site pages (SEO, llms.txt), on for holger.rs. Live 2026-10-25 holger-ui/crates/holger-public-site 571571b0, holger-ui 9540493b
The upstream's Sync board: per downstream the last sync applied, lag and invalid packages. Live 2026-10-26 holger-ui/src/sync_board.rs holger-ui 709da7e8
The estate board on Overview, Admin and Security draws the RON's own graph. Live 2026-10-27 holger/server/lib/src/topology.rs, holger-ui/src/pages 0d965761, holger-ui a67790aa
Access posture in the RON (reads Gated or Open, front Open or Gated, per-repository Public), shown on the Account page. Merged 2026-10-27 holger/server/lib/src/posture.rs 8f00da6f, holger-ui a192caa0
The board's summary line is plain and true (boxes, upstream, downstreams with last sync or lag). Merged 2026-10-27 holger/server/lib/src/topology.rs 0fea2068
A sold private Holger's /signup says it is private and asks for an invite. Merged 2026-10-27 holger/holger-estate-front/src/console.rs 35089526
The login page uses the shared edda login helpers. Merged 2026-10-27 holger-ui/assets/login.js holger-ui 6604faab
The Security page shows the real chain and its counts, sources and their checks, and the scanners. Merged 2026-10-28 holger/server/lib/src/security_view.rs 6bfff5ed
An estate's public repositories are data (holger.rs: crates and npm) and are shown as public. Merged 2026-10-28 holger/holger-recipe/src/estate_ron.rs 36264444
WireGuard downstreams. Downstreams sync through the front by default, or over a separate WireGuard that reaches only the main's sync door; enrolment by signed invite, revocation in the console, shown on the board (29/29 on real VMs). Merged 2026-10-28 holger/server/lib/src/sync/downstreams.rs, holger/holger-estate-front/src/downstreams.rs 5a34ad3c, holger-ui 28159bf7
Holger runs on the shared identity core with a __Host- HttpOnly session cookie (everyone registers their passkey again after this release). Merged 2026-10-28 holger/server/lib/src/identity_host.rs, holger-ui/crates/holger-ui-server/src/session.rs d47e5b15, holger-ui a1d1f9b1
A laid main keeps the mail relay the ONE box feeds it. Merged 2026-10-28 holger/server/lib/src/refeed.rs a1c96e89
A laid site takes its public-site switch again from the ONE box (site refeed <site> --only public_site): main and twin keep it as the console's setting console.public-site, audited, as Gunnar does. Merged 2026-11-01 holger/estate/holger-fleet/src/order.rs, holger/server/lib/src/fleet_box.rs HOL-PUBSITE-FEED

Estate (the Gunnar lifecycle for Holger)

Feature Status Date Source path Commit
Holger pulls from the ONE monetize and takes the ONE box's keep-only update (twin, main, front). Live 2026-10-17 holger/estate/holger-fleet, holger/holger-estate-front/src/update.rs 4c9096bf, 5ac4ad85
Holger's live slot (twin, main and front take a live update). Live 2026-10-18 holger/estate/holger-live 8579df6c
Holger's front recharges a lost main or twin. Live 2026-10-18 holger/holger-estate-front/src/recharge.rs 8faaaf48
Every estate link runs over WireGuard only. Live 2026-10-19 holger/server/lib/src/tunnel_addr.rs 84554886
One recharge path, the same as Gunnar's. Live 2026-10-19 holger/crates/holger-monetize-guest 761c4c52
Pairing renews every paired link before it ends. Live 2026-10-19 holger/holger-estate-front/src/renew.rs d72f6373
Holger DEV media narrate their boot logs like Gunnar's. Live 2026-10-19 holger/server/dev-narrate a1beec5c
Holger follows Gunnar's pattern for the live switch, the off-site copy and the purge. Live 2026-10-20 holger/server/lib/src/offsite.rs 40883d02
What a sale made rides the twin and comes back with a recharge. Live 2026-10-21 holger/server/lib/src/twin_follow.rs be1bb292
cargo xtask installtest, the KVM install proof. Live 2026-10-21 holger/xtask/src/installtest.rs 0c3cb815
The public HTTP door and the gRPC door speak TLS 1.3 only. Live 2026-10-22 holger/server/lib/src/exposed/tls.rs 831a8dee

Earlier (May to October 13, 2026)

Everything here is live.

Feature Status Date Source path Commit
The Holger estate box line (holger-ebox). Live 2026-10-05 – 07de7854
Console: Admin, Invites and a step-up login. Live 2026-10-04 holger-ui –
Holger registers its own signed monetize plugin, sells and enforces disk space, and the console sells room. Live 2026-09-28 – 2c722a46
debuginfod ingestion and promotion. Live 2026-09-23 – –
A durable job queue for promote, replicate, upload and gate; one ISO where the role is elected at boot. Live 2026-09-21 – 401ab8b7, ac6d5f4d
A tamper-evident audit log; loaded WebAssembly plugins run as untrusted code. Live 2026-09-20 – 677c4c81, e1be20d0
Holger declares a bootable live medium. Live 2026-09-17 – –
A full security review (40 defects found). Live 2026-09-11 docs/security-review-2026-09-11.md –
A per-site installer ISO in one command; one ISO installs many machines, each with its own identity; a secure-boot proof. Live 2026-08-13 to 2026-08-14 – ebcb351f
A package handler can be a WebAssembly module that Holger loads. Live 2026-08-05 – e490696f
The MVP build thing. Live 2026-07-23 – –
A read-only mini tier UI. Live 2026-07-22 – –
Pluggable OIDC and bearer authentication. Live 2026-07-18 – –
Maven metadata, Debian control fields, browsable OCI images, a Migrate pane, a 14-ecosystem security sweep, holger-server scan, provenance checks on archive open, and benches against Artifactory. Live 2026-06 – –
holger-client-cli with airgap and push commands. Live 2026-05-22 – –
Benchmarks against Nexus. Live 2026-05 – –