On Automatic
Local-first overworld prep for DFRPG & GURPS

Map the region. Skip the blank hexes.

Give it a seed and a few knobs. A deterministic generator lays down terrain, rivers, settlements, dungeon sites and roads, then writes the whole region into an open Campaign Vault — with optional local AI to name and describe what the survey found.

Free early-access builds (0.1.x) · Windows, macOS & Linux · optional local AI built in · no account, no cloud — your prep stays on your machine

Hexes on Automatic showing the generation toolbar, a colored hex map with rivers, roads and labeled settlements, and the region gazetteer panel.
One workspace. Seed, survey, polish, export.
Deterministicsame seed, same region
Vault-nativeopen Obsidian-ready markdown
Local-firstno account, no cloud required
Feeds Dungeonsa work order per dungeon site
How it works

From one seed to a region with names on it.

Hexes does the geography, the placement and the paperwork. The judgment calls stay yours, because they only make sense with your campaign on the table.

01 / SEED

Set the terms

Pick a seed, or roll one. Set columns and rows, then push water, ruggedness, moisture, settlements and sites toward the region you have in mind.

02 / SURVEY

Generate the geography

Elevation, moisture and temperature fields pick a biome for every hex. Rivers trace downhill, settlements land where the scoring says people would, and roads join them.

03 / READ

Inspect any hex

Click a hex for its terrain, features, obstacles and residents. The gazetteer keeps settlements, sites and road distances in miles and walking days at your elbow.

04 / EXPORT

Write the vault

One folder of markdown: a region note, a note per interesting hex, stubs for settlements, sites and factions, and a work order for every dungeon site.

Local AI, fenced in

AI polish that cannot redraw the map.

Two directors run on a local model — the app can download one onto its bundled llama.cpp runtime, or connect to the Ollama, LM Studio or llama.cpp server you already have. They name places, write gazetteer notes and stage encounters, but every choice travels through a typed operation the generator validates. No model, no problem: without one you get the deterministic names instead.

Director request pipelineGuardrails active
01 / Ground

The survey sets the facts: terrain per hex, a closed obstacle vocabulary, and a monster shortlist filtered by climate and terrain.

02 / Propose

A director answers with picks and prose: names, notes, rumors and staged encounters, chosen from the lists it was handed.

03 / Apply

An executor applies each operation. Anything off the menu is rejected and echoed back with the legal candidates, so the model can correct itself.

04 / Verify

A checkpoint and validation gate get the last word. A pass that fails them falls back to the deterministic result, by name.

AI proposes → typed operation → validated apply → checkpointResult: a coherent region that still obeys the map
The region packet

Everything a hexcrawl needs before anyone rolls.

Every hex carries terrain, features, obstacles and residents. The region carries settlements, sites, roads, travel times and a first sketch of who holds power.

Campaign Vault

One folder of markdown, yours forever

A region note, a note per interesting hex, stubs for settlements, sites and factions, machine state under state/, and a commission file for every dungeon site. Obsidian reads it as-is. How the vault ties the apps together.

region.mdhex notesstubsstate/commissions/oa_refs
Hex map

Terrain that makes geographic sense

Elevation, moisture and temperature fields shape the region at six miles per hex. Climate band and terrain pick each biome; rivers run downhill to the coast instead of wherever.

Settlements & sites

Places put where people would put them

Settlement spots are scored on water, coast, terrain and spacing. Dungeon sites keep their distance from towns; landmarks and faction sketches fill in the rest.

Roads & travel

Distances you can quote at the table

A trunk network routed over terrain cost joins the settlements, with fords and bridges at the river crossings and a travel table in miles and walking days.

Obstacles & residents

Trouble seeded from the geometry

Passes, cliffs, bogs, scree, tolls and dry stretches follow from the terrain. Encounter and lair candidates come from a free library of 457 statted monsters, filtered by climate and terrain. Browse the monster library.

The handoff

Every dungeon site leaves a work order.

When Hexes places a site, it also writes commissions/<site>.request.json — seed, terrain and context in a fixed envelope. Dungeons on Automatic turns that stub into a keyed dungeon, and the linkage lives in the vault, never in either app.

Selective control

Random where you want it. Stable where you need it.

The same promise as the rest of the family: the dice are yours to keep or re-throw, and nothing you wrote gets overwritten.

Seeds

Repeat a region exactly. The same seed and knobs rebuild the same region, down to the last ford.

Knobs

Shape the survey before it runs. Columns, rows, water, ruggedness, moisture, settlement and site counts are all yours to set.

Round trips

Come back later. Open from Vault reopens a saved region, and your own prose outside the generated fences survives every re-export.

Local AI

Polish is optional. One click downloads a small model onto the bundled runtime, or point Hexes at Ollama, LM Studio or llama.cpp. Deterministic code owns the map.

The field team

Two directors, played by your local model.

Aldrith VaneCartographer · names from the drafting table
Bram Half-EarCaravan master · warns from the ground
Early access

It’s young. It works. Come break it.

The 0.1.x builds cover every platform, generate real regions and write real vaults. The rough edges are listed plainly on the releases page. When something misbehaves, a bug report with the seed attached is the most useful thing you can hand us.