About

Infrastructure & agent systems for teams that outgrew the defaults.

I build self-hosted platforms and AI agent infrastructure — and the APIs that agents consume. Then I make them boring to operate: one-command deploys, builds that fail closed, no human on watch.

Five years total: two years shipping backend APIs at a Swedish consulting firm, then three running self-hosted production infrastructure — bare-metal Kubernetes, NixOS, and agent workloads.

Based in Sweden. Remote, worldwide. Timezones are a scheduling problem, not a hiring one.

What I do: senior infrastructure contracts, agent system architecture, platform engineering.


What I build

Agent infrastructure that fails safe
I build permission models for AI agents as a build-time proof instead of a runtime habit: capabilities to scopes to profiles in home-manager, and nixos-rebuild fails naming an unknown capability before anything runs. No dialog box at runtime, no "allow this once." Adding a capability is a diff, not a checkbox — the friction is deliberate.
Self-hosted platforms on actual hardware
I run a Nix build farm across a home Kubernetes cluster — not because it's cheaper, but because it proves the systems I design can survive real constraints: memory pressure, network partitions, and the absence of a "create new instance" button.
Data APIs from messy sources
JobFilter.ai started as a hosted career platform; four months in, I deleted 66,000 lines of it and kept the API: structured JSON only, source attribution, tokens scoped to jobs:read. Sometimes the right infrastructure decision is what not to build.
Static hosting where ownership is a key
RentFree.site runs one Site per tenant: deploys are git push over SSH, there is no signup form, and the SSH key is the ownership. Lose it and the Site is orphaned; deleting is one irreversible SSH command that takes the data with it.

How I work


Get in touch

Email: max@ronner.dev
GitHub: maxronner · Codeberg: maxronner

If you're building agent infrastructure or self-hosting critical systems, describe the failure mode, not the stack. Address above.