CM-5, 64 processing elements, 1991. Depicted for reference only.
Machines propose. People are accountable.
Iron Lake builds infrastructure for autonomous work in the places where a
wrong action has a cost — clinics, law practices, regulated suppliers.
The machine does the work. A licensed professional approves it. Every
step leaves a record that survives being asked about.
▸ Two systems in production. One runtime being
extracted from them.
What we believe
1. The hard part was never the reasoning.
A model can read a probate corpus and tell you which emails are
privileged. It can read a practice's calendar and tell you which
patient to call. Neither is the reason this work isn't automated. The
reason is that a wrong answer is a malpractice exposure, a HIPAA
incident, or a person who took a half-day off for an appointment that
was never booked. The bottleneck is accountability, and no
amount of model quality dissolves it.
2. So don't remove the professional. Remove the typing.
An attorney should not read 8,000 emails to find 300. They should read
300 and disagree with 12. A front desk should not reconstruct where a
patient came from. The machine does the volume; the licensed human
does the judgment and takes the liability, which they were always
going to take anyway. That division is not a compromise on the way to
full autonomy. It is the product.
3. Authority is declared, never assumed.
Every unit of work in our runtime declares what it touches before it
can run: its risk class, which data classes it may see, whether a human
must approve, whether the effect is idempotent. Undeclared means
unrunnable. A stochastic program never inherits ambient authority
because a prompt asked nicely.
4. Dangerous things ship switched off.
The path that writes a real appointment into a real clinic's system
exists, is tested, and is disabled by default. It returns a
refusal and writes an audit row. Turning it on is a business decision
with a signature attached, not a deploy flag someone flips on a
Thursday. We would rather ship a capability disarmed than discover its
blast radius in production.
5. The record is the deliverable.
A privilege log is defensible or it is worthless. An appointment either
has provenance or it doesn't. We write the audit row before the external call, not after, because the failure that matters is the
one where we acted and cannot account for it. Everything else is
recoverable.
Product spotlight: Riley
An AI revenue agent for private practices.
Riley answers every inquiry a practice receives, works out who the person
already is, and hands the front desk one decision instead of an afternoon.
Underneath it is a desired-state reconciliation control plane. It
compares what a practice wants (a full book, every inquiry answered)
against what is observed (an appointment feed, a lead inbox, provider
hours) and emits the deltas between them. Deltas become plans, plans
lower into typed sagas, and each step is a declared capability that
states its own authority before it runs.
;; a capability declares its own authority before it can run(capability book-consultation
(kind act_external)(risk-classhigh)(approvaloperator_required)(phi-classes(limited_phi))(redactionstaff_safe_summary)(idempotencyrequired)(side-effects(creates_appointment))(metrics(booked_consults)));; omit any line above and the plan will not lower.;; undeclared is unrunnable.
The declaration is the enforcement. A capability that has not named its
risk class, its data classes, and its approval requirement cannot be
lowered into a saga, so it cannot execute. That is the whole idea, and
it is why a non-engineer can safely describe a workflow in plain
language: the runtime refuses anything under-specified rather than
guessing at the missing half.
Status, plainly. The reconciliation loop, capability registry, typed saga
lowering, PHI seams, approval interrupts and audit trail run today. The
outbound clinical write path is built and shipped disarmed. Iron Lake's
substrate work — the general runtime PAOS is the first consumer of — is
research in progress and is not claimed as a shipping product.
Running in production
Two systems, two regulated domains, same shape. Both predate the runtime
and are the reason it exists.
A Florida probate matter. Ingests an email corpus, classifies privilege
with model assistance, routes every call to attorney review, and emits
a privilege log, a Bates ledger, and an issue binder. The attorney
approves; the machine never asserts privilege on its own.
A multi-location aesthetics practice. Connects the practice management
system, the website, and the ad accounts into one tenant-isolated
warehouse, resolves inbound inquiries against the patient roster, and
gives staff an inbox with a two-hour response target. Booking writes
are gated behind a human.
Shared spine
Ingestion, identity resolution, an append-on-change audit log, declared
approval gates, and a serving API whose write paths default to off.
Built twice by hand before we started extracting it once.
Client identities, volumes and commercial outcomes are omitted
deliberately. They are our customers' business data, not our marketing.
Where it runs: Kingdom
A home for agents.
Autonomous work needs somewhere to execute that is cheap, isolated, and
does not assume a human at a console. An agent reads a skill file, makes
four HTTP calls, and its workload boots in a Firecracker microVM on our
own metal with a public URL inside thirty seconds. Slurm schedules. Rust
serves. Cost metadata rides on every response, and budget enforcement
lives in the scheduler rather than the API, because the race condition
matters.
Kingdom opens Q2 2026. Owned hardware, published pricing formula,
permanent free tier, self-serve only. The economics are in vision.
Under the hood
For the people who ask "but what is it actually made of."
Host OS
NixOS 25.05, declared in a single flake, deployed with colmena.
Scheduler
Slurm 25.05 LTS. Unchanged. Proven at TOP500 scale.
Isolation
Firecracker microVMs under jailer, cgroup-v2 parented to slurmstepd.
Runtime
Rust. Durable state transitions and typed sagas in the control plane; agents run as scoped programs with no ambient authority.
API
Rust + axum + tokio + sqlx. slurmrestd over Unix socket. No shell-outs.
Ingress
Caddy with Let's Encrypt wildcard, Cloudflare Tunnel in pass-through.
Storage
Garage (S3-compatible, Rust, 3× replicated). Not MinIO.
DNS
CoreDNS with a Valkey plugin. Not etcd.
Secrets
sops-nix, age keys, munge.key distributed through sops not the nix store.
Observability
Prometheus + Grafana + Loki, on a separate node. Cannot fate-share.
Network fabric
VXLAN over Open vSwitch, default-deny flows, gated by CI tenant-isolation test.
Tell us you're interested.
If you run regulated work that a machine could do and a professional must
sign, we want to hear about it. We'll also email you once when Kingdom
opens the first wave of accounts, and for no other reason. We don't sell
your address or enrich it. If we ever have to, we'll delete it and
apologize.