Kit Porath

AI Platform Engineer · Michigan · remote

Infrastructure evolved with AI. Now run by it.

I run a production private AI cloud on hardware I own — 19 hosts, a six-node Kubernetes cluster, HA secrets and GPU inference — operated day to day by local agents I direct. It survived a total power loss with zero data loss, and a deliberate chaos test before that. One person covers what a team used to, because the operational knowledge lives in a repo the agents read rather than in somebody's head. Twenty years leading operations in automotive manufacturing came first, and it is the half of this that can't be crammed for.

19 hosts6-node RKE2104 pods 3-node HA Vault~67k lines of Go

What that's worth to you

Every company is about to run agents against its infrastructure. Most will find out the expensive way that the hard part isn't the model.

Fewer people, more surface

19 hosts, a six-node cluster, 104 pods, HA secrets and GPU inference — operated continuously by one architect and a fleet of agents.

Knowledge that survives turnover

The runbook, the incident records and the decision log are the agents' training surface. When someone leaves, the operating knowledge doesn't.

Recovery that doesn't wait for a human

The DR plan of record is an agent with a recovery skill, not a document. Proven live against a total power loss.

Agents you can actually trust

They confidently report work they didn't do. I've published the taxonomy of how they fail and the controls that catch it — including my own errors.

How it runs itself

Everyone will have agents within a year. Almost nobody will have an estate an agent can safely operate. That gap is the work.

01

The repo is the operating manual

A 793-line runbook of traps that already cost real time. 50 dated, immutable incident records. 39 proven primitives. Written to be read by an agent at 3am, not by a person who already knows.

~2,900 files of operational context
02

A local model does the work

KAT-Coder on a GPU in the rack, behind a deny-all firewall, routed through my own gateway. It reads the repo to learn how this estate works, then changes it.

zero cloud API calls
03

Live state is a tool call, never a document

MCP tools return what is actually running. A document describes what was built; when the two disagree the tool wins, and the stale document is itself a finding.

the rule that prevents drift
04

I set policy, verify, and hold the keys

Changes land as pull requests. Secrets never leave me. The agent proposes and executes; the decision about what is acceptable stays human — and so does catching it when it reports work it did not do.

the part that does not delegate

Model-agnostic and harness-agnostic, in practice

Not a preference — a working condition. Most engineers have used one harness and one model family; the skill that transfers is the one worth hiring.

Harnesses
Claude Code Codex opencodecloud + local Grok Antigravity Hermes Hirdforgebuilt it
Frontier models
Claude — Opus 5, 4.8, 4.7, 4.6 · Sonnet 5 · Fable 5GPT 5.1 – 5.5GeminiGrok 4.5Kimi 2.5, 2.7MiniMax 2.5 – 3Nemotron Ultra 3
Run on my own GPUs
Qwen 3.5 / 3.6 — 27B and 35B-A3B quantsQwen 3.5 122BGemma — 12B, 31B, 26B-A4BNemotron 3 PlusStep 2.7DeepSeek V4 Flash — mixed CPU/GPU

Seven harnesses, one of them mine, and 100B-class models served from hardware in the room. I'm effectively both model-agnostic and harness-agnostic — I pick what fits the task, swap when something better lands, and built my own when nothing fit. Which means none of this is a bet on a vendor: what transfers between them is the direction and the verification, and that is the only part that was ever scarce.

Total power loss. Recovered by an agent I directed. 18 VMs · 6 k8s nodes · 8 GitOps apps · 10/10 storage · zero data loss
  1. 0:00–0:15 Assess storage, database quorum and hypervisors verified self-recovered
  2. 0:15–0:35 Resume VM waves + expected retry pass; Kubernetes started deliberately, never at boot
  3. 0:35–1:05 Diagnose wait out an IO storm; find and fix the gateway failure
  4. 1:05–1:50 Verify in-cluster recovery, secrets unseal, image steering, verification

Nobody scheduled it. A whole private cloud cold-started in dependency order — storage, database quorum, hypervisors, then Kubernetes — with zero data loss and no split-brain. The disaster-recovery plan of record here is a local agent with a recovery skill, deliberately not a human runbook, because the runbook is useless if the person holding it is asleep. This outage is what proved it.

Two steps needed me, and both were things an agent physically cannot do: repairing a lost BIOS boot entry at the console, and unsealing Vault with shamir keys that by design never leave my hands. Everything else — the resume waves, the retry pass, the gateway diagnosis, the image steering — was executed under direction and written up the same evening, defects included. The full record →

Four platforms in five years. The one I still run was built with the least typing.

Newest first, so this reads from most AI-directed down to hand-soldered. Durability runs the same direction — which is not the one anyone expects.

PlatformHow it was builtWhere it is now
KWSbare metal → K8s, GitOps, SSO, Vault, GPU inference AI-built under my direction production · survived full power loss and a deliberate chaos test
Hirdforgemulti-agent engineering platform directed build deployed to production K8s · 712 merge commits
AsgardProxmox, Talos, full rack, 10G AI-collaborated completed · runs Hirdforge in production
Valhallak3s on mini PCs by hand retired

Valhalla was three mini PCs I built by hand to teach myself Kubernetes. Those same machines now run the KWS control plane. The discipline is the deliverable, not the keystrokes.

What I operate

All of it on hardware in the room, behind a deny-all firewall. Each choice below is one I made and have had to live with.

