Skip to content

Pod Architecture

Standard OCI Containers

This hierarchy shows build inheritance, not deployment requirements. All pods are published to ghcr.io/atrawog/bazzite-ai-pod-*:stable and run anywhere containers are supported.

Inheritance Tree

graph TD
    base[pod-base<br/>~2GB<br/>Fedora 43 + Dev Tools]

    base --> nvidia[pod-nvidia<br/>~3GB<br/>CUDA + cuDNN + TensorRT]
    base --> devops[pod-devops<br/>~4GB<br/>AWS + gcloud + kubectl]
    base --> runner[pod-githubrunner<br/>~3GB<br/>GitHub Actions Runner]

    nvidia --> python[pod-nvidia-python<br/>~6GB<br/>PyTorch ML via pixi]

    python --> jupyter[pod-jupyter<br/>~11GB<br/>JupyterLab Server]
    nvidia --> playwright[pod-playwright<br/>~5GB<br/>Chrome + VNC + Sway]

    style python fill:#4CAF50,color:#fff
    style jupyter fill:#4CAF50,color:#fff
    style devops fill:#4CAF50,color:#fff
    style playwright fill:#4CAF50,color:#fff

Green nodes = Core pods (recommended for most workflows)

Layer Structure

Each pod inherits tools from its parent, adding specialized functionality:

Layer 1: Base Foundation

pod-base (1.7GB) - Clean Fedora 43 with development essentials

  • Build toolchain (gcc, make, cmake, ninja)
  • Language runtimes (Python 3.13, Node.js 23+, Go, Rust)
  • VS Code, Docker CLI, Podman
  • kubectl, Helm, Claude Code
  • Modern shell tools (fzf, ripgrep, bat, eza)

Layer 2: Specializations

From base:

Pod Adds Use Case
nvidia CUDA 13.0, cuDNN, TensorRT Custom GPU setups
devops AWS, gcloud, Firebase, Grafana tools Cloud infrastructure
githubrunner GitHub Actions runner agent CI/CD pipelines

Layer 3: ML/AI

From nvidia:

Pod Adds Use Case
nvidia-python PyTorch, torchvision, torchaudio via pixi ML/AI development
playwright Chrome, Sway, wayvnc, VR packages Browser automation

Layer 4: Interactive

From nvidia-python:

Pod Adds Use Case
jupyter JupyterLab server Interactive notebooks

Image Registry

All pods are published to GitHub Container Registry:

ghcr.io/atrawog/bazzite-ai-pod-<variant>:<tag>

Available Tags

Tag Description
stable Production-ready release
latest Most recent build
<version> Specific version (e.g., 1.0.0)

Pull Examples

# Docker
docker pull ghcr.io/atrawog/bazzite-ai-pod-nvidia-python:stable

# Podman
podman pull ghcr.io/atrawog/bazzite-ai-pod-nvidia-python:stable

# Apptainer (converts to SIF format)
apptainer pull docker://ghcr.io/atrawog/bazzite-ai-pod-nvidia-python:stable

Build System

Pods are built using a unified buildcache for efficient multi-variant builds:

build_files/
├── Containerfile.base           # Base layer
├── Containerfile.nvidia         # CUDA layer
├── Containerfile.nvidia-python  # PyTorch layer
├── Containerfile.jupyter        # JupyterLab layer
├── Containerfile.devops         # DevOps tools
├── Containerfile.playwright     # Browser automation
└── Containerfile.githubrunner   # CI/CD runner

Build Commands

# Build specific pod
just pod build nvidia-python

# Build all pods
just pod build all

# Push to registry
just pod push nvidia-python

Common Base Components

All pods include (inherited from base):

Languages & Runtimes

Language Version
Python 3.13
Node.js 23+
Go Latest
Rust Latest
.NET 8.0
PHP Latest
Java OpenJDK
Ruby Latest

Development Tools

Category Tools
Build gcc, g++, make, cmake, ninja, meson
Version Control git, gh CLI
Containers Docker CLI, Podman
Kubernetes kubectl, Helm
Editor VS Code (code-server)
AI Claude Code CLI

Shell Environment

Tool Purpose
Starship Modern shell prompt
fzf Fuzzy finder
zoxide Smart directory navigation
ripgrep Fast search
bat Better cat
eza Better ls

Container User

All pods run as user jovian (UID 1000) by default:

  • Username: jovian
  • UID: 1000
  • Home: /home/jovian
  • Workspace: /workspace (mounted from host)

See Also