garage44 · 2026
Cartopolis
The why and the how
Jeroen van Veen
The goal
A free place for communities to talk and collaborate.
- Talk — chat, voice, calls; private ones end-to-end encrypted.
- Meet and build — in a 3D world that is the real planet.
- On the street — the same world through a phone, in AR.
Open source, self-hostable, part of the fediverse. Nobody owns your community but you.
Why
One theme: communicating freely online
- 2007Second Life · OpenSimwhere it started — being somewhere together, online
- 2008–09WiXTDa virtual world, reachable from the web · AJAX, web maps
- 2009–11HWIOSworking together live · websockets
- ~2013l3monpublishing live · websockets
- ~2013r00myvideo rooms for communities · WebRTC
- ~2017Bolognaphone calls from the browser · SIP, WebRTC, an extension
- ~2018rnetno server in between · WebRTC, WebCrypto
- 2020 →Pyriteself-hosted group video · Galène
- 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
- The content exists. Open registers: every building, address, tree, kerb and sewer.
- One codebase. Rust and Bevy on desktop, browser and phone.
- Positioning. Handheld RTK receivers; free corrections from the Kadaster.
- Agents. They write all the code.

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.

How · the fediverse
Place-based communities
- Every place is a community with a fediverse address — follow your street or neighbourhood from Cartopolis or from Mastodon.
- Posts land on the map where they were made; replies from the fediverse come back under them.
- Notices from the municipality about specific buildings and streets, posted to the places they concern.
- Private chats stay private — end-to-end encrypted, they never cross over.
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
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