Agentopolis — Habbo-style visualization of Claude Code agents building your repo as a city
Project description
Agentopolis
A Habbo-style isometric visualization of Claude Code at work, in two views on
one page. The dispatch floor (City Hall): every agent is a pixel worker —
your main session checks in at reception, subagents walk through the door when
spawned, and tool calls send workers to stations — the CRT terminal for Bash,
the archive shelf for Read/Grep, the workshop for Edit/Write, the
telephone booth for web tools. The skyline above: the city is the codebase
itself, seeded from git history and zoned by architecture (a zoning manifest
maps globs to components and layers; floors = cross-component centrality,
footprint = lines of code, window glow = recency, building shape = language
family — pyramids for scripting, glass drums for web, ziggurats for compiled,
toggleable to key off rarity/size/age instead; managed services float as
tethered clouds). As agents work, the city builds itself out — edits wrap
buildings in scaffolding, a git commit drops the scaffolds and adds floors,
new files pop up new buildings. /city.html is a full-screen explorer with
pan/zoom. The city re-seeds itself from git whenever HEAD moves.
Install & run
uv tool install agentopolis # or: pipx install agentopolis
# or: brew install codeblackwell/tap/agentopolis
cd ~/code/any-repo
agentopolis . # zero-setup: hooks attached, city on :4242, hooks removed on exit
agentopolis movie # replay this repo's git history as a growing city
agentopolis movie ../other-repo # …or any local repo
agentopolis movie https://github.com/owner/repo # …or any public github repo
agentopolis crawl ~/code # rank a folder of repos by movie potential
agentopolis marathon ~/code # play every repo's movie back-to-back, with a selection bar
agentopolis . is the one-command path: it attaches the Claude Code hooks on
start and removes them again when you quit (Ctrl+C) — no separate setup or
teardown. Open http://localhost:4242, then start any Claude Code session and it
reports in automatically. No live session handy? http://localhost:4242/?demo
runs a scripted day in the city.
Prefer persistent hooks? agentopolis attach wires them once (a backup of
settings.json is written), agentopolis then just serves, and agentopolis detach removes them. agentopolis . leaves a manual attach untouched. Flags:
--repo, --port, --zone.
First visit? A guided onboarding tour spotlights each part of the interface, narrated by a pixel "Chief of Staff" — replay it anytime from the ⭐ badge. See docs/tour.md.
Movie mode (agentopolis movie [target]) replays a repo's whole git history
as a city that grows and re-forms commit by commit. target is a local repo dir
or a public github url; github repos download only the minimum git data (a
blob:none clone removed right after seeding) and the city is held in memory
only. Run outside a git repo and agentopolis tells you how to point it at one
instead of opening a blank map.
Crawl & marathon scan a folder of repos. agentopolis crawl <folder> ranks
them by movie potential (formation ladder, history length, deletions). agentopolis marathon <folder> then grabs every repo's movie and plays them best-first in one
auto-advancing reel with a selection bar to jump around — all local and offline,
and cached per repo+HEAD so the next run is instant. --top N caps the playlist.
Zoning: if the repo has a .agentopolis.json manifest it defines the city's
components, layers, and clouds (see city/example.json for a full example);
otherwise agentopolis auto-zones from the repo's top-level directories.
How it works
Claude Code hooks ──curl──▶ POST /hook ──▶ normalize ──SSE──▶ canvas renderer
hooks.pyregisters acurl -m 1 ... || truecommand on eight hook events (SessionStart, UserPromptSubmit, Notification, Pre/PostToolUse, Stop, SubagentStop, SessionEnd). It never blocks Claude Code — if the hotel isn't running, the curl times out silently.server.py(FastAPI) trims each payload to{event, session, tool, detail}(plusagent_id/agent_typefor events fired inside subagents), keeps the last 100 events, and broadcasts over SSE — late-joining browsers get a replay.static/render.js+static/hotel.jsdraw the room and guests on a plain canvas — original pixel art, no Habbo assets. Subagent tool calls move their own guest, a pulsing gold aura marks a session waiting on you (permission or idle), and hovering a guest shows who they are and what they're doing.
Known limits (v0)
- Front-facing avatars only; no directional sprites yet.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file agentopolis-0.16.0.tar.gz.
File metadata
- Download URL: agentopolis-0.16.0.tar.gz
- Upload date:
- Size: 480.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3d83e025821cd45cd32b8836caacf3fb5d48fe904a89c937b7d553423f7ccafc
|
|
| MD5 |
a077c638095b14b5b8df9abb477a6960
|
|
| BLAKE2b-256 |
2cf909d83bf85627276c63f9f1d7b01229ffc1b577179e06eadb99ae3ab07f3b
|
Provenance
The following attestation bundles were made for agentopolis-0.16.0.tar.gz:
Publisher:
release.yml on CodeBlackwell/agentopolis
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
agentopolis-0.16.0.tar.gz -
Subject digest:
3d83e025821cd45cd32b8836caacf3fb5d48fe904a89c937b7d553423f7ccafc - Sigstore transparency entry: 1841710725
- Sigstore integration time:
-
Permalink:
CodeBlackwell/agentopolis@4ac9233e5af36a090d7264895307d5f1edf79959 -
Branch / Tag:
refs/tags/v0.16.0 - Owner: https://github.com/CodeBlackwell
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@4ac9233e5af36a090d7264895307d5f1edf79959 -
Trigger Event:
push
-
Statement type:
File details
Details for the file agentopolis-0.16.0-py3-none-any.whl.
File metadata
- Download URL: agentopolis-0.16.0-py3-none-any.whl
- Upload date:
- Size: 418.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fa39d5e5b4ae675b5d80c48103d6b4234f4d1408c3becad8cbf7bae7f85b66e7
|
|
| MD5 |
0433c6914709094e9496657703abbfe0
|
|
| BLAKE2b-256 |
3667760c059ce926fddf9187aaf020dbe32f502ee7283bedb3e78144eb29d479
|
Provenance
The following attestation bundles were made for agentopolis-0.16.0-py3-none-any.whl:
Publisher:
release.yml on CodeBlackwell/agentopolis
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
agentopolis-0.16.0-py3-none-any.whl -
Subject digest:
fa39d5e5b4ae675b5d80c48103d6b4234f4d1408c3becad8cbf7bae7f85b66e7 - Sigstore transparency entry: 1841710848
- Sigstore integration time:
-
Permalink:
CodeBlackwell/agentopolis@4ac9233e5af36a090d7264895307d5f1edf79959 -
Branch / Tag:
refs/tags/v0.16.0 - Owner: https://github.com/CodeBlackwell
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@4ac9233e5af36a090d7264895307d5f1edf79959 -
Trigger Event:
push
-
Statement type: