KubeSquirt
My daily driver workstation is a Kubernetes pod.
Three $40 ThinkCentres. A half-dead gaming laptop. Talos Linux. KubeVirt. RTX 3070 GPU passthrough. USB controller passthrough for mic, camera, YubiKey. I make music, play games, join work calls, 3D-print keycaps — all from inside a pod. Delete the VM. Apply. Wait. Same person shows up.
7,000 words. The Terraform module.
I’m writing this from inside Kubernetes. But that’s not where the story starts.
I was loving and unloving computers for all of my life.

The machine in the room
I remember the emotions from seeing a Brood War screen at 6. I remember my first Slot 1 Celeron at 9 — a dusty ABS box of yellowed plastic, passed through dozens of hands, sent on its final journey to entertain me in a remote village where I converted reading and books into currency for my parents in exchange for extra screen time. Mischief managed — I gamified my engineering life from the very start.

Because it was always there in the room. A machine of unfathomable depth, luring with its CRT glow, existing only for you, inviting you to hide from the outside world and set your inner world free. A fidgeting body found an ephemeral peace gazing into the system of all systems. In awe and in fear.
I was lucky not to have proper internet access until high school, and I was always surrounded by limits and constraints. Many of which I tightened on myself.
I didn’t jump into trenches — I never climbed out of them. Important things always happened in life in parallel.
Fingertips

I was always trying not to lose control. And that control never lived in the systems themselves, but in the interaction with them. Through my fingertips. Be it a guitar, a steering wheel, or my keyboard.

But I was lucky to carry a bigger fire than most. So I learned to lose that control. Through reading too fast, playing an instrument too fast, driving a car too fast.
This only helped… make it mundane. A boring reality where I’m very fast and precise, but in my own rather specific domains.
So I could no longer just read — I started thinking in entire book series. I couldn’t just play fast and loud — I needed to assemble a band and become a progressive-deathcore-rockstar. I couldn’t just drive fast and flashy — I tore down, rewelded, and retuned my Cefiro A31 RB20DET three times down to the last bolt, literally on the streets.

I always did it wrong, in the wrong place, at the wrong time. But I was absolutely happy knowing I have the freedom to let myself do things the way I need them done.
That freedom was parental love I didn’t choose. I was given more than I needed — and I always knew it.
The bore that broke my voice
And I myself, out of The Great Boredom, broke my public voice as a teenager by choosing to do it wrong. Got too good at precisely helping people see their real problem behind their own tangled descriptions on the hardware section of a gaming magazine forum, where I earned my sergeant stripes in a tight-knit rescue squad for the drowning.
Of course, under the limit… of age.

It undermined my self-esteem as an engineer and a speaker for almost two decades ahead. Not because it was scary — but because it was unbearably boring. I did my first burnout with a smile at 15.
And I just kept building interfaces between myself and the world in a slightly different place. Chose personal over public. Gave myself to the last drop, and started over again. And then in the next one.
Snapped strings, cracked necks, burned through gas and rubber — not realizing that I am the very machine I so love to steer.
What’s wrong with kube
So I could not let go of the Kubernetes wheel. Borg’s bastard child. I could not escape the terrifying desire to find out what’s inside. A system of systems, one that wanted to be Linux’s son but became a faceless creature reflecting the nature of those who come to it.
Torn apart by etcd performance, a zoo of ways to turn a working tool into a junkyard of API resources. Manufactured complexity and loose hands in development turn it into something that crosses from complicated into just complex.
But the worst part — in my entire career, it never once truly felt stateless. A thing that tells you I can run anywhere — which really means there aren’t many places where it’ll run well. No matter how massive the production I shepherded it through — it always walked on thin ice of distributions, demanding to be groomed while insisting it’s cattle. And engineers quietly shift their gaze back to the familiar warmth of VM pets.
I feel sorry for it. I love Linux, but Kubernetes is one of those splinters in your ass.
I could not let go of the wheel
And I started my path. Although my conscious engineering path started in the trenches of a university campus, the final association of myself with the industry happened at 27. War, relocations — just new turns. I had been preparing for their apexes my whole life.
I took a breath and arrived where I was meant to be — vim, arch, keybinds. With a small, driving dose of self-hatred for being too late.
Having unlearned the idea that a computer can be lightning fast — because at 12 I spent an entire summer gaming on a Pentium D, that hideous example of seagull-engineering a CPU. Overclocked under a window AC unit, for a couple of imperceptible FPS and pride in a lonely SuperPi result of a rare CPU on a niche forum.
Having unlearned the idea that I can’t go linux-only — because I always carried in my soul my music VSTs, old RTS games, WSL that justified the existence and use of Microsoft’s handiwork in the 21st century.
κυβερνήτης
So here we are. Where in all of this… is Kubernetes?
κυβερνήτης has always been with me.
All I had left was to believe that I could build a new perfect cage for my mind. And I did.

