Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,9 @@ name: CI

on:
push:
branches: [main, master]
branches: [main, master, variant/minicpm]
pull_request:
branches: [main, master, variant/minicpm]

jobs:
test:
Expand Down
7 changes: 7 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,10 +1,17 @@
.env
.env.*
!.env.example
data/
__pycache__/
*.pyc
.DS_Store
*.db
.gradio/
.venv/
.pytest_cache/
node_modules/
traces/
training_data/
assets/_diorama_shot.png
assets/_*.png
assets/verify/
1 change: 1 addition & 0 deletions .modalignore
Original file line number Diff line number Diff line change
Expand Up @@ -8,4 +8,5 @@ data/
*.db
.gradio/
traces/
node_modules/
assets/verify/
132 changes: 0 additions & 132 deletions DEPLOYMENT.md

This file was deleted.

81 changes: 0 additions & 81 deletions DEVELOPMENT_LEFT.md

This file was deleted.

17 changes: 9 additions & 8 deletions FIELD_NOTES.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

Most AI demos forget. You type a prompt, get a character sheet, close the tab. The output dies with the session.

Aether Garden is the opposite: a **persistent fantasy world** running on a 7B model (Qwen 2.5 7B Instruct on Modal). When you open it, the world is already days old. Other visitors have summoned strange souls. An hourly simulation has been writing history whether anyone is watching.
Aether Garden is the opposite: a **persistent fantasy world** running on MiniCPM 3-4B (OpenBMB) via Modal. When you open it, the world is already days old. Other visitors have summoned strange souls. An hourly simulation has been writing history whether anyone is watching.

The AI is **load-bearing**. Remove inference and you have a database of text — not a world.

Expand All @@ -22,7 +22,7 @@ The AI is **load-bearing**. Remove inference and you have a database of text —
- Custom Gradio UI with mystical CSS, SVG world map, Realm Pulse live ticker
- **Three.js diorama** per location: cutout souls, bloom, particles, simulation-synced behaviors (meeting, sleeping, enthroned, relationship-aware drift)
- **Soul Cards**: downloadable 1200×675 share images — the viral artifact
- **Bonds tab**: SVG relationship graph of every alliance and rivalry the simulation forged
- **Bonds tab**: 3D relationship graph of every alliance and rivalry the simulation forged

## What surprised us

Expand All @@ -36,22 +36,23 @@ The AI is **load-bearing**. Remove inference and you have a database of text —
| Layer | Choice |
|-------|--------|
| Frontend | Gradio 5 + custom HTML/CSS + Three.js iframe |
| Inference | Qwen 2.5 7B on Modal A10G |
| Inference | MiniCPM3-4B on Modal A10G |
| Portraits | SDXL-Turbo |
| Database | SQLite WAL |
| Backup | Private HF Dataset |
| Simulation | Modal scheduled function |

## What we'd do next

- Fine-tune Qwen 2.5 3B on accumulated entity generations for sharper voice
- Fine-tune MiniCPM on accumulated entity generations for sharper voice
- Real-time WebSocket presence so visitors see arrivals live
- glTF characters instead of 2.5D cutouts

## Prize strategy and deliberate tradeoffs
## Prize strategy

- We intentionally optimized for Thousand Token Wood + Off-Brand + Modal + Best Agent.
- We did not pursue Off the Grid, Tiny Titan, or llama.cpp because they would reduce the always-on, shared-world behavior that is core to this project.
- Our remaining bonus-quest path is: publish fine-tuned model, publish public traces dataset, publish this report as a Hub blog post.
- Primary targets: Thousand Token Wood, Off-Brand, Modal, Best Agent, Best MiniCPM, Tiny Titan
- Optional badges: Well-Tuned (fine-tuned model), Sharing is Caring (public traces), Field Notes (this post)
- Not pursued: Off the Grid (would sacrifice always-on shared world)

## Try it

Expand Down
Loading
Loading