Dakota
Dakota (Dakotaraptor steini) is Bluefin built on GNOME OS, assembled entirely from source with Apache BuildStream and published as a bootc image. It eschews the traditional Linux distribution model — there are no RPMs — and is designed to deliver software directly from upstream sources.
Dakota is in alpha. Filing issues is the whole point — every user running Dakota is part of a structured feedback loop back into upstream GNOME, freedesktop, and the kernel.
Download and install
Bluefin Dakotaraptor
Dakota is in Alpha — take appropriate precautions.
You cannot rebase to Dakota from another image — if you're not on Dakota already, you need to reinstall from the ISO.
Each image is signed with cosign keyless signing via GitHub Actions OIDC. Verify with:
cosign verify ghcr.io/projectbluefin/dakota:latest \
--certificate-identity-regexp="https://github.com/projectbluefin/dakota/.github/workflows/build.yml" \
--certificate-oidc-issuer=https://token.actions.githubusercontent.com
Image streams
Dakota uses the freedesktop-sdk version as its base version (e.g. 25.08.11 is the 11th release of the August 2025 major update).
| Tag | Stream | What it is |
|---|---|---|
:stable | Stable | GNOME 50 — production. Mon/Wed/Fri automated promotion from :testing. |
:testing | Dev | GNOME 50 — daily builds from the testing branch. Boot-check gated. |
:next | Rolling | GNOME master — the bleeding edge. Tracks gnome-build-meta master daily. |
:btw | Rolling | Alias for :next. |
# Switch to the rolling stream
sudo bootc switch ghcr.io/projectbluefin/dakota:next
Gaming streams
The game mode images add the Open Gaming Collective kernel (sched_ext, ntsync), Steam with 32-bit compatibility libraries and controller udev rules, gamescope and the Steam Big Picture gamescope session, GameMode / MangoHud / vkBasalt, InputPlumber, and first-boot Flathub installs of Lutris, Heroic, Bottles, ProtonPlus, Protontricks, and GOverlay. The dakota:btw alias is also offered for the gaming kernel stream.
| Image | Stream | Command |
|---|---|---|
| Gaming | Stable | sudo bootc switch ghcr.io/projectbluefin/dakota-gaming:stable |
| Gaming | Testing | sudo bootc switch ghcr.io/projectbluefin/dakota-gaming:testing |
| NVIDIA Gaming | Stable | sudo bootc switch ghcr.io/projectbluefin/dakota-nvidia-gaming:stable |
| NVIDIA Gaming | Testing | sudo bootc switch ghcr.io/projectbluefin/dakota-nvidia-gaming:testing |
The feedback loop
When something breaks on your hardware, three commands flow the evidence back upstream:
| Command | What it does |
|---|---|
ujust report | Captures your system state and opens a pre-filled issue. |
ujust confirm <issue> | Tells the team your hardware hits the same bug — adds a hardware fingerprint, no duplicate filing. |
ujust verify <issue> | After a fix ships in a nightly, confirms it works on your machine. |
No telemetry, no phone-home. Every report is reviewed by you before it leaves your machine, lives in a gist you own, and can be deleted anytime. When three users independently run ujust verify on a fix, that issue closes with real confidence. See the full feedback loop design.
Under the hood
- Boot:
systemd-boot, UKIs, memory-safe defaults (sudo-rs, uutils-coreutils), Ghostty as the terminal. - Swap: zswap backed by a disk swapfile at
/var/swap/swapfile(sizedmin(RAM / 2, 8 GiB)), instead of GNOME OS's zram device. Kernel arguments live in/usr/lib/bootc/kargs.d/20-zswap.tomlsobootcapplies them on image switches and upgrades:zswap.enabled=1,zswap.compressor=zstd,zswap.max_pool_percent=20,zswap.shrinker_enabled=1,vm.swappiness=100. - Architecture: the build is defined declaratively in BuildStream elements; see oci-assembly.md and patches.md in the dakota repo.
Current versions
sudo bootc switch --enforce-container-sigpolicy "ghcr.io/projectbluefin/$(jq -r '."image-name"' /usr/share/ublue-os/image-info.json):latest-20260823"
sudo bootc switch --enforce-container-sigpolicy "ghcr.io/projectbluefin/$(jq -r '."image-name"' /usr/share/ublue-os/image-info.json):latest-20260613"
sudo bootc switch --enforce-container-sigpolicy "ghcr.io/projectbluefin/$(jq -r '."image-name"' /usr/share/ublue-os/image-info.json):latest-20260612"
sudo bootc switch --enforce-container-sigpolicy "ghcr.io/projectbluefin/$(jq -r '."image-name"' /usr/share/ublue-os/image-info.json):latest-20260611"
sudo bootc switch --enforce-container-sigpolicy "ghcr.io/projectbluefin/$(jq -r '."image-name"' /usr/share/ublue-os/image-info.json):latest-20260610"
sudo bootc switch --enforce-container-sigpolicy "ghcr.io/projectbluefin/$(jq -r '."image-name"' /usr/share/ublue-os/image-info.json):latest-20260609"
sudo bootc switch --enforce-container-sigpolicy "ghcr.io/projectbluefin/$(jq -r '."image-name"' /usr/share/ublue-os/image-info.json):latest-20260608"
sudo bootc switch --enforce-container-sigpolicy "ghcr.io/projectbluefin/$(jq -r '."image-name"' /usr/share/ublue-os/image-info.json):latest-20260530"
sudo bootc switch --enforce-container-sigpolicy "ghcr.io/projectbluefin/$(jq -r '."image-name"' /usr/share/ublue-os/image-info.json):latest-20260529"
sudo bootc switch --enforce-container-sigpolicy "ghcr.io/projectbluefin/$(jq -r '."image-name"' /usr/share/ublue-os/image-info.json):latest-20260528"
sudo bootc switch --enforce-container-sigpolicy "ghcr.io/projectbluefin/$(jq -r '."image-name"' /usr/share/ublue-os/image-info.json):latest-20260527"
sudo bootc switch --enforce-container-sigpolicy "ghcr.io/projectbluefin/$(jq -r '."image-name"' /usr/share/ublue-os/image-info.json):latest-20260526"
Final Step: Reboot
- After running one of the per-release rebase commands above, reboot to activate the deployment:sudo systemctl reboot
Known gaps
- The installation path is still being worked on.
- Upgrades and rollbacks need more hardening.
See the open issues for where things stand. ISO-specific issues go to projectbluefin/dakota-iso.
Further reading
- projectbluefin/dakota — README, image streams, contributor workflow in AGENTS.md
- Repo docs: build, CI, workflow, feedback loop
- Blog: Dakota Alpha 1 · Gaming Mode and Dakota Alpha 5
- GNOME OS · BuildStream · freedesktop-sdk