Skip to main content

index

![]

TunaOS​

Cloud-native, immutable desktop Linux images​

One desktop experience with bootc across Enterprise Linux and community distributions


License GitHub Stars Issues Adoption evidence Discord

🎃 Hacktoberfest 2026: Join us! Is this your first open-source PR? See our good first issues. You can also join the office hours for maintainers in October on Matrix.

About TunaOS​

TunaOS builds bootc-based desktop operating systems with atomic updates and straightforward rollbacks. Choose an Enterprise Linux base for long-term stability or an alternative distribution for a faster release cadence. Both choices use the same image-based management model.

Visit tunaos.org or read the launch announcement.

  • Modern Desktops: GNOME, KDE Plasma, COSMIC, Niri, and XFCE — equal first-class options across distribution bases
  • Up-to-Date Desktop Stack: Fresh desktop features and updates backported to Enterprise and community bases
  • Homebrew: Baked into the image — all your CLI apps and fonts are a brew command away
  • Flathub by Default: Full Flathub access out of the box — get any Flatpak available on the net
  • HWE and NVIDIA Options: Hardware Enablement kernels and NVIDIA drivers + CUDA as image tags

Choose your image​

VariantBase OSRegistry PathDesktopsArchitectures
🐠 YellowfinAlmaLinux Kitten 10ghcr.io/tuna-os/yellowfinGNOME (x86_64 only, see note), KDE, COSMIC, Niri, XFCEx86_64, x86_64/v2, arm64
🐟 AlbacoreAlmaLinux 10 (RHEL 10)ghcr.io/tuna-os/albacoreGNOME (x86_64 only, see note), KDE, COSMIC, Niri, XFCEx86_64, x86_64/v2, arm64
🍣 SkipjackCentOS Stream 10ghcr.io/tuna-os/skipjackGNOME (x86_64 only, see note), KDE, COSMIC, Niri, XFCEx86_64, arm64
🎣 BonitoFedora 44ghcr.io/tuna-os/bonitoGNOME, KDE, COSMIC, Niri, XFCEx86_64, arm64
🐦 HummingbirdFedora Hummingbird (experimental)ghcr.io/tuna-os/hummingbirdBase, GNOME, COSMICx86_64 (see note)
🎏 WahooFedora ELN — EL11 preview (experimental, no codecs)ghcr.io/tuna-os/wahooBase, GNOME, KDE, COSMICx86_64, arm64
🔒 RedfinRed Hat Enterprise Linux 10Local-Build OnlyGNOME, KDE, COSMIC, Niri, XFCEx86_64, arm64
🪸 GrouperUbuntu 26.04ghcr.io/tuna-os/grouperGNOME, KDE, COSMIC, XFCEx86_64
🤖 GurnardUbuntu 24.04 (Noble Numbat, experimental)ghcr.io/tuna-os/gurnardBase, Pantheonx86_64, arm64
🚀 MarlinArch Linux (Rolling)ghcr.io/tuna-os/marlinGNOME, KDE, COSMIC, Niri, Roost, XFCEx86_64
🐡 FlounderDebian 13 (Trixie)ghcr.io/tuna-os/flounderKDE, XFCEx86_64
☢️ Flounder SidDebian Sid (Unstable)ghcr.io/tuna-os/flounder:*-sidGNOME, KDE, XFCEx86_64
🐉 Bonito RawhideFedora Rawhideghcr.io/tuna-os/bonito:*-rawhideGNOME, KDE, COSMIC, Niri, XFCEx86_64, arm64
⛵ SailfinopenSUSE Tumbleweedghcr.io/tuna-os/sailfinGNOME, KDE, COSMIC, Niri, XFCEx86_64
🌈 GuppyGentoo Linuxghcr.io/tuna-os/guppyKDE, XFCEx86_64
🏔️ Tromsøfreedesktop-sdk (BuildStream), built in tuna-os/tromsoghcr.io/tuna-os/tromsoKDEx86_64
🐭 XFCE Linuxfreedesktop-sdk (BuildStream), built in tuna-os/xfce-linuxghcr.io/tuna-os/xfce-linuxXFCEx86_64

