Dudley is Josh's personal Project Bluefin variant: a bootc operating-system image that keeps Bluefin's desktop and userland contract while adding Dudley-specific defaults, tools, and release streams.
Upstream foundation: Dudley is built on Project Bluefin and its documentation, published with Project Bluefin Actions, and grounded in the Universal Blue and bootc ecosystems.
Stable is the general daily-driver stream.
sudo bootc switch ghcr.io/joshyorko/dudley-os:stable --enforce-container-sigpolicyNVIDIA is the daily-driver stream for systems that need Project Bluefin's NVIDIA runtime.
sudo bootc switch ghcr.io/joshyorko/dudley-os:nvidia --enforce-container-sigpolicyDakota is experimental. It publishes matching dakota and dakota-nvidia images for the offline installer and still requires boot, update, and rollback qualification, plus a completed installer test, before daily-driver use.
sudo bootc switch ghcr.io/joshyorko/dudley-os:dakota --enforce-container-sigpolicyInspect the active deployment, stage an update, and reboot into it:
bootc status
sudo bootc upgrade
sudo systemctl rebootIf the new deployment is unsuitable, apply the previous deployment:
sudo bootc rollback --applySee the operator runbook for stream switching, VM workflows, and image verification. Project Bluefin's documentation is the source for inherited upstream behavior.
Stable and NVIDIA add the Dudley product layer while retaining their Project Bluefin bases:
- shared DSB defaults and Dudley payload from
dsb-common - Dudley wallpapers, runtime Brewfiles, Flatpak declarations, VS Code payload, hooks, and recipes
- DX-style container, virtualization, and developer runtime additions
- Google Chrome installed into the image
- Dudley identity, metadata, validation, publishing, and local product glue
Dakota uses an allowlisted, distribution-neutral overlay. It includes both
Podman and the real Docker Engine with Compose and Buildx, uses Ghostty instead
of Ptyxis, and bakes native Google Chrome into the image from Google's
signature-verified RPM payload without adding RPM or DNF to the final image. Run
ujust dudley-dakota once to initialize only Dudley's curated Homebrew profile,
install the Dudley IDE bundle
(including VS Code Insiders), and remove the obsolete Podman-backed
DOCKER_HOST redirect. Then run ujust dx-group and start a new login session
to enable non-root Docker access. Dakota preserves the terminal and Zsh
configuration supplied by its base/user setup.
Run ujust dudley tools to install every formula and cask currently published
by joshyorko/tools.
The Fedora/RPM/DNF and libvirt host payload remain excluded.
Last updated: 2026-08-03
| Layer | Responsibility |
|---|---|
| Project Bluefin | Base images, desktop and userland contract, bootc integration, and shared build/publish actions |
dsb-common |
Shared DSB defaults plus Dudley wallpapers, Brewfiles, Flatpak declarations, VS Code payload, hooks, and recipes |
dudley-os |
Stream assembly, DX-style runtime additions, Chrome image install, final metadata, validation, publishing, and local product glue |
Stable and NVIDIA are assembled in this order:
- Project Bluefin stream base
dsb-common/shareddsb-common/dudley- local
dudley-osassembly
Dakota uses the same ownership boundaries but applies only its allowlisted file overlay to the Project Bluefin Dakota base. Detailed change-placement and stream-input guidance lives in Maintenance and ownership.
Renovate pins image and action dependencies by digest. Project Bluefin Actions handles runner setup, preflight, image push, keyless signing, and GitHub provenance. Pushes to main publish Stable, NVIDIA, Dakota, and Dakota NVIDIA. CI SBOM publication is disabled.
Verify the published Stable image against this repository's GitHub Actions OIDC identity:
cosign verify \
--certificate-identity-regexp "https://github.com/joshyorko/dudley-os/" \
--certificate-oidc-issuer "https://token.actions.githubusercontent.com" \
ghcr.io/joshyorko/dudley-os:stableRun the repository checks before opening a pull request:
npm ci
just test
npm run test:cards
npm run cards:checkBuild and exercise a local VM when an image-level change needs runtime proof:
just build
just build-qcow2
just run-vm-qcow2Build the experimental Dakota container image locally:
just build-dakotaThe matching offline installer is owned by
joshyorko/dudley-iso and is built
there with just iso-sd-boot dudley. Dakota still requires boot, install,
update, and rollback qualification before daily-driver use.
| Path | Purpose |
|---|---|
Containerfile |
Stable and NVIDIA final image assembly |
Containerfile.dakota |
Experimental Dakota allowlisted overlay |
build/ |
Build-time product assembly and validation |
custom/ |
Dudley-only product files and ujust wiring |
.github/workflows/ |
Stream validation and publication |
tests/ |
Image, workflow, and documentation contracts |
docs/ |
Operator, maintenance, and historical detail |
Supporting documents:
- Project Bluefin provides Dudley's base images and inherited desktop experience.
- Project Bluefin documentation documents the upstream operating model.
- Project Bluefin Actions provides Dudley's shared build, publish, signing, and provenance actions.
dsb-commonowns reusable DSB and Dudley payload.- Universal Blue is the broader image ecosystem.
- bootc provides the transactional image-based operating-system model.