Skip to content

Design principle: laptops are fleet members via bootc — not k8s nodes #32

Description

@castrojo

The insight

When you hear "cloud-native desktop with a home server," the instinct is: laptops should be k8s nodes. Run a kubelet on every machine, join them to the cluster, schedule workloads everywhere.

bluespeed deliberately does the opposite — and this is a feature.

Why laptops are NOT cluster nodes in bluespeed

The laptop is the product, not the factory. The cluster (ghost + nodes) is the factory. The laptop boots the output so you don't have to manage that stuff.

What this means for the stack

  • The cluster runs the build infrastructure: Argo Workflows, Zot registry, observability, KubeStellar dashboard - we keep this a standard CNCF stack, well documented and justfile driven for all the manual knobs.
  • The laptops run the output: a custom bootc image built by the cluster
  • Data donation on laptops: run ujust report runs some otel stuff, snags logs, posts data as a github gist
  • MDM: handled at the OS image level (bootc). Deep MDM (enrollment, policy, compliance) is a solved problem — bluespeed will plug into an existing MDM solution rather than build one.

What to document

Update README.md Design Principles section with:

6. Clients consume images, they don't run cluster workloads. Contributor laptops are managed via bootc image updates — not enrolled as k8s nodes. The cluster builds the images; the laptops boot them. This eliminates per-client agent overhead, enables atomic rollbacks, and keeps cluster complexity constant regardless of how many contributors join the fleet.

Update docs/CONTRIBUTING.md with a section explaining:

  • Why your laptop isn't a k8s node (and why that's better)
  • How bootc upgrade handles your OS updates
  • How to opt in to sending metrics via the OTel agent (just setup-otel-agent HOST=localhost)

Acceptance criteria

  • README Design Principles updated with principle Custom image Management #6
  • CONTRIBUTING.md has a "Your laptop in the fleet" section
  • The Ghost: Bluespeed dashboard hierarchy makes this clear: Ghost (cluster) → Exo nodes (VMs/servers) vs Clients (laptops via bootc)

Metadata

Metadata

Assignees

No one assigned

    Labels

    1-triageNew work awaiting human triage.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions