| --- |
| title: Tiny Civilization — The Tinywick Hollow Gazette |
| emoji: 🦊 |
| colorFrom: yellow |
| colorTo: red |
| sdk: gradio |
| sdk_version: "6.17.3" |
| app_file: app.py |
| pinned: true |
| license: mit |
| short_description: Persistent woodland civilisation sim. 1.5B model. |
| tags: |
| - build-small-hackathon |
| - thousand-token-wood |
| - tiny-titan |
| - off-the-grid |
| - off-brand |
| - best-agent |
| - best-demo |
| - field-notes |
| - sharing-is-caring |
| - simulation |
| - creative-writing |
| - gradio |
| - track:wood |
| - achievement:offgrid |
| - achievement:offbrand |
| - achievement:sharing |
| - achievement:fieldnotes |
| --- |
| |
| # 🦊 Tiny Civilization — The Tinywick Hollow Gazette |
|
|
| > *A persistent woodland simulation where four AI agents invent absurd civilisation events — and you read about them in the daily newspaper.* |
|
|
| **[Try it →](https://huggingface.co/spaces/build-small-hackathon/tiny-civilization)** |
|
|
| Built for the **Build Small Hackathon 2026 — Thousand Token Wood** track. |
|
|
| **Demo video:** https://drive.google.com/file/d/1umIJRb_OYZ2gxcbliFNa_YmhGK_y_0ik/view?usp=sharing |
| **Social post:** https://x.com/iagained/status/2066384319929778645?s=20 |
| **Blog post:** https://huggingface.co/blog/build-small-hackathon/tiny-civilization |
| **Agent traces:** https://huggingface.co/datasets/build-small-hackathon/tiny-civilization-traces |
|
|
| --- |
|
|
| ## What is this? |
|
|
| Every time you click **Advance Day**, four woodland creatures run as independent AI agents: |
|
|
| | Agent | Personality | |
| |---|---| |
| | 🦊 **Reginald Fox** | Charming, dishonest, obsessed with certificates | |
| | 🦡 **Beatrice Badger** | Gruff rule-keeper, secretly a poet | |
| | 🐿️ **Cornelius Squirrel** | Anxious inventor, repeats himself! | |
| | 🐀 **Millicent Mole** | Philosophical, speaks in riddles | |
|
|
| Then a fifth **Narrator agent** writes a formal newspaper front page treating the whole affair with the utmost journalistic gravity. |
|
|
| --- |
|
|
| ## Features |
|
|
| | Feature | Detail | |
| |---|---| |
| | 🗞️ **Animated Newspaper** | Paper drops in, headline types itself, ink fades in | |
| | 🔊 **Read Aloud** | Browser TTS reads today's front page — no API needed | |
| | 🎵 **Sound Effects** | Paper/press sounds via Web Audio API (synthesised) | |
| | 🐿️ **Running Squirrel** | Occasionally sprints across the bottom of the screen | |
| | ⏳ **Loading Messages** | Rotating funny messages while the model runs | |
| | 📜 **Archive** | Browse every past front page | |
| | 🗣️ **Spread a Rumour** | Pick a creature + rumour type — affects the next day | |
| | 🎁 **Donate a Weird Object** | Items enter the creature economy | |
| | ⚖️ **Propose a Law** | Shift the legal framework of the Hollow | |
| | 🖼️ **Share as Image** | Download a PNG of today's front page | |
| | 🎮 **Konami Code** | `↑↑↓↓←→←→BA` — reveals all agent system prompts | |
| | 💾 **Persistent SQLite** | Civilisation remembers history across sessions | |
|
|
| --- |
|
|
| ## Model |
|
|
| - **Primary**: `Qwen/Qwen2.5-1.5B-Instruct` — **1.5B parameters** ≤ 4B → 🐜 Tiny Titan |
| - **Fallback**: `Qwen/Qwen2.5-3B-Instruct` — 3B parameters, also ≤ 4B |
| - Runs **100% locally** via ZeroGPU — zero external AI APIs 🔌 |
| - ~520 tokens per day across 4 inference calls (~15 seconds on T4) |
|
|
| --- |
|
|
| ## Badge Claims |
|
|
| | Badge | Qualification | |
| |---|---| |
| | 🐜 **Tiny Titan** | Qwen2.5-1.5B = 1.5B params, well under the 4B cap | |
| | 🔌 **Off the Grid** | No cloud AI APIs — model runs locally on ZeroGPU | |
| | 🎨 **Off-Brand** | Fully custom newspaper UI: UnifrakturMaguntia font, two-column CSS layout, CSS keyframe animations, Web Audio API sounds — zero default Gradio styling visible | |
| | 🤖 **Best Agent** | 5 independent agents: Fox, Badger, Squirrel, Mole (distinct system prompts + relationship scores), plus Narrator | |
| | 🎬 **Best Demo** | Demo video + social post + working Space | |
| | 📡 **Sharing is Caring** | Agent traces exported at [HF Dataset](https://huggingface.co/datasets/build-small-hackathon/tiny-civilization-traces) | |
| | 📓 **Field Notes** | Blog post at [HF Blog](https://huggingface.co/blog/build-small-hackathon/tiny-civilization) | |
|
|
| --- |
|
|
| ## Architecture |
|
|
| ``` |
| advance_day() ←── @spaces.GPU(duration=60) |
| │ |
| ├─ call_agent("fox", situation_prompt) → ~80 tokens |
| ├─ call_agent("badger", situation_prompt) → ~80 tokens |
| ├─ call_agent("squirrel", situation_prompt) → ~80 tokens |
| └─ generate_newspaper(events_summary) → ~280 tokens |
| │ |
| └─ Structured output: |
| HEADLINE / article / WEATHER / FOX / BADGER / SQUIRREL / MOLE |
| ``` |
|
|
| Each agent has a 4-sentence system prompt defining their personality. The narrator uses a rigid output schema with a worked example (few-shot) so the 1.5B model follows the format ~90% of the time, with graceful fallbacks for the rest. |
|
|
| Creature relationships drift based on event type (+5 trade, +7 invention, −4 gossip, −10 feud) and feed back into future agent prompts — emergent character dynamics over time. |
|
|
| --- |
|
|
| ## Persistent History |
|
|
| Everything is stored in **SQLite**: days, events, creature relationships, inventory, nudges. The newspaper prompt includes the last two published headlines so the model writes *"In a development reminiscent of last Tuesday's acorn scandal..."* — history actually matters. |
|
|
| --- |
|
|
| ## Database Schema |
|
|
| ```sql |
| CREATE TABLE days (day_number, headline, full_newspaper_text, timestamp); |
| CREATE TABLE events (id, day_number, actor, action, target, description); |
| CREATE TABLE creatures(name, relationship_scores JSON, inventory JSON); |
| CREATE TABLE nudges (id, day_number, nudge_type, nudge_value); |
| ``` |
|
|
| --- |
|
|
| ## Easter Egg |
|
|
| Type the **Konami Code** while the app is focused: `↑ ↑ ↓ ↓ ← → ← → B A` |
|
|
| A modal appears with all five raw system prompts — the behind-the-scenes look at what drives the simulation. Only the woodland elite know this. |
|
|
| --- |
|
|
| *"All things are connected underground." — Millicent Mole, Day 1* |