Aube Nova: What Happens When 12 AI Colonists Try to Survive on Another World
A Build Small Hackathon entry — Thousand Token Wood track
For this hackathon, I wanted to build something different. I’ve always been drawn to futurism, smart cities, and optimistic visions of the future, so I decided to explore those ideas through a project.
The goal was to create a futuristic colony with AI at its core. Not a wrapper around an LLM. Not another chatbot. I wanted to build something where the model wasn’t just a feature, but the engine driving the entire experience
Aube Nova is a civilization simulator where 12 autonomous colonists, each running on MiniCPM4.1-8B, arrive on a distant world with one habitat, one greenhouse, and one reactor. They make decisions. Resources deplete. Crises strike. And sometimes, if a researcher proposes the right explanation at the right moment, a breakthrough permanently changes what the colony can do.
The core idea: survival makes stakes legible
Most agent simulations are interesting to engineers and confusing to everyone else. The problem is that in a normal setting (a village, a town) the stakes of any given decision are murky. Why does it matter that Bob bought bread?
In a space colony, the stakes are always clear. Oxygen is the resource that kills you first. When the plant fails, everyone understands. When colonists vote on rationing policy, the drama is self-evident. The setting does narrative work for free.
This was the founding insight of the project: existential constraints generate legible drama. You don’t need to engineer tension, scarcity engineers it for you.
The architecture: small model, big loop
Every colonist is an agent. Each tick (one simulated week), 3 colonists are sampled and asked what they do:
You are Fatima, a researcher on Aube Nova. Year 1.4.
Traits: scientific, cooperative, ambitious.
Colony status: oxygen=61%, food=44%, energy=72%, credits=38%.
ACTIVE CRISIS: food_critical.
Recent events: Guo repaired a crack in the greenhouse dome.
What do you do this week?
The model responds in a structured format:
ACTION: organize
EFFECT: Convened an emergency food committee and proposed
rotating the miner crew into greenhouse duty for two weeks.
That’s it. 80 tokens in, 80 tokens out. Fast enough for real-time interaction, structured enough to parse reliably. The simulation engine applies the action to the world state, adds it to the colonist’s memory, and logs it for the annual Chronicle.
MiniCPM4.1-8B via the HF Inference API handles all agent decisions. It’s an 8B model from OpenBMB, small enough to run fast, capable enough to produce contextually aware, character-consistent responses when given a tight format.
The Chronicle: where the simulation becomes history
Once a year (52 ticks), a different prompt fires: the Chronicle generator. Instead of asking a colonist what they do, it asks an editor to write the front page of the colony’s newspaper:
HEADLINE: Food Committee Averts Starvation; Engineer Promoted
ARTICLE_1: The colony narrowly avoided its first famine in Year 1...
ARTICLE_2: Fatima, whose emergency proposal saved the greenhouse...
This is the emotional core of the demo. Watching the first Chronicle appear, reading what the model decided was historically significant — is the moment the simulation stops feeling like a tech demo and starts feeling like a story.
The Beginning of Infinity mechanic
The crisis injection button is intuitive: problems are part of any simulation. But I wanted an equal and opposite mechanic for progress.
David Deutsch argues in The Beginning of Infinity that all problems are soluble given sufficient explanatory knowledge. The difference between a stagnant society and a dynamic one is not luck, it’s whether they produce and adopt good explanations.
In Aube Nova, “Inject Breakthrough” triggers a period where a colonist proposes an explanation that permanently improves the colony. Not a temporary boost, a durable knowledge gain:
- Closed-Loop Oxygen Recycling → Habitat produces 20% more oxygen, forever
- Hydroponic Yield Optimization → Greenhouse produces 20% more food, forever
- Reactor Load Balancing → 25% better energy efficiency, forever
The asymmetry between crises (acute, temporary) and breakthroughs (permanent) mirrors Deutsch’s point: in the long run, knowledge wins. A colony that survives its crises and generates breakthroughs runs at entirely different productivity levels by Year 10 than one that only avoids disasters.

What I learned building this
Structured output is non-negotiable with small models. Free-form prompts at 8B produce filler: “I chuckle softly and stir the pot.” Constrained formats (ACTION: | EFFECT:) produce useful simulation events. The format is the product.
The resource engine should be LLM-free. All the math, oxygen depletion, food production, building efficiency, runs in pure Python. LLMs are only called for two things: agent decisions and Chronicle generation. This keeps the simulation fast (3 parallel LLM calls per tick, each ~80 tokens) and deterministic in its physics.
Genetic algorithms don’t need LLMs. Trait inheritance when children are born is weighted random sampling from parent traits plus a mutation chance. It’s 10 lines of Python. The cultural profile that emerges over generations, watching the colony shift from “cooperative, risk-averse” to “ambitious, inventive” is one of the most interesting outputs of the simulation, and it comes from pure math.
The setting does half the work. An oxygen crisis or a Chronicle entry. The UI and the code are there to surface those moments, not to create them. Good simulation design is about removing friction between the system’s natural drama and the observer.
Technical summary
| Component | Choice | Why |
|---|---|---|
| Agent model | MiniCPM4.1-8B | Fast, sponsor-aligned, ≤8B |
| Inference | HF Inference API | Free, no GPU needed for decisions |
| Narration | VoxCPM2 + gTTS fallback | GPU when available, graceful degradation |
| UI | Gradio + custom CSS | Space mission aesthetic, custom SVG map |
| Resource sim | Pure Python | Speed, determinism |
| Genetics | Weighted random | No LLM needed |
| Package manager | uv | Fast, reproducible |
Try it
Hit “Advance Week” a few times, then “Inject Crisis”. Watch what the colonists say. Wait for Year 1 to see the first Chronicle.
If those 12 colonists tell you a story worth remembering, that’s the whole project.
Built for the Build Small Hackathon · June 2026 · Thousand Token Wood track
Decision model: openbmb/MiniCPM4.1-8B · Narration: openbmb/VoxCPM2 · UI: Gradio · Simulation: Python
