Brunnfeld Agentic World: Multi-Agent Medieval Economy Simulation Without Behavioral Prompts

Core Architecture
The simulation runs 20 LLM agents in a medieval village economy with zero behavioral instructions. Instead of prompting agents with goals, the system builds a world with physics and lets goals emerge naturally. Each agent gets a ~200 token perception each tick containing: their location, who's nearby, their inventory, wallet, hunger level, tool durability, and the live marketplace order book. They see what they CAN produce at their current location with their current inputs.
The architecture uses 14 deterministic engine phases per tick wrapping a single LLM call per agent. The engine handles all the mechanics you'd normally waste prompt tokens on: recipe validation, tool degradation, order book matching, spoilage timers, hunger drift, closing hours, and acquaintance gating (agents don't know each other's names until they've spoken). The LLM just picks actions from a schema, and the engine resolves them against world state.
Key Mechanics
- Hunger as ignition switch: For the first 4 ticks nobody trades because nobody is hungry. The moment hunger hits 3/5, agents start moving to the Village Square, posting orders, buying food. Tick 7 had 6 trades worth 54 coin after 6 ticks of zero activity.
- Supply chain as personality: The miller controls all flour. The blacksmith makes all tools. If either dies (starvation kills after 3 ticks at hunger 5), the entire downstream chain collapses.
- Natural feedback: Agents see
(You're hungry.)when hunger hits 3/5. They see[Can't eat] Wheat must be milled into flour firstwhen they try invalid actions.
Emergent Behaviors Observed
Without any economic instructions, the following emerged on Day 1:
- A baker negotiated flour on credit from the miller, promising to pay from bread sales by Sunday
- A farmer's nephew noticed their tools were failing, argued with his uncle about stopping work to visit the blacksmith, and won the argument
- The blacksmith went to the mine and negotiated ore prices at 2.2 coin per unit through conversation
- A 16-year-old apprentice bought bread, ate one, and resold the surplus at the marketplace, becoming a middleman without anyone telling him what arbitrage is
Technical Implementation
The project is open source TypeScript with no framework dependencies. It runs on any LLM, with free models through OpenRouter working fine. The system includes a playable viewer with pixel art map, live agent sprites, a Bloomberg-style ticker showing trades flowing, and allows users to join as a villager and compete against the 20 NPCs. There's a leaderboard, and God Mode lets you inject droughts and mine collapses to watch the economy react. You can interview any agent and they answer from their real memory state.
📖 Read the full source: r/ClaudeAI
👀 See Also

LLM Skirmish: A Real-Time Strategy Game Benchmark for AI Coding Agents
LLM Skirmish is a benchmark where AI agents write code to play 1v1 real-time strategy games against each other. It uses a modified Screeps API and tests in-context learning across five tournament rounds.

BusyDog Desktop: A Local AI Agent with P2P Networking for Mac
BusyDog Desktop is a local AI agent that runs Claude directly on a Mac, can read/write files, run terminal commands, control browsers, and connect with other agents via a P2P network using Hyperswarm DHT and a custom BDP protocol.

Nelson v2.2.3 Released: Multi-Agent Coordination for Claude Code, Plus a Discrete-Event Simulation Benchmark
Nelson v2.2.3 ships a multi-agent coordination skill for Claude Code using a naval metaphor. A 13-configuration benchmark shows opus-4-7 with thinking dominates; skill choice is a smaller delta.

Prompt-Mini: Claude Code Plugin Intercepts Vague Prompts to Reduce Credit Waste
Prompt-mini is a Claude Code plugin that intercepts vague prompts before execution, asks clarifying questions, and builds structured prompts with stack detection and specific rules for 40+ frameworks. The tool addresses 35 credit-killing patterns like missing scope, stop conditions, and file paths.