-
v0.4.2
StableAll checks were successfulTest / Create distribution (push) Successful in 38sTest / ShareFS (push) Successful in 42sTest / Sandbox (push) Successful in 48sTest / Sandbox (race detector) (push) Successful in 49sTest / Hakurei (push) Successful in 53sTest / Hakurei (race detector) (push) Successful in 54sRelease / Create release (push) Successful in 1m10sTest / Flake checks (push) Successful in 1m21sreleased this
2026-05-10 16:17:48 +09:00 | 0 commits to master since this releaseFixes
- Abandon response on termination during testing of package
container.
Enhancements
- Optionally suppress init verbosity in package
container. - Replace capability checks during NixOS VM tests with native tests of
packagecontainer. - Optionally map uid/gid 0 as init in package
container. - Arrange for
binfmt_miscregistration in packagecontainer.
Full Changelog: v0.4.1...v0.4.2
Downloads
- Abandon response on termination during testing of package
-
v0.4.1
StableAll checks were successfulTest / Create distribution (push) Successful in 38sTest / ShareFS (push) Successful in 43sTest / Sandbox (push) Successful in 48sTest / Sandbox (race detector) (push) Successful in 48sTest / Hakurei (race detector) (push) Successful in 55sRelease / Create release (push) Successful in 1m8sTest / Hakurei (push) Successful in 2m14sTest / Flake checks (push) Successful in 1m25sreleased this
2026-05-04 05:05:38 +09:00 | 47 commits to master since this releaseFixes
- Strings larger than a page is rejected by package
container.
Enhancements
- Overlay mounts are now configured via fsconfig(2) in package
container.
Internal
- Checksum helper command in
cmd/mbf. - Pass preferred job count via
internal/pkg. - Optionally open cache in
cmd/mbf. - Artifact IR daemon in
cmd/mbf. - Ongoing cures now supports fine-grained cancellation in
internal/pkg. - LLVM toolchain is now built in a single artifact.
- Binary stage0 distribution is shrunk to less than half its former size.
- The stage0 toolchain is now functionally equivalent to all future stages and is able to cure artifacts without special cases.
- Package status dashboard upstreamed in
cmd/mbf.
Full Changelog: v0.4.0...v0.4.1
Downloads
- Strings larger than a page is rejected by package
-
v0.4.0
StableAll checks were successfulTest / Create distribution (push) Successful in 37sRelease / Create release (push) Successful in 45sTest / ShareFS (push) Successful in 43sTest / Sandbox (push) Successful in 48sTest / Hakurei (push) Successful in 52sTest / Sandbox (race detector) (push) Successful in 48sTest / Hakurei (race detector) (push) Successful in 55sTest / Flake checks (push) Successful in 1m28sreleased this
2026-04-11 10:49:43 +09:00 | 220 commits to master since this releaseMigration
The
cmd/hakureicommandapp, for starting containers from a configuration file, has been renamed torun. Additionally,dist/release.shhas been renamed toall.sh, however usage remains identical.API Changes
- Remove compatibility wrappers for all deprecated APIs.
- Package
extrenamed fromcontainer/std. - Rename
ScmpSyscalltoSyscallNum. - Package
vfsrenamed fromcontainer/vfs. - Package
checkrenamed fromcontainer/check. - Move syscall wrappers to package
ext. - Package
fhsrenamed fromcontainer/fhs. - Move package
container/stubinternal. - Command
runrenamed toexec, andapptorunincmd/hakurei. - Remove setup helpers from package
container. - Optionally reject insecure options in package
hst. - Remove explicit enablements JSON adapter in package
hst. - Unexport
PR_SET_NO_NEW_PRIVSwrapper in packagecontainer. - Move landlock internal from package
container.
Fixes
- Correctly describe
--with-toolchainincmd/mbf. - Use
filepathin portable packages. - Ignore finished process in container init.
- Optionally skip landlock on hostnet in package
container. - Group-accessible permission bits in
cmd/sharefsto work around vfs inode file attribute race.
Enhancements
- C integer limit values in package
ext. - Optionally set
FD_CLOEXECviaclose_range(build tag:close_range). - Optionally suppress via assumed checksum in package
internal/pkg. - Release script
dist/release.shreplaced bycmd/dist. - Prefix configurable from environment via
cmd/dist. - Conditionally skip root remount in package
hst. - Add riscv64 stage0 tarball for Rosa OS.
- Optionally transparently degrade in test suite.
Internal
- Generic netlink implementation in package
internal/netlink. - Kobject uevent (with coldboot) implementation in package
internal/uevent. - Export container params of
KindExecandKindExecNetin packageinternal/pkg. - Move collection helper-artifact to package
internal/pkg. - Retain session by default in
cmd/mbf. - Alternative hsurc path for Rosa OS.
- Cache now accepts flags in package
internal/pkg.
Full Changelog: v0.3.7...v0.4.0
Downloads
-
v0.3.7
StableAll checks were successfulRelease / Create release (push) Successful in 53sTest / Create distribution (push) Successful in 44sTest / ShareFS (push) Successful in 50sTest / Sandbox (push) Successful in 56sTest / Hakurei (push) Successful in 1m2sTest / Sandbox (race detector) (push) Successful in 58sTest / Hakurei (race detector) (push) Successful in 1m2sTest / Flake checks (push) Successful in 1m30sreleased this
2026-03-15 21:04:55 +09:00 | 376 commits to master since this releaseFixes
- Update URLs for rename of organisation
securitytorosa.
Enhancements
- Text representation for scheduling policy constants.
- Export scheduling constants in
std. - Expose scheduling policy and priority in
hst.
Internal
- Represent runtime dependencies in
internal/rosa.
Full Changelog: v0.3.6...v0.3.7
Downloads
- Update URLs for rename of organisation
-
v0.3.6
StableAll checks were successfulRelease / Create release (push) Successful in 1m19sTest / Create distribution (push) Successful in 1m6sTest / Sandbox (push) Successful in 2m58sTest / Hakurei (push) Successful in 4m31sTest / ShareFS (push) Successful in 4m24sTest / Sandbox (race detector) (push) Successful in 5m24sTest / Hakurei (race detector) (push) Successful in 6m30sTest / Flake checks (push) Successful in 1m26sreleased this
2026-03-07 16:32:04 +09:00 | 431 commits to master since this releaseFixes
- Allow devel syscalls in
internal/pkg. - Keep objects alive while stopping cleanups in
internal/lockedfile. - Cancel on scanner error in
internal/pkg. - Stricter checking in
internal/pkgerror filtering.
Enhancements
- Set scheduling policy in
container. - Treat nil pathname as self in
ldd. - Use
/proc/self/exedirectly incontainer. - Deprecate unused APIs and remove
cmd/hpkg.
Internal
- Validate tar pathnames in
internal/pkg. - Read buffer free list in
internal/pkg. - Buffer tar reader in
internal/pkg. - Significantly improve error resolution performance in
internal/pkg. - Expose extra information for
FileArtifactpipelines. - Mount
tmpfson/tmpin integration test to prevent spurious failures. - Match
ospackage behaviour incontainerpackage error injection tests. - Export layer promotion in
internal/pkg. - Raise string limit to 16 MiB in
internal/pkg. - Supported artifacts in
internal/pkgnow saves logs.
Full Changelog: v0.3.5...v0.3.6
Downloads
- Allow devel syscalls in
-
v0.3.5
StableAll checks were successfulRelease / Create release (push) Successful in 1m14sTest / Create distribution (push) Successful in 1m10sTest / Sandbox (push) Successful in 2m7sTest / ShareFS (push) Successful in 3m18sTest / Hakurei (push) Successful in 3m25sTest / Hpkg (push) Successful in 4m8sTest / Sandbox (race detector) (push) Successful in 5m23sTest / Hakurei (race detector) (push) Successful in 6m25sTest / Flake checks (push) Successful in 1m35sreleased this
2026-02-09 00:11:20 +09:00 | 604 commits to master since this releaseFixes
- Filter host-dependent mount options in test cases.
Enhancements
- Include target in dist filename.
- Add riscv64 constants.
Internal
- Allow multiarch in
execArtifact. - Set project-specific User-Agent in
httpArtifact. - Artifact IR is now standardised for
internal/pkg.
Full Changelog: v0.3.4...v0.3.5
Downloads
-
v0.3.4
StableAll checks were successfulRelease / Create release (push) Successful in 1m3sTest / Create distribution (push) Successful in 1m0sTest / Sandbox (push) Successful in 2m10sTest / Hakurei (push) Successful in 3m24sTest / ShareFS (push) Successful in 3m20sTest / Hpkg (push) Successful in 4m0sTest / Sandbox (race detector) (push) Successful in 5m13sTest / Hakurei (race detector) (push) Successful in 6m8sTest / Flake checks (push) Successful in 1m31sreleased this
2026-01-27 03:56:06 +09:00 | 691 commits to master since this releaseFixes
- Treat
internal/pipewirenetwork errors as fatal.
Enhancements
- No longer poll possibly blocking calls in
internal/pipewire. - Shared permissionless filesystem via
cmd/sharefs. - Intern checked absolute pathnames.
Internal
- Handle socket fd directly in
internal/pipewire. - Hakurei is now fully self-hosted via
internal/rosa.
Full Changelog: v0.3.3...v0.3.4
Downloads
- Treat
-
v0.3.3
StableAll checks were successfulRelease / Create release (push) Successful in 1m10sTest / Create distribution (push) Successful in 35sTest / Sandbox (push) Successful in 1m45sTest / Hakurei (push) Successful in 2m39sTest / Hpkg (push) Successful in 3m50sTest / Sandbox (race detector) (push) Successful in 4m43sTest / Hakurei (race detector) (push) Successful in 5m37sTest / Flake checks (push) Successful in 1m35sreleased this
2025-12-15 20:34:45 +09:00 | 880 commits to master since this releaseSecurity
This release mitigates vulnerabilities in PipeWire
SecurityContext. It is highly recommended to upgrade to this release as soon as possible.The
SecurityContextmachinery is fatally flawed, it blindly sets read and execute bits on all objects for clients with the lowest achievable privilege level (by settingPW_KEY_ACCESSto"restricted"). This enables them to call any method targeting any object, and sinceRegistry::Destroychecks for the read and execute bit, allows the destruction of any object other thanPW_ID_COREas well. This behaviour is implemented separately inmedia-sessionandwireplumber, with thewireplumberimplementation in Lua via an embedded Lua vm. In all known setups,wireplumberis in use, and there is no known way to change its behaviour and set permissions differently without replacing the Lua script. Also, since PipeWire relies on these permissions to work, reducing them is not possible.Currently, the only other sandboxed use case is flatpak, which is not aware of PipeWire and blindly exposes the bare PulseAudio socket to the container (behaves like
DirectPulse). This socket is backed by thepipewire-pulsecompatibility daemon, which obtains client pid via theSO_PEERCREDoption. The PipeWire daemon,pipewire-pulsedaemon and the session manager daemon then separately performs the/.flatpak-infohack described in #21. Under such use case, since the client has no direct access to PipeWire, insecure parts of the protocol are obscured bypipewire-pulsesimply not implementing them, and thus hiding the flaws described above.Hakurei does not rely on the
/.flatpak-infohack. Instead, a socket is sets up viaSecurityContext. Apipewire-pulseserver connected through it achieves the same permissions as flatpak does via the/.flatpak-infohack and is maintained for the life of the container.As of this release, upstream has not responded to the ticket regarding these flaws, and it is highly unlikely that a fix is possible without breaking the entire protocol.
Fixes
- Implement all reachable events in
internal/pipewire. - Treat unknown opcodes as fatal in
internal/pipewire. - Treat invalid proxy acknowledgement as fatal in
internal/pipewire. - Correctly handle
nilvalues in POD format ininternal/pipewire.
Enhancements
- Package
internal/pipewirenow handles directedCore::Errorevents as part of the exported methods. - The error string for an unsupported type error is used as the error message directly, which cleans up the resulting output.
Internal
- Distribution tarballs are now built using newer versions of compiler and libraries.
- Implement local and remote object destruction in
internal/pipewire. - Move
Coremethods under theCoretype ininternal/pipewire. - Synchronise stubbed wait4 loop after call to notify in
container. - Shim now supports an optional private working directory.
Full Changelog: v0.3.2...v0.3.3
Downloads
- Implement all reachable events in
-
v0.3.2
StableAll checks were successfulRelease / Create release (push) Successful in 50sTest / Create distribution (push) Successful in 44sTest / Sandbox (push) Successful in 2m34sTest / Hakurei (push) Successful in 3m37sTest / Sandbox (race detector) (push) Successful in 4m37sTest / Hpkg (push) Successful in 5m10sTest / Hakurei (race detector) (push) Successful in 5m33sTest / Flake checks (push) Successful in 2m9sreleased this
2025-12-09 08:12:52 +09:00 | 907 commits to master since this releaseSecurity
This release introduces support for PipeWire
SecurityContext. It is highly recommended to upgrade to this release as soon as possible.Legacy flatpak-like PulseAudio behaviour is now disabled by default and produces an error message. To make PulseAudio available in the container, use the
hstfilesystem type"daemon"and point it topipewire-pulsewithin the container. An example of this can be found in the NixOS module.Fixes
- Package
lddcancelslddprocess on decoding error.
Enhancements
- Package
lddchecks for absolute pathname. - Output of the
cmd/hakureisub-commandshowis reordered to improve readability. - Container init now supports spawning daemon processes.
- PipeWire
SecurityContextis now supported and can be enabled via thehst.EPipeWireenablement bit. - Container daemons are exposed via the
hstfilesystem types.
Internal
- Move multiple packages to internal. Wrappers are maintained until
v0.4.0. - Implement PipeWire protocol native at
internal/pipewire. - Package
lddnow decodes from anio.Readerstream. - Package
containernow comes with a testable example. - Releases are now built using clang.
- Error handling for
libwayland-clientis significantly improved. - Container ops are now able to access
wait4loop state.
Full Changelog: v0.3.1...v0.3.2
Downloads
- Package
-
v0.3.1
StableAll checks were successfulTest / Create distribution (push) Successful in 45sRelease / Create release (push) Successful in 53sTest / Sandbox (push) Successful in 2m33sTest / Hakurei (push) Successful in 3m33sTest / Sandbox (race detector) (push) Successful in 4m26sTest / Hpkg (push) Successful in 4m32sTest / Hakurei (race detector) (push) Successful in 5m25sTest / Flake checks (push) Successful in 1m30sreleased this
2025-11-12 00:53:14 +09:00 | 1039 commits to master since this releaseFixes
- Format group lookup error message correctly.
- Reject impossible user-supplied fd numbers.
- Close initial process extra files on termination, which also keeps them alive until then.
- Close
container/initsetup pipe before fork/exec of initial process.
Enhancements
- Expose current instance identifier via the
--identifier-fdflag. - Set FD_CLOEXEC on files left open by the parent.
Internal
- Separate seccomp numbers from syscall numbers to prevent inadvertent use of PNRs.
Full Changelog: v0.3.0...v0.3.1
Downloads