The last five commands before the machine becomes me:
- git clone -b arch-ws-kubevirt infra-dotfiles /tmp/dotfiles
- cp -rf /tmp/dotfiles/* /home/prt0s/
- /home/prt0s/.cloudinit/postinstall.sh
- touch /home/prt0s/.cloud-init-done
- systemctl reboot
A generic Arch cloud image boots. Cloud-init clones dotfiles from a branch named after this exact machine. 850 lines of postinstall.sh do the rest. One file says “I exist now.” Reboot. Same person shows up.
Delete the VM. Apply. Wait. Same person.
I didn’t build something I want to share directly. I gained a tool and a reflection by building my working workflow inside Kubernetes.
Stage: Running Ready: true

I never accepted managed by default. I always wanted to do top-down and bottom-up no less than each other.
And hardware constraints have led me my whole life. I stopped fighting them. Limits turned into gas, and gas into limits.
I stayed with a MikroTik, three M910Qs at $40 each, a couple of dying laptops, and a firm desire to build something FOR MYSELF that would give me no less control and joy from predictability than The Other Things Of My Soul.
All that remained was to choose the very first DC bootstrap machine. I flipped a coin — I no longer cared what my starting point would be.
I rolled out Talos via PXE across all 5 machines at home. All home compute merged into a single Stage: Running Ready: true.

From there — just separate the concerns.
Not every MSI can survive Tarkov sessions between debugging production clusters under the Mediterranean sun. My oldest battle companion lost hardware acceleration on the integrated GPU — but left me the HDMI door to the discrete. I got “the most powerful log of the collection” and I was dead set on squeezing every last drop from it. I already had experience with Proxmox — and fell in love with QEMU as an incredibly beautiful specimen of engineering culture.
Only details remained.
These details:
extraKernelArgs:
- intel_iommu=on
- iommu=pt
- iommu.passthrough=1
- vfio-pci.ids=10de:249d,10de:228b,8086:51f0
- cpufreq.default_governor=performance
- intel_idle.max_cstate=0
- mitigations=off
IOMMU passthrough. GPU claimed by VFIO before any driver loads. CPU always at max. Never sleeps. Spectre, Meltdown — off. Seven lines. I didn’t fix the laptop. I made it run harder.
And when it runs too hot — cpulim 60 in my terminal. A privileged pod spawns on the bare metal node, writes to intel_pstate/max_perf_pct, and the fans quiet down. My nitro boost — injected through the same kubectl.
KubeVirt happened to be in just the right phase — mature enough to serve massive integrators hiding Windows behind annotations, raw enough to be bent into this. Without it, this would be a Proxmox box or a bare-metal desktop — neither declarative, neither ephemeral, neither deletable and rebuildable in the time it takes to make coffee.
I picked ArgoCD deliberately, to finally learn real GitOps in my own skin — where every commit I push resonates through the iron under my desk. No clutch, no lag.
And I launched HER. My fully declarative, ephemeral workstation, greeting me with a zshrc MFA auth — one terraform apply from bare metal to a tmux factory of freshly pulled work projects. Music, games, work — everything converged under the star of a framework that many of you have dreamed of destroying and throwing out of your lives more than once.
And all of this — is Kubernetes.

[Physical] [Kubernetes]
MSI GF66(12700h,64G) ─── VFIO ───────────> arch-ws-001 (KubeVirt)
├─ RTX 3070 ├─ Sunshine remote desktop
├─ GPU Audio ├─ REAPER + 9 Arturia VSTs (Wine)
└─ Intel USB Controller ├─ Steam + GE-Proton + Battle.net
├─ Behringer UMC22 ├─ EasyEffects + DeepFilterNet
│ └─ Mackie EM-91C mic └─ mpv, Orca Slicer, the rest
├─ Osmo Action 5 Pro
└─ YubiKey
M910Q-001(G4400,8G) ── FiiO Q11 ───────> mpv VM (1c host passthrough)
M910Q-002(G4400,8G) ── CH340 USB ──────> Hyperion (71 LEDs backlight)
M910Q-003(G4400,8G) ── Samsung PM863A ────> Rook Ceph (1 OSD, 512Mi)
├─ RBD → VM disks
├─ S3 → VM images # and cache layer of my controversially ephemeral NAS
└─ rclone → Backblaze B2 # since I'm good with only one disk at home
14ALC05(5500U,8G) ── just as an extra generic compute
Nine Arturia synths from the 1970s — Minimoog, CS-80, Prophet-5 — run as Windows DLLs bridged through Wine inside this pod. The signal path crosses seven boundaries. The latency is inaudible.
My YAML is also a graveyard and a factory:
- i3 on Xorg — the first draft. 3440x1440@100Hz, hand-crafted XKB rules. Sorry folks, no room left for tears.
- Bazzite SteamOS — can I have SteamOS at home? Dormant. Waiting for sane GPU prices.
- Windows 11 LTSC — Packer + QEMU + Autounattend on a GitHub ARC runner inside this cluster. QCOW2 → Ceph S3. KubeVirt boots it.
- Arch + Hyprland + NVIDIA —
running: true. You’re reading this from inside it. - NixOS — boots from the same bucket. Next.
My smart home lives in the next pod over.
Right there, same cluster — Rook Ceph S3 as the only sane NAS option for me at home. One disk. One copy. osd_pool_default_size = 1. Every Ceph SRE reading this just closed the tab.
Play a record? iPhone → SSH → Cloudflare & MikroTik → mpv. It once had its own VM — a single-core box with USB audio passthrough, sole purpose: play music. Now it lives inside the workstation. Fast.
Play StarCraft? The one-eyed MSI, immediate = true — no vsync, no mercy. The Brood War I saw at 6 now renders inside a pod.
I’m typing this touching keycaps I 3D-printed myself on a keyboard I hand-soldered myself. My QMK GitHub build with its keymap.c has already encoded my entire finger stack — steering workspaces, windows, tabs, and terminals as if I’m back in my iron horse, feeling every crack in the asphalt through the ball joints, coilovers, and bare metal of the body, no compromises, no deals with comfort. Feeling how the slightest turn of the wheel echoes through the gears and the squeal of semi-slicks. How the neck fills with resonance.

And here’s the part I’ve been steering around this whole time.
I… am talking to you from inside Kubernetes. I’ve been living here for almost a year now. And I like it. I literally passthrough a USB controller into Kubernetes so you can hear my voice, captured by a Mackie EM-91C through a Behringer UMC22 and shaped by EasyEffects described in my dotfiles. I literally send print jobs to my AnkerMake M5C from Orca Slicer, with profiles carefully pinned in my gitignore. You can literally see me through an Osmo Action camera plugged into a Kubernetes node. Just add the right headers, my friend. And I see you through the lens, coming out of the HDMI port. And it mesmerizes me to look at the world from this side of the screen.
Three lines. That’s all it takes.
hostDevices:
- { name: nvidia-gpu, deviceName: devices.kubevirt.io/pci-0000-01-00-0 }
- { name: nvidia-audio, deviceName: devices.kubevirt.io/pci-0000-01-00-1 }
- { name: intel-pci-usbc, deviceName: devices.kubevirt.io/pci-0000-00-14-0 }
The entire Intel USB controller — every port on one side of the laptop — unbound from the host kernel at IOMMU level and handed to a VM inside a pod. Not a virtual device. Not PulseAudio bridges. The physical silicon.
My YubiKey doesn’t know. My Mackie EM91C doesn’t know. The Osmo Action 5 Pro that shows you my face — doesn’t know. They think they’re plugged into a laptop. They’re plugged into Kubernetes.
It seems I’ve started living not by computers, but by clusters. This used to be a very professional feeling. In 2026 it finally became personal. My cage is exactly what I want it to be right now. I have a ton of plans — and for once, I can feel how tangible and integrable each of them is in my new, shiny cage.
When the cluster runs, my room glows warm orange. Seventy-one LEDs on the top edge — a horizon line above the workspace.
I didn’t build a monitoring dashboard. I built a mood.
Shall I exit?
One difference from before — now I’m repaying my public voice debt publicly.
This is not something that’ll make your boss’s world a better place. But maybe it’ll help you understand your own world better. And your own cage. And the people in it.
So, here am I. Building wrong interfaces between me and the world. Breaking them. Rebuilding from scratch.

Shall I exit the Kubernetes? Shall I stop steering?
Built wrong. Runs in production.
The Talos module that does the actual steering.