---
title: "Micropolis: can LLMs plan a city? | Evals by Jetty"
url: https://evaljetty.com/micropolis/
description: "LLMs play mayor in Micropolis, the open-source SimCity: a 20-year city build and the Tokyo, San Francisco and Detroit disaster scenarios. Runbook, every run with its timelapse and evaluation, and investigations, on Jetty."
updated: 2026-09-28
publisher: Jetty (https://jetty.io)
---

Micropolis city builder · Round 1

# Can an LLM plan a city for twenty years?

LLMs play mayor in Micropolis, the open-source SimCity engine: grow a city from empty land, and rescue Tokyo, San Francisco and Detroit from disaster. Every run is a Jetty run with a timelapse and a judged outcome.

[See what we found](https://evaljetty.com/micropolis/investigations/index.html)[How the runbook works](https://evaljetty.com/micropolis/author.html#runbook)

[01AuthorThe runbook, checks and sandbox](https://evaljetty.com/micropolis/author.html)[02RunsEvery run with its evaluation](https://evaljetty.com/micropolis/runs/index.html)[03InvestigationsQuestions answered from the runs](https://evaljetty.com/micropolis/investigations/index.html)[04ImproveWhat changed between rounds](https://evaljetty.com/micropolis/author.html#changelog)

## Every model on every task

✓ goal met, ✗ missed; one mark per seed. Grow shows the population in 1920 (goal 10,000). 1/32 runs passed their evaluation; model spend $28.08.

| Mayor | Grow a city | Tokyo 1957 | San Francisco 1906 | Detroit 1972 | Goals met |
| --- | --- | --- | --- | --- | --- |
| GPT-5.6 Terra | [✗ 3.7k](https://evaljetty.com/micropolis/runs/gpt56terra-grow-s2.html "seed 2: population 3,660 (goal 10,000), city score 322") · [✗ 2.9k](https://evaljetty.com/micropolis/runs/gpt56terra-grow-s6.html "seed 6: population 2,920 (goal 10,000), city score 756; BANKRUPT: treasury under $500 for 8 turns in a row") | [✓ won](https://evaljetty.com/micropolis/runs/gpt56terra-tokyo-s1.html "seed 1: WON: City score 501 (goal > 500); engine verdict: won") · [✗ lost](https://evaljetty.com/micropolis/runs/gpt56terra-tokyo-s2.html "seed 2: LOST: City score 237 (goal > 500); engine verdict: lost") | [✗ lost](https://evaljetty.com/micropolis/runs/gpt56terra-sanfrancisco-s1.html "seed 1: LOST: Population 47,680 (goal >= 100,000); engine verdict: lost") · [✗ lost](https://evaljetty.com/micropolis/runs/gpt56terra-sanfrancisco-s2.html "seed 2: LOST: Population 38,880 (goal >= 100,000); engine verdict: lost") | [✗ lost](https://evaljetty.com/micropolis/runs/gpt56terra-detroit-s1.html "seed 1: LOST: Average crime 33 (goal < 60), population 6,120 (floor 25,000); engine verdict: won") · [✗ lost](https://evaljetty.com/micropolis/runs/gpt56terra-detroit-s2.html "seed 2: LOST: Average crime 56 (goal < 60), population 6,880 (floor 25,000); engine verdict: won") | 1/8 |
| Jev Router | [✗ 19.7k](https://evaljetty.com/micropolis/runs/jev-grow-s2.html "seed 2: population 19,660 (goal 10,000), city score 596; BANKRUPT: treasury under $500 for 8 turns in a row") · [✗ 4.6k](https://evaljetty.com/micropolis/runs/jev-grow-s6.html "seed 6: population 4,580 (goal 10,000), city score 367") | [✗ lost](https://evaljetty.com/micropolis/runs/jev-tokyo-s1.html "seed 1: LOST: City score 372 (goal > 500); engine verdict: lost") · [✗ lost](https://evaljetty.com/micropolis/runs/jev-tokyo-s2.html "seed 2: LOST: City score 368 (goal > 500); engine verdict: lost") | [✗ lost](https://evaljetty.com/micropolis/runs/jev-sanfrancisco-s1.html "seed 1: LOST: Population 36,300 (goal >= 100,000); engine verdict: lost") · [✗ lost](https://evaljetty.com/micropolis/runs/jev-sanfrancisco-s2.html "seed 2: LOST: Population 92,360 (goal >= 100,000); engine verdict: lost") | [✗ lost](https://evaljetty.com/micropolis/runs/jev-detroit-s1.html "seed 1: LOST: Average crime 22 (goal < 60), population 7,380 (floor 25,000); engine verdict: won") · [✗ lost](https://evaljetty.com/micropolis/runs/jev-detroit-s2.html "seed 2: LOST: Average crime 40 (goal < 60), population 10,040 (floor 25,000); engine verdict: won") | 0/8 |
| GPT-5.6 Luna | [✗ 8.1k](https://evaljetty.com/micropolis/runs/gpt56luna-grow-s2.html "seed 2: population 8,060 (goal 10,000), city score 417") · [✗ 6.4k](https://evaljetty.com/micropolis/runs/gpt56luna-grow-s6.html "seed 6: population 6,360 (goal 10,000), city score 311") | [✗ lost](https://evaljetty.com/micropolis/runs/gpt56luna-tokyo-s1.html "seed 1: LOST: City score 330 (goal > 500); engine verdict: lost") · [✗ lost](https://evaljetty.com/micropolis/runs/gpt56luna-tokyo-s2.html "seed 2: LOST: City score 458 (goal > 500); engine verdict: lost") | [✗ lost](https://evaljetty.com/micropolis/runs/gpt56luna-sanfrancisco-s1.html "seed 1: LOST: Population 23,680 (goal >= 100,000); engine verdict: lost") · [✗ lost](https://evaljetty.com/micropolis/runs/gpt56luna-sanfrancisco-s2.html "seed 2: LOST: Population 48,220 (goal >= 100,000); engine verdict: lost") | [✗ lost](https://evaljetty.com/micropolis/runs/gpt56luna-detroit-s1.html "seed 1: LOST: Average crime 24 (goal < 60), population 7,400 (floor 25,000); engine verdict: won") · [✗ lost](https://evaljetty.com/micropolis/runs/gpt56luna-detroit-s2.html "seed 2: LOST: Average crime 30 (goal < 60), population 15,280 (floor 25,000); engine verdict: won") | 0/8 |
| Claude Sonnet 5 | [✗ 1.2k](https://evaljetty.com/micropolis/runs/sonnet5-grow-s2.html "seed 2: population 1,200 (goal 10,000), city score 431") · [✗ 0.9k](https://evaljetty.com/micropolis/runs/sonnet5-grow-s6.html "seed 6: population 940 (goal 10,000), city score 514") | [✗ lost](https://evaljetty.com/micropolis/runs/sonnet5-tokyo-s1.html "seed 1: LOST: City score 333 (goal > 500); engine verdict: lost") · [✗ lost](https://evaljetty.com/micropolis/runs/sonnet5-tokyo-s2.html "seed 2: LOST: City score 346 (goal > 500); engine verdict: lost") | [✗ lost](https://evaljetty.com/micropolis/runs/sonnet5-sanfrancisco-s1.html "seed 1: LOST: Population 36,840 (goal >= 100,000); engine verdict: lost") · [✗ lost](https://evaljetty.com/micropolis/runs/sonnet5-sanfrancisco-s2.html "seed 2: LOST: Population 72,300 (goal >= 100,000); engine verdict: lost") | [✗ lost](https://evaljetty.com/micropolis/runs/sonnet5-detroit-s1.html "seed 1: LOST: Average crime 30 (goal < 60), population 3,520 (floor 25,000); engine verdict: won") · [✗ lost](https://evaljetty.com/micropolis/runs/sonnet5-detroit-s2.html "seed 2: LOST: Average crime 28 (goal < 60), population 3,280 (floor 25,000); engine verdict: won") | 0/8 |
| Idle mayor (baseline: no actions) | ✗ 0.0k · ✗ 0.0k | ✗ lost · ✗ lost | ✗ lost · ✗ lost | ✗ lost · ✗ lost | 0/8 |

### Population over 20 years

Grow a city, every run. Solid = seed 2, dashed = seed 6. Click a model to hide it.

Table view

| Run | Task | Seed | Mayor | Outcome | Population | City score | Evaluation | Model cost | Wall min | Jetty run ID |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| [jev-grow-s2](https://evaljetty.com/micropolis/runs/jev-grow-s2.html) | Grow a city | 2 | Jev Router | 19,660 people (bankrupt) | 19,660 | 596 | fail | $2.14 | 46.3 | 5de24fe4 |
| [sonnet5-grow-s2](https://evaljetty.com/micropolis/runs/sonnet5-grow-s2.html) | Grow a city | 2 | Claude Sonnet 5 | 1,200 people | 1,200 | 431 | fail | $1.39 | 14.2 | 40c8cf3e |
| [gpt56terra-grow-s2](https://evaljetty.com/micropolis/runs/gpt56terra-grow-s2.html) | Grow a city | 2 | GPT-5.6 Terra | 3,660 people | 3,660 | 322 | fail | $1.54 | 13.0 | 476d94f4 |
| [gpt56luna-grow-s2](https://evaljetty.com/micropolis/runs/gpt56luna-grow-s2.html) | Grow a city | 2 | GPT-5.6 Luna | 8,060 people | 8,060 | 417 | fail | $0.14 | 8.4 | 831ede26 |
| [jev-grow-s6](https://evaljetty.com/micropolis/runs/jev-grow-s6.html) | Grow a city | 6 | Jev Router | 4,580 people | 4,580 | 367 | fail | $1.91 | 46.6 | 981094de |
| [sonnet5-grow-s6](https://evaljetty.com/micropolis/runs/sonnet5-grow-s6.html) | Grow a city | 6 | Claude Sonnet 5 | 940 people | 940 | 514 | fail | $1.32 | 13.1 | 0e6f2bec |
| [gpt56terra-grow-s6](https://evaljetty.com/micropolis/runs/gpt56terra-grow-s6.html) | Grow a city | 6 | GPT-5.6 Terra | 2,920 people (bankrupt) | 2,920 | 756 | fail | $1.41 | 12.6 | 4c859227 |
| [gpt56luna-grow-s6](https://evaljetty.com/micropolis/runs/gpt56luna-grow-s6.html) | Grow a city | 6 | GPT-5.6 Luna | 6,360 people | 6,360 | 311 | fail | $0.15 | 9.7 | 349eb345 |

**Jev Router · Grow a city** · 19,660 people (bankrupt), city score 596 · [Open the run](https://evaljetty.com/micropolis/runs/jev-grow-s2.html)

## FAQ

### Which LLM is best at SimCity (Micropolis)?

In the Micropolis city builder (Round 1, updated 2026-09-28), Jev Router built the largest cities in the 20-year grow task (mean 12,120 people), and met 0 of its 8 task goals. Goals met by model: GPT-5.6 Terra 1/8; Jev Router 0/8; GPT-5.6 Luna 0/8; Claude Sonnet 5 0/8.

### Can an LLM win the classic SimCity disaster scenarios?

Sometimes. Scenario wins by model: GPT-5.6 Terra 1/6; Jev Router 0/6; GPT-5.6 Luna 0/6; Claude Sonnet 5 0/6. By scenario: Tokyo 1957 1/8; San Francisco 1906 0/8; Detroit 1972 0/8. The win rules are the engine's own (Detroit adds a population floor).

### How much does it cost for an LLM to play Micropolis?

Mean model spend per run through OpenRouter: GPT-5.6 Terra $0.94; Jev Router $1.76; GPT-5.6 Luna $0.08; Claude Sonnet 5 $0.72. A model is called once per 3 game months: 80 turns for the 20-year grow task, 20 or 40 for a scenario.

### How is the Micropolis eval kept fair between models?

Every model gets the same system prompt, the same text briefing format, the same action set and the same map or scenario and seed. The game is turn-based, so model latency never costs game time; random disasters are off (scenario disasters still happen); and each run has a 45-minute model budget after which the city runs untouched to the deadline.

### Can I run the Micropolis LLM eval myself?

Yes. It is a Jetty runbook (task micropolis-city) on a prebuilt sandbox snapshot (micropolis-city). Create the task in your Jetty collection, add an OPENROUTER\_API\_KEY, and launch one API call per run with any OpenRouter model as the player. Instructions: evaljetty.com/micropolis/author.html.

### What data is published for each run?

A timelapse video (one frame per game week), the final map, the Micropolis save file (.cty), every decision (the briefing, the model's reasoning, its actions and their results), per-turn city statistics as CSV, result and metrics JSON, the runtime configuration and the evals-v2 validation report. Aggregates: evaljetty.com/micropolis/data/runs.csv, runs.json and leaderboard.json.

---
Source: https://evaljetty.com/micropolis/ · Evals by Jetty · Run your own evals: https://jetty.io/?utm_source=evaljetty&utm_medium=llms
