garage44 · 2026

Cartopolis

The why and the how

Jeroen van Veen

The goal

A free place for communities to talk and collaborate.

Open source, self-hostable, part of the fediverse. Nobody owns your community but you.

Why

One theme: communicating freely online

  1. 2007Second Life · OpenSimwhere it started — being somewhere together, online
  2. 2008–09WiXTDa virtual world, reachable from the web · AJAX, web maps
  3. 2009–11HWIOSworking together live · websockets
  4. ~2013l3monpublishing live · websockets
  5. ~2013r00myvideo rooms for communities · WebRTC
  6. ~2017Bolognaphone calls from the browser · SIP, WebRTC, an extension
  7. ~2018rnetno server in between · WebRTC, WebCrypto
  8. 2020 →Pyriteself-hosted group video · Galène
  9. 2025–26Expressio · Codebrewacross languages; agents doing the work · LLMs

Each explored one aspect, with a technology that had just arrived. None of them lasted.

Why now

New technology, again

  1. The content exists. Open registers: every building, address, tree, kerb and sewer.
  2. One codebase. Rust and Bevy on desktop, browser and phone.
  3. Positioning. Handheld RTK receivers; free corrections from the Kadaster.
  4. Agents. They write all the code.
Groningen's Grote Markt, rendered from 3DBAG
Grote Markt, Groningen — from public 3D data

How · what it is

Talk, meet, build

  • Communities, chats, groups, calls — app and browser.
  • Voice with whoever stands near you.
  • Orbit to doorstep, no loading screens.
  • Objects with scripts; draw your own building's floors.
  • Desktop, browser, Android.
Avatars meeting on a square
Meeting on a square

How · the fediverse

Place-based communities

Being integrated over ActivityPub; a point in Cartopolis is already an ActivityStreams note with a place.

How · augmented reality

The world laid over the street

Pipes in the ground

See the sewer under your feet — from the open registers, with depths.

Geocaching

A cache is a scripted object at a real coordinate. Anyone can place one.

A virtual theremin

Play it with your hand on the Grote Markt. About 1.5 cm a note.

The hard part is centimetres. Phone GPS is metres off. A UM980 RTK kit (ordered) gives position, the camera gives heading and hand motion.

How · what it is made of

Three programs, open data

Client

Bevy · desktop, web, Android

Simulator

the authority · Tokio, SQLite

Atlas

data pipelines · web UI

Open data

OpenStreetMap · 3DBAG · BAG · BGT · AHN · sewers · aerial photos

15 Rust crates, ~330,000 lines. Self-hosted end to end.

How · who builds it

The agent writes all the code

Commits per month, Nov 2025 – Oct 2026 (*to the 11th)

1,591 commits

My job

  • Set the requirements — what a feature must do, and where its boundaries are.
  • Build the workshop — the workflow, the build farm (next slide), more machines.
  • Judge the result — the picture, not the claim.

How · speeding it up

midas: a build farm for agents

Many agents

Each session takes a node, builds and tests there over ssh, and gives it back. The node follows the session's work — no sync step.

One hub

Hands out nodes from a fair queue, ends forgotten leases, mirrors the code and keeps a log of everything.

Any machine

A node is a contained checkout with a warm build. The server is one, a Steam Deck with a real GPU another — each machine added is more agents at work.

Why a pool: one build per agent put the server at load 48; one shared build queued a one-second check for 109 minutes.

Cartopolis

A free place for communities to talk and collaborate.