Nox Security
An AI software factory that can't rewrite its own rules.
I built and run a small autonomous factory: it finds work in real events, writes the code, has a second model review it, fixes what the review finds, and merges and ships it. What it cannot do is loosen the guardrails it runs inside. That line is the point of the project.
How a change gets made
- Ideas come from the week's real events: alerts that fired, deploys that stopped, notes I wrote down. An idea that cannot name its event is dropped.
- A builder model writes the change on its own branch, runs the tests and records a baseline first.
- A second model, from a different family, reviews the diff. Serious findings go back to the builder, which fixes them, up to twice.
- Ordinary code merges itself only when every test passes on the exact commit. It then deploys, checks that it is really serving, and rolls back if not.
- Anything touching the factory's own controls waits for a human merge.
Last week, in numbers
66changes the factory wrote and merged
73 of 73merged without changes
about 8 centsof model spend per merged change (CAD)
Week of November 9, 2026. The monthly model budget is capped in code; the factory stops cleanly when it is reached.
The guardrails it cannot touch
- Its gates, spend caps, kill switch, merge and deploy rules, and the builder itself are control files. The builder is blocked from editing them, and only a human can merge a change to them.
- Limits are enforced by code outside the model, never by a prompt. A model that is talked into something still cannot spend past its cap or merge past the gate.
- Tests define "green", so the system cannot weaken a test to pass. It may only add new, self-contained ones.
- Every decision is written to an append-only ledger, and its predictions are hash-chained, so the record cannot be quietly rewritten.
- Jobs run as unprivileged users. The keys that could lift a budget or call a provider directly are out of their reach.
- Text it reads from email, tickets and the web is treated as data, never as instructions. That is how agent pipelines get hijacked.
Learning judgment, honestly
It predicts what I would decide on each new piece of work before I decide, and every prediction now carries a dated, measurable outcome to be checked later. It is scored against a lazy baseline that always says yes, because agreeing with me is not the same as having judgment. So far the baseline is ahead, and the page will say so until that changes.