a13n
AI 에이전트를 만들고 클라우드에서 실행합니다
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기Your git repo as a pixel-art city that grows along its history.
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Your git repo as a pixel-art city.
Every file is a building. Every directory is a neighbourhood. Watch the city grow, commit by commit, from empty lots to a skyline.
gitropolis.dev for any public repo · npx gitropolis for your own
vite, 2,383 files and 7,419 commits, played back in 10 seconds.
In your browser, for any public GitHub repo: swap github.com for gitropolis.dev.
https://github.com/pallets/flask → https://gitropolis.dev/pallets/flask
The first visit surveys the repo (a minute at most), and the city is kept for everyone after that.
On your machine, for any repo, private ones included:
npx gitropolis /path/to/your/repo
Your browser opens on the city. There's nothing to install or build and no dependencies; you only need Node 18+ and git. Nothing leaves your machine.
gitropolis reads the shape of your code and picks a plan to match it. A big monorepo of separate packages becomes islands in a lagoon. Deep, tightly imported trees become dense wards. Old projects with one famous centre get avenues radiating from it.
src/main/java/org/springframework/samples/petclinic are a stone stairway, one step each, up from the river.* These were forced with --city; left to itself, gitropolis plans axum, express and flask as Paris, ky as Manhattan, and redis as a factory town. Any repo can be drawn as any city.
The terminal tells you why your repo got its plan:
this repo is Tokyo: mostly small buildings (median 99 lines); 3.3 imports per file, so everything connects
Some repos also get a condition on top of their plan. A repo with no recent commits is a ghost town. One where most files haven't been touched in years is ancient ruins. A sudden rush of commits makes a boomtown, and a repo that's mostly tests is a garden city. A repo twenty years old whose first five years still stand is an old walled city: a wall with towers and gates goes round the quarter where those founding files cluster, or round the whole city when they're spread all through it.
| In the city | In your code |
|---|---|
| Footprint and height | lines of code |
| Building type | what the file does: source files are towers, slabs and setbacks; tests and docs are houses; configs and build scripts are sheds; type definitions are steel frames; index files are halls |
| Architectural era | when the file was born: old stone, mid-century, or new glass |
| Materials and roof | the language: Rust, Go, Python, TypeScript, C and others each build in their own vernacular |
| District colour | the directory; a neighbourhood is painted as one |
| Signpost | a folder's name, planted in the middle of its district |
| The tallest spire | the most-imported file |
| City hall · courthouse · clock tower | README · LICENSE · CHANGELOG |
| Port · power plant · airport | lockfile · package manifest · deploy config |
| Field · farmhouse · barn · silo · windmill | a dataset · a notebook · a big notebook · model weights · the most-imported file |
| Supertall · needle · crane · palm villa | one of the biggest files · the most-depended-on file · a file born in the last stretch · a test or doc |
| Axis · superblock · congress · cathedral | a layer of the design · a package · the most-depended-on file · the file that imports the most |
| Terrace · stairway | a package (subpackages are higher terraces) · the empty directories a path climbs through |
| College · chapel · library | docs and books: a page · a table of contents · the most-linked page |
| Container yard · warehouse · tank farm · factory | infrastructure as code: Kubernetes manifests · Helm, Kustomize and Ansible · jsonnet and Nix · Terraform |
| Crane on site | a file that's being edited heavily right now |
| Ruin | a file nobody has touched in over two years |
| Flash on a roof | touched by the commit now playing |
Drag to pan and scroll to zoom. The biggest districts carry signposts with their folder's name, and more appear as you zoom in. Hover a building to see its file and light up its whole district, and click it to light up its imports. The timeline under the city shows how busy each stretch of history was: click or drag it to jump, Space plays or pauses, ← → step. The signpost button (or L) hides the names for a clean view. The builder button (or B) lists who built the city, each with the number of buildings they put up (a file's builder is whoever added it), and picking one lights up their buildings; the address then carries ?by= with their name, so the link shows them too. Esc clears the selection.
The share button makes something to post, drawn in your browser:
A card: the finished city with its name, what it's built like and why, its history and its numbers. Landscape for X and LinkedIn, square, or a story; with the details, or full bleed with just a name tag. Every art pixel is a 2×2 block, so it stays sharp after a social network recompresses it.
A GIF or a video of the city growing: a GIF of about 800 pixels that fits in a chat, or an MP4 in 1080p, square or vertical.
A README badge, in three looks, with the Markdown to copy:
[](https://gitropolis.dev/OWNER/REPO)
A gitropolis.dev/owner/repo link shows its city's card when you paste it into X, Slack, Discord or LinkedIn.
npx gitropolis . --gif city.gif --static --duration 10
This films the city growing along its git history and writes a GIF that fits GitHub's 10 MB limit. Pixel art compresses well, and every GIF pixel is a whole art pixel, so nothing is blurred. Drop --static and the camera dives into the busiest junction instead. Use --video city.mp4 for an MP4, --still city.png for a single frame, or --card card.png for a share card with the repo's name and what city it's built like.
Filming runs in headless Chrome, so it looks the same on every machine. It needs ffmpeg and Chrome, Chromium, Edge or Brave.
| Option | Default | |
|---|---|---|
--city <plan> | auto | farm desert capital mountain university port industrial science themepark resort smalltown manhattan hongkong tokyo la paris venice barcelona |
--style <look> | pixel | maquette plan nocturne are smooth-shaded alternatives |
--pixel <n> | 1 | size of one art pixel, in screen pixels (2 for chunkier art) |
--zoom <n> | 1 | close-up factor; 3 frames the city centre |
--gif <file> · --video <file> | film the city's history | |
--still <file> | one frame (--shot hero|aerial|street|plan, --no-hud) | |
--card <file> | a share card PNG (--shape landscape|square|story, --full for full bleed) | |
--static | hold the establishing shot while filming | |
--duration <s> · --fps <n> · --size <WxH> | 20 · 30 · 1920x1080 | |
--max-mb <n> | 9.5 | size cap for GIF and MP4 |
--headed | film in a visible browser tab | |
--port <n> · --no-open | 4173 | |
--out <file> | write the scanned city as JSON and exit | |
git ls-files, a regex import pass for JS/TS, Python, Go, Rust, Java, Kotlin, C/C++ and Dart (including workspace packages), and a pass over git log --raw that follows renames (including the moves git doesn't pair, like a foo.js ported to foo.ts) and keeps the files deleted along the way. Infrastructure as code is read too, when a repo has enough of it: Terraform module sources, jsonnet imports, Kustomize resources, Helm values and Ansible roles all count as links. So does prose in a docs site or a book: Markdown links between pages. Notebooks are read cell by cell (their imports count too), and datasets and model weights by their size.Streets come from a distance field around the blocks, and cars, buses and boats follow lanes that stay on land or water.
web/vendor) and the captions fall back to system fonts.npx gitropolis on your own copy.gitropolis.dev is this repo's web/ folder on Cloudflare: a Worker in front, a few containers that clone and scan, and R2 keeping every city by commit. It's all in deploy/cloudflare.
Bug reports, repos that come out looking wrong, and ideas for new city types are all welcome. See CONTRIBUTING.md for running gitropolis from a checkout and checking a change.
MIT for the code. The gitropolis name and logo aren't covered by the license: please don't use them for your own copy of the site or the tool.
--bench| print setup and frame timings |