GNOME on the EL10 variants comes from the tunaOS GNOME 50 package tier. GitHub Actions builds this tier without COPR. The tier supports only x86_64 today, so the gnome and gnome-hwe images have only x86_64 support. The gnome-asahi image is off until the tier adds aarch64 (tunaos-packages#673). Every GNOME image uses GNOME 50 or newer. The project does not promote older versions.

Hummingbird is x86_64 only. This includes its base. The aarch64 package snapshot has no xfsprogs, and the base stage needs it. No hummingbird arm64 image builds today. The architecture is absent, not thinner. See docs/HUMMINGBIRD.md.

Tags are <desktop>[-hardware] — e.g. yellowfin:gnome-hwe, albacore:kde-nvidia. Full tag reference: docs/IMAGE-TAGS.md. Hardware requirements and ARM laptop status: docs/HARDWARE.md.

[!NOTE] Redfin (RHEL 10) is local-build only due to EULA restrictions. To build it locally, run just build redfin <desktop> (see rhel-setup.md).

Live build matrix​

The configured matrix now has 136 image cells, including one Roost cell for amd64 Marlin. The status snapshot below is from before that addition and does not prove image publication or a successful boot. Roost adds no ISO or LUKS cells.

Each cell reports the newest conclusive main-branch run that asserted it, so a flavor-filtered rebuild does not blank the cells it never scheduled. This table omits cancelled runs. Latest run names the variant's newest conclusive run. A green cell has a successful promotion to the published tag. Failed means that a job ran and failed. Not reached means that no recent run asserted the cell, usually because an earlier stage stopped it.

VariantGreen image cellsLatest runFailingNot reached
🐠 yellowfin18/18❌ 2026-10-04——
🐟 albacore18/18✅ 2026-10-04——
🍣 skipjack16/16✅ 2026-10-04——
🎏 wahoo4/4❌ 2026-09-27——
🎣 bonito16/16✅ 2026-10-03——
🐦 hummingbird1/3❌ 2026-10-04gnomecosmic
⛵ sailfin6/6❌ 2026-10-03——
🌈 guppy3/3✅ 2026-10-04——
🐉 bonito-rawhide14/14✅ 2026-10-03——
🤖 gurnard2/2✅ 2026-10-04——
🪸 grouper7/7✅ 2026-10-03——
🚀 marlin16/17✅ 2026-10-03—roost
🐡 flounder5/5✅ 2026-10-03——
☢️ flounder-sid7/7❌ 2026-10-04——

Sibling images from separate repositories. These TunaOS-family bootc images use BuildStream on freedesktop-sdk. They do not use packages from a distribution. Thus, the matrix above has no cells for them, and green-criteria.yml does not score them. Each repository runs its own checks for the build, live ISO, plain installation, and LUKS installation. The status shows the latest complete build from the main branch of that repository.

ImageBuilt byDesktopLatest main build
🏔️ ghcr.io/tuna-os/tromsotromsoKDE✅ 2026-10-04
🐭 ghcr.io/tuna-os/xfce-linuxxfce-linuxXFCE✅ 2026-10-04

Built 133/136 · composite green 124/136 (97% built) — The remainder has 1 failure and 2 never reached (stale: 4); no job asserted the latter. We show the two values separately. A cell with no job has no test, but it can still work.

The score for composite green uses published cells, per docs/MATRIX-STATUS.md. .github/green-criteria.yml provides the score. Today, these criteria prevent publication: boots, builds, desktop, no_silent_omissions. A cell must satisfy each criterion.

Skipped cells and cells with no test do not count as green. The full per-axis board is docs/MATRIX-STATUS.md. This snapshot of CI shows one point in time. It does not promise a support tier.

Get started​

For local media builds, signature and SBOM checks, registry authentication, and pull help, read docs/INSTALL.md.

Contributing​

Contributions welcome! See CONTRIBUTING.md for development environment setup, the build workflow and pre-commit checklist, pull request guidelines, and an architecture overview.

Community and support​

Related communities: Universal Blue Discord · AlmaLinux Atomic SIG

Documentation​

Start here:

  • User Guide — image choice, installation, updates, rollback, apps, and encryption
  • Developer Guide — the complete pipeline with architecture diagrams
  • Installation — media builds, verification, and registry access
  • Hardware Support — requirements and ARM laptop status
  • Matrix Status — quality status for each variant×desktop cell
  • Roadmap — project direction and feature status
  • Vision — project philosophy

The full index of every guide, policy, and project plan is at docs/README.md.


Tuna_OS_Logo

Made by James in his free time

Powered by Bootc

Bootc_Logo

This repository and many tuna-os repositories use Hive for development and maintenance. Hive is a development platform for AI agents. It uses KubeStellar for orchestration.


Inspired by Bluefin and the Universal Blue Community

Licensed under Apache 2.0

Contribute compute — no code needed​

No time to write code? You can still push this project's backlog forward. A TunaOS AI-agent hive works on this repository. Lend the hive your AI subscription or API tokens, and your machine runs tasks from this project's backlog.