Skip to content
Building Frank
Building Frank

Building Frank

A tutorial series on building an AI-hybrid Kubernetes homelab from scratch — each post walks through one layer of the stack.

The motivation behind Frank, the Talos Cluster — learning enterprise infrastructure and building interesting projects on your own hardware.
Repository & Toolingintroductionarchitecture
Bootstrapping a Talos Linux cluster with Omni, configuring node labels and zones, and replacing Flannel with Cilium's eBPF networking.
OS & Bootstraptalosciliumnetworkingbootstrap
Setting up Longhorn distributed block storage across heterogeneous disks, including a GPU-local StorageClass for AI workloads.
Storagelonghornstorage
Adding GPU compute to the cluster — the NVIDIA RTX 5070 saga, Intel Arc iGPU via DRA, and patching charts for bleeding-edge Kubernetes.
GPU Computegpunvidiainteldra
Migrating from Flux to ArgoCD with an App-of-Apps pattern — adopting existing workloads without downtime.
GitOpsargocdgitops
The most over-engineered RGB setup — controlling ARGB case fans from a Kubernetes DaemonSet via USB HID.
Fun Stuffopenrgbhardware
Deploying a resource-efficient observability stack with VictoriaMetrics, VictoriaLogs, and Grafana — and the three gotchas that made it interesting.
Observabilityobservabilityvictoriametricsgrafanafluent-bitvictoria-logs
Configuring Longhorn backup targets with Cloudflare R2 — and the three Longhorn 1.11 gotchas that rewrote the original plan.
Backup & DRbackuplonghorncloudflare-r2sopsdisaster-recoverygitops
Replacing the SOPS-only secrets workflow with Infisical + ESO — and the three Infisical chart bugs that forced splitting one app into three.
Secrets Managementsecretsinfisicalexternal-secretsesosopsgitopssecurity
A unified OpenAI-compatible gateway that routes between a local RTX 5070 Ti running Ollama and free cloud models via OpenRouter — one API for everything.
Local Inferenceollamalitellmopenrouterllminferencegpuai
A Kubernetes-native control plane where every AI agent is a Pod, every policy is a CRD, and every execution is a Job — orchestrated by Sympozium.
Agentic Control Planesympoziumagentsaicontrol-planenatslitellm
Getting NVIDIA GPU containers to actually run on Talos Linux — validation markers, machine-specific patches, nvidia default runtime, and the postStart hook trap.
GPU Computegpunvidiataloscontainerddebugging
One identity provider for every service — Authentik brings OIDC SSO to ArgoCD, Grafana, and Infisical, forward-auth proxy to Longhorn, Hubble, and Sympozium, and OIDC-backed kubectl access.
Unified Authauthentikoidcssosecurityauthrbactraefik
Virtual Kubernetes clusters inside Frank — each one a disposable sandbox with its own control plane, resource quotas, and network policies, deployed via ArgoCD.
Multi-tenancyvclustermulti-tenancysandboxisolationargocd
Deploying Paperclip — an AI orchestrator that organises agents into virtual companies with org charts and budgets — alongside Sympozium, to compare two fundamentally different agentic paradigms.
AI Agent Orchestratorpaperclipagentsaiorchestrationpostgresqlghcrlitellm
Running ComfyUI for video, image, and audio generation on the same GPU as Ollama — with a custom GPU Switcher dashboard to manage time-sharing.
Media Generationcomfyuidiffusiongputime-sharingvideoimageaudiogo
Deploying a single-node Talos cluster on Hetzner Cloud as a public edge — Headscale mesh, Caddy reverse proxy, and everything that went wrong along the way.
Public Edgehophetznertalosheadscaletailscalecaddyedgemesh
Deploying a persistent Kali Linux container on gpu-1 as an always-on Claude Code workstation — because laptops sleep and mobile apps have limits.
Agentic Control Planekaliclaudeagentsshgpu-1persistent
Adding canary and blue-green deployment strategies to the cluster with Argo Rollouts, Cilium traffic splitting, and VictoriaMetrics metric-gated analysis. Includes a 39-day postmortem on a canary that was deployed, documented, and never actually ran.
Progressive Deliveryargo-rolloutscanaryblue-greenciliumvictoria-metricslitellmsympoziumpostmortem
Deploying per-user n8n instances on gpu-1 for workflow automation — with Authentik forward-auth, dedicated PostgreSQL, and Prometheus metrics.
Infrastructure Automationn8nworkflowautomationagentsgpu-1authentikpostgresql
Rebuilding the Kali workstation as a hardened, non-root pod with layered defenses — because giving an AI agent skip-permissions demands more than trust.
Agentic Control Planesecurityagentclaudeciliumsshgpu-1vibekanbannon-rootcrontelegrammonitoring
Adding feature-level health monitoring to the cluster — Blackbox probes for endpoints, Pushgateway for cron heartbeats, and Grafana alerting that fires to Telegram when things go silent.
Observabilityobservabilityblackbox-exporterpushgatewaygrafanatelegramalertingvictoriametrics
A lightweight Go service that receives Grafana webhook alerts and automatically updates GitHub Project lifecycle states — turning monitoring signals into actionable project board updates.
Observabilityobservabilitygrafanagithubgoalertingautomationargocd
Moving TLS termination and reverse proxying into the cluster with Traefik, Let's Encrypt wildcard certs, Authentik forward-auth, and a gethomepage.dev dashboard.
Networkingnetworkingtraefikingresstlsacmeauthentikforward-authhomepage
Deploying a relay server sidecar to tunnel the VK remote web UI through to the local agent's workspace data — because a dashboard that can't show your work isn't a dashboard.
Agentic Control Planeagentsvibekanbanrelaywebsocketsidecartraefikyamux
The VibeKanban cloud announced shutdown with 30 days' notice. This is how we deployed the self-hosted remote crate — PostgreSQL, ElectricSQL, and a Rust API — before the lights went out.
Agentic Control Planeagentsvibekanbanpostgresqlelectricsqlrustaxumauthentikself-hosting
Deploying a full Kubernetes-native CI/CD platform on pc-1 — Gitea for git mirroring, Tekton for pipelines, Zot for container images, and cosign for supply chain signing.
CI/CD Platformcicdgiteatektonzotcosignocipipelinessupply-chainkaniko
Splitting VibeKanban out of the Kali agent pod into a shared-volume sidecar, and moving Dockerfiles into a new multi-image repo with matrix CI and cross-repo dispatch — three rebuilds, two gotchas, one clean boundary.
CI/CD Platformagentsdockersidecargithub-actionsmulti-stagecross-repo-dispatchrust-embed
Standing up ruvnet's claude-flow as a 24/7 hybrid pod — a ruvocal web UI plus a shell sidecar — to run as the chaotic-swarm counterpoint to Paperclip's org-chart agents.
AI Agent Orchestratorrufloruvocalclaude-flowagentsaiorchestrationagent-shell-baselitellmopenrouters6-overlay
A third blog series — research-grade landscape reviews framed as decisions, gated behind a committed dossier before any paper can be drafted.
Repository & Toolingpapersbloghugohextramermaiddossierresearchshortcodes
Collectors on Hop, backend on Frank, AI alert enrichment that knows when 12× baseline is a scraper and when it's Hacker News.
Observabilityobservabilityvictoria-logsfluent-bitgoatcountercrowdsecfalcografanalitellmhoptaloscaddyfastapitdd
An Ansible controller for the home-lab boxes Talos and ArgoCD can't reach — two operators, four CrashLoops, a login page with no login, and a ping that finally said pong.
Infrastructure Automationawxansibleautomationauthentikoidcargocdoperatorpostgresqltalosauto