Aether Garden
Summon and chat with AIβgenerated souls in a fantasy realm
Built by Kavya Bhand & Aadi Joshi
Build Small Hackathon, Thousand Token Wood track
You type a prompt. You get a character sheet. You close the tab. The thing you made stops existing - like it was never real, which, fair, it wasn't.
Aether Garden is the opposite.
It's a persistent fantasy realm where every visitor leaves a mark, the simulation keeps running while you sleep, and the UI is - literally - a leather-bound book you have to open before you're let in.
No dashboard. No tab that says "Chat."
You turn pages. β§
Six spreads. One persistent world.
| Spread | What you'll find |
|---|---|
| πΊοΈ The Realm | An SVG map of eight sacred places, a live chronicle, and a "Realm Pulse" ticker showing what happened while you were away |
| πͺ Explore the Realm | Step into a location - a Three.js diorama you walk through (WASD on desktop, an on-screen joystick on mobile) |
| π Book of Ages | Every arrival, meeting, world event, and milestone, written in styled prose - the world's permanent memory |
| π₯ Souls of the Garden | Every summoned soul, with full backstory, goals, fears, and an evolving memory of what's happened to them |
| πΈοΈ Bonds & Alliances | A 3D web of relationships the simulation forged on its own, without asking anyone's permission |
| β¦ Summon a New Soul | Describe something strange. The Oracle gives it a name, a face, a home, and - eventually - enemies |
Open the cover. Watch the prologue type itself out. Enter the Realm. Close the book when you're done.
Yes, the book closes. Yes, it has a back cover. We are serious about the bit.
"A wizard" is forgotten. "A wizard who collects the sound of doors closing" is remembered.
You describe what you're bringing into the world. MiniCPM3-4B, running on Modal, returns structured JSON - name, appearance, backstory, goals, fears, personality, greeting, and a sacred home location.
The soul is validated, persisted to SQLite, logged in the Book of Ages, and dropped onto the map as a glowing dot at their new home.
You also get a Soul Card - a 1200Γ675 share image. The viral artifact. Post it. Pretend you discovered them.
Every hour, whether anyone is watching:
world.db is backed up to a private Hugging Face DatasetNobody scripts the encounters.
Remove the model and you have a SQLite file full of vibes. The AI is load-bearing.
A blind cartographer you summoned at 2am can meet someone else's Crystal Tree at 4am. You find out when you open the Book.
The HF Space runs CPU-only. All inference and simulation live on Modal serverless GPUs - we had $250 in credits, two jobs, one brain.
| Job | Model | What it does |
|---|---|---|
| π§ Inference | openbmb/MiniCPM3-4B |
Entity generation, interactions, and world events - all structured JSON |
| π¨ Portraits | SDXL-Turbo | Soul faces for cards and diorama cutouts |
| β° Scheduled Tick | Same MiniCPM stack | Hourly run_world_simulation - the world keeps breathing |
Entity generation is one shot: visitor description in, validated EntityProfile out. JSON parse fails? Retry at lower temperature. Still fails? The Oracle apologizes - in character.
1. Load state β current day, active souls grouped by location
2. World event β one AI-generated event, written to the Book
3. Interactions β 2β4 pairs meet, weighted toward Ember Crossroads
4. Memory updates β every involved soul's memory is rewritten, β€150 words
5. Dream fragments β dormant souls in the Valley occasionally dream
6. Lifecycle β active β dormant β legendary transitions
7. Persist β advance the day, recount locations, back up to HF
This is why the world feels alive - history accumulates, relationships form, and souls change based on what happened to them, with zero user input.
π Repository Β· π€ Kavya Bhand Β· π€ Aadi Joshi
The Realm remembereth all things. Close the cover - until thou returnest. β§
Summon and chat with AIβgenerated souls in a fantasy realm