A newer version of the Gradio SDK is available: 6.20.0
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.
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 |
| 📓 Field Notes | Blog post at HF Blog |
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
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