Documents
Bluefin Image Naming Conventions
Bluefin Image Naming Conventions
Type
Topic
Status
Published
Created
Mar 21, 2026
Updated
Mar 21, 2026
Created by
Dosu Bot
Updated by
Dosu Bot

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 NameDescriptionPackage CountUse Case
bluefinStandard desktop variant~93 base packagesGeneral desktop users
bluefin-dxDeveloper Experience variant~67 additional packagesSoftware 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:


Stream Tags (Release Channels)#

Fedora Streams#

Bluefin maintains four primary release streams aligned with Fedora release management:

Stream TagFedora VersionAkmods FlavorTarget AudienceStability Profile
gts42coreos-stableDefault/general usersMaximum (one version behind)
stable43coreos-stableEnthusiastsBalanced
latest43main (unpinned kernel)TestersCutting-edge
beta44mainEarly adoptersExperimental

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 TagBaseKernelDesktopProduction Status
ltsCentOS Stream 10Stock 6.12GNOME (current stable)Production
lts-hweCentOS Stream 10CoreOS + akmodsGNOME (current stable)Production (default for new users)
lts-testingCentOS Stream 10Stock 6.12GNOME 49Testing
lts-hwe-testingCentOS Stream 10CoreOSGNOME 49Testing
lts-testing-50CentOS Stream 10Stock 6.12GNOME 50Development
lts-hwe-testing-50CentOS Stream 10CoreOSGNOME 50Development

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:

FlavorSuffix AppliedDriver ConfigurationExample Image Name
mainNoneNo NVIDIA driversbluefin:stable
nvidia-open-nvidia-openNVIDIA open-source driver embedded at build timebluefin: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:

  1. bluefin (main)
  2. bluefin-nvidia-open
  3. bluefin-dx (main)
  4. 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 build
  • stable-daily-43.20260228 — Date-versioned daily tag
  • stable-daily-43 — Major version convenience tag

Promoted builds (Tuesdays or workflow_dispatch):

  • stable — Promoted stable tag
  • stable-43.20260228 — Date-versioned stable tag
  • stable-43 — Major version stable tag
  • gts, 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 ReferenceMeaning
ghcr.io/ublue-os/bluefin:gtsStandard variant, GTS stream (F42)
ghcr.io/ublue-os/bluefin:stable-nvidia-openStandard variant with NVIDIA, stable stream (F43)
ghcr.io/ublue-os/bluefin-dx:latestDeveloper variant, cutting-edge stream (F43)
ghcr.io/ublue-os/bluefin:stable-43.20260228Date-pinned standard variant
ghcr.io/ublue-os/bluefin-dx-nvidia-open:gts-42.20260301.1DX with NVIDIA, GTS stream, date-pinned with hotfix
ghcr.io/ublue-os/bluefin:lts-hweLTS with hardware enablement kernel
ghcr.io/ublue-os/bluefin-dx:lts-testing-50LTS DX testing GNOME 50

Suffix and Tag Reference#

Suffix/PatternLocationMeaning
-dxBase nameDeveloper Experience — adds ~67 dev packages
-nvidia-openStream suffixNVIDIA open driver embedded at build time
-hweStream tagHardware enablement — CoreOS kernel + akmods
-testingStream tagTesting/staging build, not production-ready
-50Stream tagGNOME 50 testing variant (LTS only)
.<YYYYMMDD>Version tagDate-pinned version for reproducible deployments
.[point]Version tagPoint release for same-day hotfixes
-dailyStream qualifierDaily 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#

FilePurposeURL
JustfileImage naming and tag generation logicView
.github/workflows/reusable-build.ymlBuild matrix definition and tagging workflowView
.github/workflows/build-image-gts.ymlGTS stream workflowView
.github/workflows/build-image-stable.ymlStable stream workflowView
.github/workflows/build-image-latest-main.ymlLatest stream workflowView
.github/workflows/build-image-beta.ymlBeta stream workflowView
image-versions.ymlVersion configurationView
ContainerfileImage build definitionView


See Also#