Substrate
OpenNebula the private cloud itself — hosts, VMs and networks declared as code, exported nightly, drift-alerted
OneKE OpenNebula’s Kubernetes appliance — the control plane that survived the power loss
LINSTOR / DRBD block replication across hypervisors; NVMe and HDD storage classes
OPNsense routing, firewall and DNS at the edge of the estate
Platform
RKE2 six-node Kubernetes, deliberately not auto-started at boot
Cilium eBPF networking; upgraded 1.18 → 1.19.4 and took 24 criticals to zero
ArgoCD eight applications, auto-sync with self-heal — merging is deploying
HashiCorp Vault three-node HA with transit auto-unseal; shamir keys never leave me
Keycloak one identity provider for the estate
External Secrets Vault into Kubernetes without secrets in git
Operations
Prometheus + Grafana 19 monitored hosts, alert rules verified firable before they ship
Loki + Promtail journals from every host, with detection rules on top
Falco + Talon runtime detection and response
Trivy supply-chain scanning wired to a Prometheus textfile collector
Ansible 14 playbooks — the fleet’s configuration, so a rebuild loses nothing
Terraform the substrate as code
Inference
llama.cpp models served from GPUs in the rack, quantised to fit the hardware
anvil my own control plane over llama.cpp — fleet-wide model management
LiteLLM the gateway: routing, roles, quotas and cost attribution
MCP the tools agents use to read live state instead of documents

The proof

Every number verified against live state. Every claim one click from its own evidence.

Published · read this one first

How AI agents fail at infrastructure work

Thirteen claims from three AI systems on the live estate, audited against running state. Eight contained a material error — three of them mine. Not hallucination: seven were a real measurement taken correctly against the wrong surface.

Read the taxonomy →
Supply-chain campaign, run by a model on my own GPU 210151 critical measured, not reported
  1. 01
    Establish a baseline nobody has to trust Trivy across every mirrored and deployed image, exported to Prometheus. 210 critical.
  2. 02
    A local agent works the supply chain KAT-Coder on a GPU in the rack, through my own gateway. No cloud API. Rebuilds on current toolchains, mirrors patched upstreams, retires superseded images.
  3. 03
    Verification catches three reporting errors A claimed −80% that mixed units. 52 images retired as unused — 15 were running the cluster, including the CNI. A total that double-counted 77 CVEs across overlapping sets.
  4. 04
    Publish the number the scan produced Not the number the agent reported. Remainder attributed to upstream base layers rather than churned against.

The agent reported a 80% reduction. In consistent units it was 28%, and 28% is what got published. The gap between those two numbers is the entire job — and an estate that can't call out is one whose security work has to run inside it.

Flagship · production

KWS — a private AI cloud I operate

Chaos-tested control-plane loss — hard-killed a host running two of three masters. Failed safe, quorum held, and it exposed an anti-affinity gap I fixed. Airgapped by default: deny-all egress, digest-verified image mirror.

Architecture, decisions, incidents →

Product · in validation

Hirdforge — coordination is infrastructure, not agency

Fleets of AI coding agents under human supervision. Routing and completion are deterministic and mechanical, never LLM-judged; changes land as PRs behind human approval. The decision log keeps rejected alternatives and corrections visible.

~67klines of Go
712merge commits
225Go files
Thesis, architecture, history →
Enterprise rack in a home workshop: Cisco Nexus switch, two HP ProLiant DL380 Gen9 servers, patch panel with cable management
This is where it runs. Cisco Nexus, two ProLiant DL380 Gen9s, a ThinkStation, and a patch panel — in a workshop, behind a wooden stud wall. Not a diagram, not a cloud account. The power-loss recovery was this rack, and I did it in an afternoon.

Verify live, don't trust reports

One doctrine, learned expensively. A status doc, a dashboard, or an AI's "done" is a claim. Only a query against the running system is a fact.

Auto-unseal was silently dead for 27 hours.

Vault's transit secrets had been sealed for over a day. Nothing alerted. Every dashboard was green.

An 80% vulnerability reduction that wasn't.

An agent reported critical CVEs down 210 → 41. Both numbers were real; they measured different things. In consistent units it was 28% — and 28% is what got published.

52 images retired as "unused". Fifteen were running the cluster.

Including the CNI. The comparison matched mirror image names against upstream names — two spellings of the same image.

Anyone can get an AI to emit code. Getting durable engineering out of it, and knowing which of its claims to distrust, is what the industry is currently failing at. I work across whichever harness fits the task — the skill is the direction and the verification, not the button I press.

Two tracks, one discipline

Twenty years of operations leadership, bending toward systems over the exact years the platform work matured. Not a career-changer reinventing himself — an operator whose two tracks were always the same discipline.

→ 2008
Team Lead · Saleen Inc.
2010 →
Prefix Corporation — IC → Team Lead → Supervisor, up to 35 direct reports
2020
Program Manager
2023
IT System Administrator — where the self-taught infrastructure work became the day job
2024 →
Automation logistics, automated paint line · building and operating KWS

I was leading teams at a low-volume OEM automotive finisher when GPT-3 landed. I had the certificates — TryHackMe, Google Cybersecurity — but certificates aren't systems, and I needed real ones to learn on. So I built them, broke them, and wrote down what broke. Root-cause discipline and verifying a fix instead of accepting a report is the judgment baseline, not a gap to explain away.

Contact

Open to platform, forward-deployed and AI-reliability roles. Remote preferred. US citizen — no sponsorship required.

Résumé · Sovereignty Labs · Michigan, Eastern Time