Omarchy Homelab
Infrastructure

A small k3s homelab with GPU compute, GitOps delivery, and centralized observability.

↓
Scroll to explore

Homelab Infrastructure Meets Cloud Native

The Challenge

Running a small k3s homelab across media and AI workloads — with everything delivered from git and monitored centrally.

The Solution

An owned Omarchy fleet plus Argo CD GitOps for every cluster stack — one source of truth, no drift, no cloud spend.

Infrastructure Innovation

Git-Sourced Fleet

Host config lives in git (Omarchy + Home Manager). The live host is never the source of truth — changes ship from the repo, not from SSH.

Just-Driven Ops

One justfile per domain: just check, build, switch, deploy, health. The supported update path for the Omarchy fleet — and the fastest way back to a known-good state.

GitOps for Kubernetes

ArgoCD app-of-apps reconciles every cluster stack from git — media, Quill/MapleSpike, Haven and more. Changes land by commit; rollbacks are git reverts.

Cluster Status

Kubernetes

Every stack reconciled by ArgoCD — media, Quill, Haven and more.

AI Stack

llama.cpp on owned GPUs
Voice models on k3s; MCP servers wiring agents into every service.

Observability

VictoriaMetrics + Grafana + vmalert
GPU utilization, cluster health, and service SLO dashboards.

Operations & Automation

Automated Deployments

Every stack ships from git: commit, ArgoCD sync, rollout. Restarts are a git-native change, and GPU workloads auto-restart when the hardware frees up.

Service Mesh

Calico CNI for pod networking, CoreDNS for service discovery, Longhorn for replicated storage. VictoriaMetrics + Grafana for monitoring and alerting.

Observability

Metrics with VictoriaMetrics (vmagent + vmsingle), dashboards in Grafana, alerting with vmalert. Logs via journald and pod logs.

Cluster Capabilities

Hardware Infrastructure

A small k3s homelab with GPU compute and replicated storage. The hardware inventory stays private.

AI/ML Services

Local inference with llama.cpp on owned GPUs; voice models on k3s; MCP servers wiring agents into the services. No hyperscaler dependency.

Observability Stack

Metrics: VictoriaMetrics + Grafana
Logs: journald + pod logs
Alerting: vmalert rule evaluation
Dashboards: GPU utilization, cluster health, service SLOs

Infrastructure Timeline

The Journey

1
2025

Windows + Proxmox

Dual-boot setup with Proxmox servers for testing, Windows as daily driver

🎯
September 2025

Killed Windows

Full commitment to Linux. Started the distro-hopping journey.

3
Sept 2025 – Feb 2026

OS Evolution

Omarchy (Arch-based) → CachyOS (optimized Arch) → NixOS (declarative + reproducible)

🧱
March 2026

One host became a cluster

First NixOS configuration on a single host, then an AI gateway (v1, then v2 with circuit breaker, rate limiting and Redis caching), more nodes, and K8s phases 1-7: control plane, CNI, DNS, stateful services, GPU workloads and monitoring, all in production.

5
April 2026

Content, then extraction

Blog moved to Astro Content Collections with generated social cards. MCP Registry, Knowledge Fabric and the AI gateway extracted into standalone declarative projects; gateway v2.1 added connection pooling, response caching and OCI image builds. Pre-commit quality gates standardized across every infrastructure repo.

🎨
May 2026

Design system and roadmap

Retro theme system on Base24-compliant semantic tokens, then a semantic-token redesign that removed the theme preview layer. Integration roadmap across 12 repositories: MCP ecosystem, knowledge pipeline, GPU federation, unified auth.

🐚
August 2026

Omarchy pivot

Full-stack migration off NixOS to Omarchy across every host. Declarative profiles, AI-first tooling, the cluster declared in git. The NixOS configuration is archived.

✅
September 2026

Migration complete

Every host on Arch-based Omarchy — K3s, AI inference and monitoring carried over without breakage. Fleet telemetry desk on every host. Every cluster stack under ArgoCD app-of-apps, no kubectl and no drift. GPU workloads moved from systemd to ArgoCD-managed k3s pods, rollback is one git revert. Community server live with a full channel mirror.

Code Explorer

Code Patterns

Overview.nix
# NixOS Configuration Pattern
{
  # Declarative system configuration
  boot.loader.systemd-boot.enable = true;

  # Network setup
  networking.networkmanager.enable = true;

  # User management
  users.users.jkro = {
    isNormalUser = true;
    extraGroups = [ "wheel" "networkmanager" ];
  };

  # System packages
  environment.systemPackages = with pkgs; [
    vim git curl wget
  ];
}