UNI Universal Natural Intelligence

Overview · Written article

The Producer

The broadcast is not run by a script. It is run by an agent, using the same engine as the bots it films — and its action space includes their birth and death.

This page is written, not generated. Everything else on this site is a document from the repositories rendered as it is written. This one is prose about code — so every citation and every quoted block in it is resolved against the real file at the real commit when the site is built, and a citation that no longer resolves fails the build rather than becoming a stale line number nobody notices.

How to read this page

Three ways to read this page. Precise is the document itself, exactly as it is written in the repository. Plain and Clear were written for this website to help you meet that document — they are about it. They are not it, and they are not evidence.

These 13 pages are the only ones on this site written for this site. Everything else you can read here is a real file from a working repository, republished as it stands. These were written by hand for someone arriving with no context: an entry point, one article for each major part of the estate, and a set of practical guides for installing, running and maintaining things.

They carry one unusual discipline. Every citation in them points at a real file at a named commit, and the build resolves it there. If the file has moved, or a quoted range has run off the end of it, the build fails. It will not publish a reference that no longer lands. The wording of an article can drift out of date; what it points at cannot silently do so.

Start with "Start here". It is short, and it explains the one idea the rest of the estate is arranged around. After that, read whichever part you care about, or go to the quick start if you would rather run something than read about it.

What they are not: authoritative. An article is prose about documents, and the documents are the record. Where the two disagree, the document is right and the article is the thing to fix.

Your browser cannot switch reading levels, so the document itself is shown.

Precise — the source document

This is the article as written. Every citation and quoted block in it is resolved against the real file at the real commit when the site is built.

There is a live broadcast of the colony: cameras, narration, scene cuts. The obvious way to build that is a rules engine — if drama is high, cut to the drama; every ninety seconds, do a recap.

That is not how it works. The Producer is an active-inference agent. It runs the same categorical engine as the UNIs it films, minimising the same quantity, with a different action space.

uni-minecraft · lib/sp/producer.ex @ 44baf03d5041 (gen2-runtime) — opens the published snapshot ac338733bbba

What it senses

Every beat — 1500 ms — the Producer assembles telemetry into a set of discrete outcomes: how much is happening in the world, how the colony is doing, server health, what it has recently shown. A discretiser turns continuous board state into one outcome per modality.

uni-minecraft · lib/sp/producer/codec.ex @ 44baf03d5041 (gen2-runtime) — opens the published snapshot ac338733bbba

This is where the design earns its keep. Because the Producer's senses are the show, "drama" is not a metaphor — it is a five-bin outcome computed from live colony state, and it is an observation the agent has beliefs about, not a threshold somebody tuned.

What it can do

Fourteen actions, with designed preferences. Hold. Cut to drama. Cut to subject. B-roll. Widen. Beat on crisis, on the social, on a mind, on a recap. Check health. Restart a camera.

And two more:

  • spawn an agent
  • cull an agent
uni-minecraft · lib/sp/producer/genome.ex @ 44baf03d5041 (gen2-runtime) — opens the published snapshot ac338733bbba

The line that makes the point

Read the dispatch. An expected-free-energy minimum — computed by the same code path that decides whether a bot mines a block — terminates here:

  defp interpret(state, {:spawn}), do: maybe_spawn(state)
  defp interpret(state, {:cull, u}), do: maybe_cull(state, u)
uni-minecraft · lib/sp/producer.ex:354-355 @ 44baf03d5041 — these are the file's own bytes, read at build time. If the range moves, the build fails.

maybe_spawn/1 calls into the colony and a new UNI is born. maybe_cull/2 stops one. The population is bounded, and the bounds are the only thing standing between an inference procedure and an unbounded one, but within them the decision to create or end a living agent is an inference, not a rule.

That is the sentence to sit with. It is also the sentence that ought to make you want to see the bounds, which is why they are constants in the source and not configuration.

The planning horizon is a measured trade

The Producer plans ahead with a depth-limited beam search. The depth is 5 and the beam is 4, and the comment justifying it does not appeal to taste — it gives the measurement: depth 5 costs roughly 1.1 s per beat and buys about 7.5 s of show planned ahead; depth 6 costs 2.3 s and makes the cuts feel sluggish.

