UNI Universal Natural Intelligence

Overview · Written article

Install guide

Every prerequisite with the version the estate actually declares, where each is declared, and the three places those declarations disagree with each other.

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.

PARTLY RUNNABLE BY YOU. The Elixir core, the web UI, the flagellum laboratory and most gates install on any machine. The studio, the operator plane and the broadcast need Windows, a GPU, and software you must install yourself. Each section below says which it is.

Every version on this page is quoted from the file that declares it. Where two files disagree, both are shown and the disagreement is named rather than smoothed over — because a prerequisite list that resolves conflicts silently will send you to the wrong version and give you no way to find out why.

The honest headline first

There is no .tool-versions, no .nvmrc and no .python-version anywhere in this estate. Every version below comes from a build file, a CI workflow or prose. Nothing is centrally pinned, and that is why three of them disagree.

Prerequisites

Elixir and OTP — required for everything

declared where
~> 1.18 the core project file
~> 1.17 the web UI's project file
1.18 / OTP 27 continuous integration, both jobs
1.18 / OTP 27 the container image
uni-minecraft · mix.exs @ 44baf03d5041 (gen2-runtime) — opens the published snapshot ac338733bbba

The UI's floor disagrees and it is stale. The core was raised to 1.18 because the control plane calls a module built into 1.18; the UI's file was never raised. CI runs 1.18 for both, so nothing fails — which is precisely why it has stayed wrong. Install 1.18 on OTP 27.

Node

declared where
22 the colony repo's continuous integration
20+ the colony repo's operations prose
>=22.13.0 the flagellum laboratory's package file
nothing the studio's own package file declares no engine at all
uni-flagellum · package.json @ b909801f3db4 (hierarchical-aif/motor-stack) — opens the published snapshot 8b4b5935bcba

Install Node 22 or later. It satisfies every declaration that exists. The 20+ figure is prose and is the oldest of the three.

Python — only for the experiment pipeline

3.12 in continuous integration. The laboratory pins its libraries but not the interpreter; the recorded audit environment was 3.12 and the audit notes it matched by luck rather than by constraint.

uni-flagellum · requirements-experiments.txt @ b909801f3db4 (hierarchical-aif/motor-stack) — opens the published snapshot 8b4b5935bcba

Java — only for Minecraft

Java 11 specifically. The world is pinned to Minecraft 1.16.5, and that version needs Java 11. If you have only a modern JDK this will fail, and the failure will not obviously say so.

uni-minecraft · docs/runbooks/minecraft.md @ 44baf03d5041 (gen2-runtime) — opens the published snapshot ac338733bbba

The rest, by what needs them

software needed for note
Minecraft Java Edition 1.16.5 the colony a paid product; you must own it
.NET 10 the native HUD Windows only
OBS Studio the broadcast must be a native install, not headless — headless renders browser sources black
A local RTSP/RTMP media server the broadcast its path is currently hard-coded to the operator's machine
ffmpeg on PATH the fan-out the console refuses to arm without it and says so
openssl LAN certificates sourced from git-for-windows
PowerShell 5.1 the whole operator plane scripts are ASCII-only by necessity
Podman + systemd the containerised platform Linux node, marked pending

Install: the Elixir core

Nothing to fetch. Zero dependencies by construction.

mix compile
mix test

The exact ordered sequence continuous integration runs, which is the sequence to copy:

  1. compile with warnings as errors, forced
  2. check formatting
  3. mix test
  4. regenerate the golden artifact
  5. git diff --exit-code on it — the drift guard
  6. record a run
  7. verify the file just written

Steps 4 and 5 are a pair and so are 6 and 7. Running either half alone proves nothing.

uni-minecraft · .github/workflows/ci.yml @ 44baf03d5041 (gen2-runtime) — opens the published snapshot ac338733bbba

There is one thing worth knowing about that workflow: it declares which branches it runs on, and for a long time the real working branch was not among them — so it had never run, once, on any commit. The fix is in the file; the lesson is that a green badge and a configured pipeline are different claims.

Install: the web UI

This is the only part with package dependencies.

cd ui && mix deps.get && mix phx.server

Then open the UI on port 4000.

Install: Minecraft — one time, in this order

bash scripts/minecraft_setup.sh

This downloads the server jar. It deliberately does not accept the licence for you:

# NOTE: this DOWNLOADS the Paper server jar (~40MB from papermc.io) and you must
# accept Mojang's EULA yourself (it is your legal agreement) before the server
# will run. This script does NOT accept the EULA for you.
uni-minecraft · scripts/minecraft_setup.sh:7-9 @ 44baf03d5041 — these are the file's own bytes, read at build time. If the range moves, the build fails.

So the next step is yours:

echo "eula=true" > mcserver/eula.txt

Then generate the world:

cd mcserver && java -jar paper.jar nogui

If the jar download 404s, the build number has aged out; the script takes an override environment variable and the runbook gives the form.

Change the RCON password before you do anything else

The setup script writes a server properties file containing a default RCON password, and several documents in this estate reprint it. RCON is remote console access to your Minecraft server. Open mcserver/server.properties, set rcon.password to something you choose, and use that value wherever a command below wants a password.

This is not a hypothetical tidiness point. On 2026-08-01 a scan of this very site found that default published on six pages, alongside a shared secret for the Erlang runtime on nine more — both are now redacted, and the publishing gate has a rule for credential assignments that it did not have before. A default that ships in a setup script is a default that ends up in production somewhere.

Install: the flagellum laboratory

npm install
npm run dev

Release validation, in this order:

npm ci
npm run lint
npx tsc --noEmit
npm audit

Production and development dependency risk are reported separately, because a development-only advisory and a runtime advisory are different facts and merging them loses the one that matters.

Install: the studio and the operator plane

Windows only. Read the broadcast suite before running any of it, and set an OBS WebSocket password first.

powershell -File viewer/gen_auto_cert.ps1
powershell -File viewer/install_lan_cert.ps1

The second one installs a local self-signed certificate into the current user's trust store. Without it, OBS's embedded browser refuses the local pages and renders them black — which looks like a broken overlay and is a certificate problem.

DNS routing on Windows, if you need it, requires an elevated shell and is reversible:

powershell -File viewer/apply_nrpt.ps1
powershell -File viewer/diag_dns.ps1

Then the whole stack:

powershell -File viewer/studio_up.ps1

Install: the native HUD

Windows only, and it needs an elevated shell because it registers a real service and a scheduled task.

powershell -File viewer/hud/native/hud_widget_boot_install.ps1
powershell -File viewer/hud/native/_install_widget_launcher_elevated.ps1
powershell -File viewer/hud/native/_swap_service_elevated.ps1
powershell -File viewer/hud/hud_service_install.ps1
powershell -File viewer/hud/hud_service_uninstall.ps1

The service installer above is retired and refuses to run — it is listed because it still exists and you will find it. The native path replaced it.

The three declarations that disagree

Stated together, because they are the ones most likely to cost you an hour:

  1. Elixir floor — core says 1.18, the UI says 1.17. Use 1.18.
  2. Node — CI says 22, prose says 20+, the laboratory says 22.13+. Use 22 or later.
  3. Python — 3.12 in CI, unpinned in the laboratory. Use 3.12.

What you will not be able to install

Stated plainly, because this is the part most install guides leave out.

  • The source repositories are private. The first command in the estate's own launch guide is a clone that will ask a stranger for credentials they do not have. This documentation site is public; the code behind it is not, yet.
  • The private network estate does not exist for you. Several components address hosts on a WireGuard mesh with a private DNS zone. On any other machine those resolve to nothing.
  • Absolute paths are hard-coded in several places — the OBS binary, the media server binary, a log directory, and the cross-repository link that draws the project plan. On any other machine, the last of those renders an empty plan rather than failing loudly.
  • The observed-experiment reproduction needs a dataset that is not redistributed, and the widest cross-study check needs a multi-gigabyte raw cache.
  • Go-live needs a presence token that nothing in the repository mints, on purpose. See the broadcast suite.
  • Three units of the containerised platform were never written. The multilingual long-form broadcast cannot be started by anyone, including the operator.

Next

  • Run it — every entry point with its real command.
  • Maintenance — watchdogs, health checks, backups and what breaks.

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)

This is the prerequisite list, and its distinguishing feature is that it does not pretend the project agrees with itself. Every version on the page is quoted from the file that declares it. Where two files disagree, both are shown and the disagreement is named rather than smoothed over.

It opens by admitting that nothing here is centrally pinned, which is why three of the declarations conflict. It then lists what each part needs. A language and its platform, a runtime for the scripting parts, and an interpreter for the experiment pipeline. An older platform version for the game, and a set of paid or platform-specific things for the studio. A container stack for one part is listed too, and marked pending.

It gives install steps for each part in turn, and tells you to change a default password that ships in a setup script before anything else. It ends with a plain list of what you will not be able to install at all, because the source repositories are not public and some of the data is not redistributed.

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

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)

This is the prerequisite page, and what makes it unusual is stated in its second paragraph. Every version here is quoted from the file that declares it, and where two files disagree both are shown and the disagreement is named rather than smoothed over. A list that resolves conflicts silently will send you to the wrong version and give you no way to find out why.

The honest headline comes first. Nothing in the estate is centrally pinned; there is no single version file of any of the usual kinds. That is why three declarations conflict. For the main language, the core project and the web interface declare different floors. The newer one is right and the older is stale but harmless, because the automated pipeline runs the newer for both — which is precisely why it has stayed wrong. For the scripting runtime, three different figures are declared in three places and one file declares nothing at all. For the interpreter, the pipeline pins a version while the laboratory pins its libraries and not the interpreter itself, and a recorded audit notes that its environment matched by luck rather than by constraint. The game needs a specific older platform version, and the page warns that the failure will not obviously say so.

The rest is listed by what needs it. The game itself, a paid product you must own. A desktop framework for the widget. The studio software, which must be a native install rather than a headless one. Then a media server, a media converter on the path, a certificate tool, a shell, and a container stack for the design that is marked pending.

Install instructions follow, part by part. The core fetches nothing. The exact ordered sequence the automated pipeline runs is given as the sequence to copy, with a note that two of its pairs of steps are pairs — running either half alone proves nothing. A quiet lesson is attached: that pipeline declares which branches it runs on, and for a long time the real working branch was not among them, so it had never run once on any commit. A green badge and a configured pipeline are different claims.

The game setup deliberately does not accept the licence for you. And before anything else, the page tells you to change a default remote-console password that ships in the setup script. It notes that a scan of this very site found that default published on several pages alongside another shared secret, that both are now redacted, and that the publishing check gained a rule it did not have before.

It closes with what you will not be able to install. The source repositories are private, the private network does not exist for you, and several absolute paths are hard-coded. The observed-experiment reproduction needs a dataset that is not redistributed. Going live needs something nothing in the repository can mint, and three units of the containerised design were never written.

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