Download
Ultralab
One self-contained file. No runtime to install, no installer, no account. Put it where you want it and run it.
Latest — 2026-09-01
Ultralab 0.9.0
The shelf becomes a shop window, every page explains itself, and a lab can save what it is.
| File | Size | SHA-256 |
|---|---|---|
| Ultralab-0.9.0-win-x64.exe | 136 MB | 6da15fba3cf6d08161550c926f52ec953adae20336a0836b70fcb45275166aab |
| Ultralab-0.9.0-linux-x64 | 128 MB | 2497e101a572952c56f2db88037f5432cd602328100b2f0de164890f83c4f805 |
| Ultralab-0.9.0-scripts.zip | 19 KB | 15e95135dfbe6817cc64b06659e0984e39a9f1eb8f2ea7626204e5e48f3b6825 |
Check what you downloaded
Every file above has a SHA-256 next to it. You are downloading a program that will run on your own machine with access to your own files, so it is worth the twenty seconds.
Windows
Get-FileHash .\Ultralab.exe -Algorithm SHA256
Compare the hash with the one on this page. They match or you do not run it.
Linux
sha256sum ./Ultralab
chmod +x ./Ultralab
The download has no execute bit; that is normal for a file off the web.
Windows will warn you. Ultralab is not code-signed — a certificate costs more per year than this project has ever cost to run. SmartScreen will say "unrecognised app"; More info → Run anyway is the way past it. If that is not a trade you want to make, check the hash above first, or build it yourself from source.
Which one do I want?
| Your situation | Take | Then |
|---|---|---|
| A Windows PC, and the containers will run somewhere else (or in WSL) | win-x64 | Run it. It opens a window. See Getting started. |
| A Linux box that will run the containers itself | linux-x64 | Copy it to /opt/ultralab/, chmod +x, run it. |
| A Linux box with no screen attached | linux-x64 | --provision to create the first login, then --serve for the household page. |
| Windows, and you want the lab on the same machine | scripts | The WSL setup script builds you a Linux lab host and puts the Linux binary on it. |
The lab-host scripts
The scripts archive holds everything that runs beside Ultralab rather than inside it. None of it is required — Ultralab works without any of it — but each one saves an evening:
setup-wsl-lab-host.ps1— turns a Windows machine into a working Linux lab host: WSL2, systemd, Docker, the binary in/opt/ultralab, provisioned and ready. It asks for a password rather than carrying one, and every step that changes the host fails loudly instead of reporting a green tick it has not earned.expose-lab.shandproviders/— an optional front door for the household page, through Cloudflare Tunnel, Tailscale, ngrok, or something you write yourself. Readproviders/README.mdbefore you use any of them.compose.yml— the human-readable template. Ultralab renders its own file with absolute paths; this one is for reading.ultralab.service,ultralab.desktop— systemd unit and desktop launcher for a Linux host.
Or build it yourself
You need the .NET SDK 10 or newer, and nothing else.
git clone https://github.com/stevepcave68-sudo/ultralab.git
cd ultralab
dotnet test tests/Ultralab.Core.Tests/Ultralab.Core.Tests.csproj
dotnet run --project src/Ultralab.Desktop
The published binaries above are made by tools/release.ps1 in that repository,
from the tag matching the version.