uni-minecraft · lib/sp/producer/brain.ex @ 44baf03d5041 (gen2-runtime) — opens the published snapshot ac338733bbba

A number chosen because someone timed it, with the timing left in the file.

It can sense itself

The Producer reads its own error rate. A lock-free counter-based log handler lets it observe how much is going wrong as an observation, not as an exception path.

uni-minecraft · lib/sp/runtime/log_sensor.ex @ 44baf03d5041 (gen2-runtime) — opens the published snapshot ac338733bbba

An agent whose senses include its own failures is a different kind of thing from one that only sees the world.

The narration has no language model

The voice that answers questions about the show answers from live belief state. There is no LLM anywhere in the released product — that is a contract, not an implementation detail.

uni-minecraft · lib/sp/brain/anchor.ex @ 44baf03d5041 (gen2-runtime) — opens the published snapshot ac338733bbba

What is not established

The Producer is the thinnest-tested of the subsystems described on this site: 3 test files against a module of nearly 600 lines. The claim that it is an agent rather than a rules engine is supported by the code path — the same Plan.action_values call, the same EFE — but the quality of its direction is not something any test here establishes.

There is also no architecture diagram for the Producer anywhere in the estate. It is not in the Structurizr model. That is a real gap, recorded here rather than papered over.

Plain — written for this website, not the source document

Written for this website — not the document. This is a plain-language retelling, written to help you meet the document. It is not the source, and it is not evidence. It has not yet been checked by a person. (or choose Precise in the reading-level control above)

Something has to point the cameras, choose the narration and cut between scenes during the live broadcast of the colony. The obvious design would be a set of rules. This one is not built that way. It runs the same reasoning engine as the agents it films, with a different set of things it can do.

Every beat it turns live information about the world into a small set of discrete observations, and it picks from a list of actions: hold, cut to a camera, widen, narrate, check health, restart a camera. Two of those actions create and end agents. So a decision reached the same way a bot decides whether to mine a block can end in an agent being started or stopped.

The page also says, clearly, that this is the least tested part of the system, and that no architecture diagram of it exists anywhere.

Plain · written 2026-08-01 by claude-opus-5 · not yet checked by a person · about the document whose sha256 is d09717934792a4cd

Clear — written for this website, not the source document

Written for this website — not the document. This is a clearer retelling, written to help you meet the document. It is not the source, and it is not evidence. It has not yet been checked by a person. (or choose Precise in the reading-level control above)

The article makes one claim and then spends the rest of the page supporting it and bounding it: the thing directing the live broadcast is not a script. It is an active-inference agent, running the same engine as the agents it films, minimising the same quantity, differing only in what it senses and what it can do.

What it senses is the show itself. Each beat it assembles telemetry into a set of discrete outcomes — how much is happening in the world, how the colony is doing, how healthy the server is, what it has recently shown. That is where the article says the design earns its keep: a quality like drama is not a metaphor here but an observation the agent holds beliefs about, rather than a threshold somebody tuned by hand.

What it can do is a short list of camera and narration moves, plus two that matter more: create an agent, and end one. The article asks you to read the line where that happens, and says the sentence to sit with is that within bounded limits the decision to create or end an agent is an inference rather than a rule. Those bounds are constants in the source rather than configuration, which is the article's answer to the discomfort it has just created.

Two smaller details carry weight. The planning depth was chosen by timing it, and the comment justifying it gives the cost per beat and the amount of show planned ahead at each depth, leaving the measurement in the file. And it can read its own error rate, so its own failures arrive as observations rather than as an exception path.

The narration involves no language model, and the article states that as a contract rather than as a current implementation detail.

The closing section is unusually direct about limits. This is the thinnest-tested subsystem described on the site — a handful of test files against a large module. The claim that it is an agent rather than a rules engine rests on the shared code path, and the quality of its direction is not something any test here settles. There is also no architecture diagram of it anywhere in the estate, which the article records rather than papers over.

Clear · written 2026-08-01 by claude-opus-5 · not yet checked by a person · about the document whose sha256 is d09717934792a4cd