Skip to content

Repository files navigation

DeskOS

Managed Linux workstations, built like infrastructure.

ci vm-bootcheck release license

DeskOS is an open workstation artifact factory. An organization describes its workstation as declarative resources (applications, desktop settings, branding, boot appearance) and DeskOS compiles them into a bootable container image for CentOS Stream 10 or RHEL 10, from which QCOW2 disks and installer ISOs are built.

A workstation is compiled from organizational intent.

How it works

DeskOS flow: organizational intent as Workstation and Profiles in layers, deskosctl validates, composes, plans and renders a deterministic build context, podman builds a bootc image per platform, CentOS Stream 10 published to quay.io and RHEL 10 built privately, then bootc-image-builder makes QCOW2 disks and installer ISOs

A Workstation names a platform and the profiles it is made of:

apiVersion: core.deskos.org/v1alpha1
kind: Workstation
metadata:
  name: example-devops-centos10
spec:
  platformRef: centos-stream-10
  profiles:
    - deskos-core        # foundation, shipped by DeskOS
    - example-baseline   # organization
    - example-devops     # role

deskosctl plan shows the composed workstation before anything is built, and deskosctl render writes a deterministic build context: the same inputs always give the same bytes. Every resource kind, with an example, is in docs/resources.md.

Composition

DeskOS composition: layers foundation, organization, role and workstation with explicit precedence; set, keyed and scalar composition classes; example where the organization's 5m screen blank overrides Core's 10m; the Plan keeps the provenance of every value

Profiles sit at explicit layers, foundation < organization < role < workstation, so an organization overrides DeskOS Core on purpose, never by file order. Here the organization shortens Core's screen blank from 10m to 5m:

apiVersion: desktop.deskos.org/v1alpha1
kind: GnomeProfile
metadata:
  name: example-desktop      # included by example-baseline (organization)
spec:
  defaults:
    session:
      idle:
        blankAfter: 5m       # wins over Core's 10m
    dock:
      position: bottom
  • Sets (packages, units) are unioned.
  • Scalars (GNOME settings) take the highest layer; two different values at the same layer are an error.
  • Keyed definitions (repositories, Flatpaks, binaries) must agree.

Every value in the plan keeps its provenance: the resource, layer and file it came from.

Get DeskOS

DeskOS Core for CentOS Stream 10 is published as a bootable container image; it is the image that passed the boot and session checks:

sudo podman pull quay.io/deskos/deskos-core:latest

Downloadable disks are not published yet. Make a QCOW2 or an installer ISO from the image with bootc-image-builder, as described in docs/install.md.

Important

RHEL 10 images are never published. Organizations with RHEL subscriptions build them privately and keep them inside the organization; see docs/install.md.

What DeskOS is not

  • Not a distribution with editions. Organizations compose their own workstations from DeskOS Core, their baseline and their roles.
  • Not configuration management. DeskOS owns the image, not the running machine; Ansible, Satellite, MDM and EDR keep managing endpoints.
  • Not a developer environment manager. Personal tooling (Homebrew, mise, dotfiles, Toolbox contents) stays outside the managed baseline.

Status

Note

Experimental. The resource APIs are v1alpha1 and will change.

CentOS Stream 10 RHEL 10
Compose and render deterministic deterministic
Image build, bootc container lint CI entitled factory host
Boot to GNOME, session checks CI (vm-bootcheck) factory host (deskos/rhel10 status)
Published image quay.io/deskos/deskos-core never
GNOME (pinned base) Shell 49.5, mutter 49.4, schemas 47.1 Shell 49.4, mutter 49.4, schemas 47.1 (RHEL 10.2)

Details: validation status.

Documentation

Installing DeskOS QCOW2 and ISO from the published image; private RHEL 10 builds
Resources every resource kind with an example; composition; software and GNOME model
Architecture design principles, compiler pipeline, validation status
Development building deskosctl and the image, tests, releases
ADRs · Roadmap · Research notes decisions, milestones, upstream facts

License

Code: Apache License 2.0. DeskOS artwork (resources/assets/deskos/, docs/images/): CC BY-SA 4.0; see PROVENANCE.md.

About

A declarative compiler for building organizational Linux workstation images from intent.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages