Bluefin Image Naming Conventions#
Lead Section#
Bluefin Image Naming Conventions define the standardized naming patterns for Bluefin OS container images published to the GitHub Container Registry at ghcr.io/ublue-os/. The naming system combines base image names (variant identifiers), stream tags (release channels), and suffixes (hardware/driver variants) to create a structured hierarchy that enables precise image selection and fleet deployment.
The current naming convention emerged from a transition to stream-based naming during the F42 cycle, replacing earlier descriptive patterns. Each image name follows the format ghcr.io/ublue-os/<base-name>:<stream>[-suffix] with optional date-pinned versions for reproducible deployments. The build system produces four image variants per stream through a 2×2 matrix combining base names (bluefin, bluefin-dx) with GPU flavors (main, nvidia-open).
Understanding these conventions is essential for system administrators managing bootc-based deployments, contributors maintaining build pipelines, and users selecting the appropriate image variant for their hardware and stability requirements.
Base Image Names (Variants)#
Bluefin publishes two primary base image names that represent distinct package configurations:
Fedora-Based Variants#
| Base Name | Description | Package Count | Use Case |
|---|---|---|---|
bluefin | Standard desktop variant | ~93 base packages | General desktop users |
bluefin-dx | Developer Experience variant | ~67 additional packages | Software developers, DevOps engineers |
The bluefin-dx variant includes development tools such as Docker, Podman, Incus, QEMU, libvirt, VSCode, and container development environments not present in the standard variant.
CentOS Stream-Based LTS#
Both base names also exist as Bluefin LTS variants built on CentOS Stream 10:
| Base Name | Stream Tag | Description |
|---|---|---|
bluefin | lts | Standard LTS variant with stock CentOS 6.12 kernel and XFS filesystem |
bluefin-dx | lts | Developer Experience LTS variant |
Stream Tags (Release Channels)#
Fedora Streams#
Bluefin maintains four primary release streams aligned with Fedora release management:
| Stream Tag | Fedora Version | Akmods Flavor | Target Audience | Stability Profile |
|---|---|---|---|---|
gts | 42 | coreos-stable | Default/general users | Maximum (one version behind) |
stable | 43 | coreos-stable | Enthusiasts | Balanced |
latest | 43 | main (unpinned kernel) | Testers | Cutting-edge |
beta | 44 | main | Early adopters | Experimental |
GTS stands for "Good Time Sharing" and represents the most conservative track, always tracking the previous stable Fedora version for maximum stability.
Stream Usage Examples#
# Default recommended stream (maximum stability)
ghcr.io/ublue-os/bluefin:gts
# Current stable Fedora
ghcr.io/ublue-os/bluefin:stable
# Developer variant on stable stream
ghcr.io/ublue-os/bluefin-dx:stable
# Cutting-edge with latest kernel
ghcr.io/ublue-os/bluefin:latest
# Preview next Fedora release
ghcr.io/ublue-os/bluefin:beta
LTS Streams#
Bluefin LTS streams use different tags to distinguish kernel and desktop versions:
| Stream Tag | Base | Kernel | Desktop | Production Status |
|---|---|---|---|---|
lts | CentOS Stream 10 | Stock 6.12 | GNOME (current stable) | Production |
lts-hwe | CentOS Stream 10 | CoreOS + akmods | GNOME (current stable) | Production (default for new users) |
lts-testing | CentOS Stream 10 | Stock 6.12 | GNOME 49 | Testing |
lts-hwe-testing | CentOS Stream 10 | CoreOS | GNOME 49 | Testing |
lts-testing-50 | CentOS Stream 10 | Stock 6.12 | GNOME 50 | Development |
lts-hwe-testing-50 | CentOS Stream 10 | CoreOS | GNOME 50 | Development |
The -hwe suffix indicates Hardware Enablement builds using the CoreOS kernel with akmods support. This naming replaced the earlier "testing" suffix to avoid confusion with testing builds. For backward compatibility, HWE builds continue to be tagged with the legacy "testing" suffix as well.
GPU and Driver Suffixes#
NVIDIA Variants#
Bluefin produces four image variants per release stream: two base names × two GPU flavors. The flavor system appends suffixes to distinguish GPU driver configurations:
| Flavor | Suffix Applied | Driver Configuration | Example Image Name |
|---|---|---|---|
main | None | No NVIDIA drivers | bluefin:stable |
nvidia-open | -nvidia-open | NVIDIA open-source driver embedded at build time | bluefin:stable-nvidia-open |
The proprietary nvidia-closed variant was deprecated in October 2025.
Build Matrix Implementation#
The build workflow defines the matrix:
matrix:
base_name: ["bluefin", "bluefin-dx"]
image_flavor: ["main", "nvidia-open"]
This produces 4 parallel builds per stream:
bluefin(main)bluefin-nvidia-openbluefin-dx(main)bluefin-dx-nvidia-open
The image naming logic in Justfile:
if [[ "{{ flavor }}" =~ main ]]; then
image_name={{ image }}
else
image_name="{{ image }}-{{ flavor }}"
fi
Version and Date Tagging#
Version Format#
Image versions follow the format:
<stream>-<fedora_version>.<YYYYMMDD>[.point]
Components:
<stream>: Stream tag (gts, stable, latest, beta)<fedora_version>: Fedora major version number<YYYYMMDD>: Build date in ISO format[.point]: Optional point release number for same-day hotfixes
Examples:
stable-43.20260228
gts-42.20260301
stable-43.20260228.1 # Point release hotfix
Date-Pinned Deployments#
Date-pinned tags enable reproducible fleet deployments:
# Pin to specific build date
sudo bootc switch ghcr.io/ublue-os/bluefin:stable-43.20260228
# Pin NVIDIA variant to specific date
sudo bootc switch ghcr.io/ublue-os/bluefin-dx-nvidia-open:gts-42.20260315
Daily and Promotion Tags#
The generate-build-tags function creates multiple tag aliases:
Daily builds (stable stream):
stable-daily— Latest daily buildstable-daily-43.20260228— Date-versioned daily tagstable-daily-43— Major version convenience tag
Promoted builds (Tuesdays or workflow_dispatch):
stable— Promoted stable tagstable-43.20260228— Date-versioned stable tagstable-43— Major version stable taggts,gts-42.20260228,gts-42— GTS aliases when appropriate
Akmods Container Naming#
Akmods containers follow a distinct naming pattern:
ghcr.io/ublue-os/akmods-<driver>:<flavor>-<fedora_major>-<kernel_version>
Example:
ghcr.io/ublue-os/akmods-nvidia-open:coreos-stable-43-6.17.12-300.fc43.x86_64
Components:
<driver>: Driver name (e.g.,nvidia-open)<flavor>: Akmods flavor (coreos-stable,main)<fedora_major>: Fedora major version<kernel_version>: Full kernel version string
Complete Naming Structure#
Syntax Specification#
ghcr.io/ublue-os/<base-name>:<stream>[-suffix]
ghcr.io/ublue-os/<base-name>:<stream>-<fedora_version>.<YYYYMMDD>[.point]
Where:
<base-name>∈ {bluefin,bluefin-dx}<stream>∈ {gts,stable,latest,beta,lts,lts-hwe,lts-testing,lts-hwe-testing,lts-testing-50,lts-hwe-testing-50}[-suffix]∈ {ε,-nvidia-open}<fedora_version>: Fedora major version (42, 43, 44, etc.)<YYYYMMDD>: ISO date format[.point]: Optional hotfix number
Full Image Name Examples#
| Image Reference | Meaning |
|---|---|
ghcr.io/ublue-os/bluefin:gts | Standard variant, GTS stream (F42) |
ghcr.io/ublue-os/bluefin:stable-nvidia-open | Standard variant with NVIDIA, stable stream (F43) |
ghcr.io/ublue-os/bluefin-dx:latest | Developer variant, cutting-edge stream (F43) |
ghcr.io/ublue-os/bluefin:stable-43.20260228 | Date-pinned standard variant |
ghcr.io/ublue-os/bluefin-dx-nvidia-open:gts-42.20260301.1 | DX with NVIDIA, GTS stream, date-pinned with hotfix |
ghcr.io/ublue-os/bluefin:lts-hwe | LTS with hardware enablement kernel |
ghcr.io/ublue-os/bluefin-dx:lts-testing-50 | LTS DX testing GNOME 50 |
Suffix and Tag Reference#
| Suffix/Pattern | Location | Meaning |
|---|---|---|
-dx | Base name | Developer Experience — adds ~67 dev packages |
-nvidia-open | Stream suffix | NVIDIA open driver embedded at build time |
-hwe | Stream tag | Hardware enablement — CoreOS kernel + akmods |
-testing | Stream tag | Testing/staging build, not production-ready |
-50 | Stream tag | GNOME 50 testing variant (LTS only) |
.<YYYYMMDD> | Version tag | Date-pinned version for reproducible deployments |
.[point] | Version tag | Point release for same-day hotfixes |
-daily | Stream qualifier | Daily build (not promoted to stable) |
Legacy Naming Patterns#
Historical Changes#
1. Testing → HWE Transition (Bluefin LTS)
The most significant naming change was renaming "testing" to "hwe" (Hardware Enablement) in Bluefin LTS. This refactored build scripts and workflows to use ENABLE_HWE instead of ENABLE_TESTING. For backward compatibility, HWE builds continue to be tagged with the legacy "testing" suffix.
*2. -atomic Naming Scheme (F42 Cycle)
During the F42 cycle, Universal Blue adopted a *-atomic naming scheme for standardization, excluding Silverblue and Kinoite which follow upstream naming. This deprecated unofficial desktop images.
3. Legacy Image Cleanup
Multiple old image names required cleanup from the registry, including the bluefin-gdx package. An eol-rebaser tool was investigated to automate migrations between old and new naming patterns using EOL dates and bootc switch.
System Migration Examples#
Stream Switching#
# Switch to GTS (maximum stability)
sudo bootc switch ghcr.io/ublue-os/bluefin:gts
# Switch to stable stream
sudo bootc switch ghcr.io/ublue-os/bluefin:stable
# Upgrade to Developer Experience variant
sudo bootc switch ghcr.io/ublue-os/bluefin-dx:stable
# Enable NVIDIA support
sudo bootc switch ghcr.io/ublue-os/bluefin:stable-nvidia-open
# LTS with hardware enablement
sudo bootc switch ghcr.io/ublue-os/bluefin:lts-hwe
Date-Pinned Fleet Deployment#
# Pin entire fleet to tested build
sudo bootc switch ghcr.io/ublue-os/bluefin-dx:stable-43.20260228
# Rollback to previous date
sudo bootc switch ghcr.io/ublue-os/bluefin-dx:stable-43.20260215
# Test specific hotfix
sudo bootc switch ghcr.io/ublue-os/bluefin:stable-43.20260228.1
Relevant Code Files#
| File | Purpose | URL |
|---|---|---|
Justfile | Image naming and tag generation logic | View |
.github/workflows/reusable-build.yml | Build matrix definition and tagging workflow | View |
.github/workflows/build-image-gts.yml | GTS stream workflow | View |
.github/workflows/build-image-stable.yml | Stable stream workflow | View |
.github/workflows/build-image-latest-main.yml | Latest stream workflow | View |
.github/workflows/build-image-beta.yml | Beta stream workflow | View |
image-versions.yml | Version configuration | View |
Containerfile | Image build definition | View |
Related Topics#
- Bluefin OS — Main project documentation
- Bluefin DX — Developer Experience variant
- Bluefin LTS — CentOS Stream-based LTS
- Bluefin Administration — Stream management and fleet deployment
- bootc — Image-based Linux container boot technology
- Universal Blue Container Registry — Published image repository
- ublue-os/akmods — Kernel module caching system