Inspiration

Your code is your identity. Every developer pours themselves into their repos — the architecture decisions, the late-night refactors, the naming conventions that reveal how you think. But all anyone sees is text on a screen.

We wanted to make that identity visible — not as a graph or a diagram, but as a place you can actually walk through. What would your codebase look like if it had atmosphere, architecture, and a soundtrack?

## What it does

Paste any GitHub repo URL. In under a minute, AI reads your actual source code — the function names, the variable names, the domain language only you chose — and builds a cinematic 3D world that could only belong to that codebase.

A payment protocol becomes a neon bazaar with holographic toll gates. A compiler becomes a gothic cathedral with flying buttresses. An async framework called "later" becomes a clockwork citadel named "Chronos Haven" — because Claude found the TaskSentinel class and turned it into a golden gear that appears in every chapter.

No two repos look alike. Because no two developers think alike.

  • 26 genres — each with unique visual vocabulary and generative soundtrack
  • Contributor avatars floating in the scene, clickable to GitHub profiles
  • Multi-chapter narratives that evolve with the code — genesis, growth, crisis, resolution
  • Constellation mode — paste a GitHub username to see their entire profile as a grid of worlds

## How we built it

GitHub API → Claude API → WorldLabs Marble → Three.js Viewer (code) (narrative) (3D world) (browser)

GitHub API reads the codebase DNA — actual source files, commit history, tech stack. Claude (claude-sonnet-4-20250514) writes a Story Bible: genre, world name, visual palette, core metaphor, and easter eggs drawn from real code identifiers. WorldLabs Marble API generates a 3D Gaussian splat world from the narrative prompt. Three.js renders it in the browser with WASD movement, cinematic fly camera, and Web Audio API generative music.

Express SSE pushes real-time generation progress — the particle system reacts to build state, converging when generating and settling when complete.

All TypeScript. Single self-contained HTML viewer. No build step.

## Challenges we ran into

Every repo was getting the same cyberpunk world. The Story Bible was being reused across repos, and with only 10 genres Claude defaulted to cyberpunk every time. We expanded to 26 genres with specific material vocabularies and started feeding Claude actual source code — not just metadata.

The jump from "it's a Python project" to "here are the functions: cancel, gather, herd, TaskSentinel" was what made each world truly unique.

Other challenges:

  • WorldLabs API response shape didn't match docs — world_id instead of id
  • GitHub rate limits hit hard when sampling source files from repos
  • Strudel music integration had broken npm dependencies — pivoted to raw Web Audio API with zero external deps

## Accomplishments that we're proud of

Claude named a world "Chronos Haven" for an async timing library and embedded a "Sentinel Gear" easter egg — because it read the actual TaskSentinel class in the source code. That moment — when the AI understood the soul of a codebase and translated it into architecture — that's when we knew this worked.

The genre system produces genuinely different worlds:

| Code Domain | World Genre | |---|---| | Type systems, math | crystalline — prismatic light, geometric formations | | Clean APIs, minimal code | zen garden — raked sand, balanced stones | | High-performance, low-latency | volcanic — magma channels, obsidian towers | | Legacy migrations | ancient ruins — overgrown temples, hieroglyphic APIs | | Marketplaces, commerce | neon bazaar — crowded night markets, holographic signs |

The music matches each world — clockwork worlds tick, cathedrals drone, neon bazaars pulse. Contributor avatars float with particles during generation, then fly into position when the world loads.

## What we learned

  • LLMs are dramatically better world-builders when you give them code, not metadata. Feeding Claude actual function names instead of repo descriptions produced worlds that felt inevitable for that codebase.
  • Genre is a powerful creative constraint. 26 specific visual vocabularies with material lists like "brass, copper, crystal, steam, precision_gears" produce far more vivid results than open-ended prompts.
  • SSE is perfect for long-running generation. The viewer's particle system reacts in real-time — converging during builds, settling on completion.
  • A single HTML file can deliver a rich 3D experience. Three.js from CDN, inline JS, Web Audio API — no bundler, no framework, no build step.

## What's next for Git World

  • Webhook-driven evolution — every git push adds a new chapter to the world in real-time
  • GitHub Action — auto-generates a world for every PR and posts the Marble 3D link as a comment
  • npm web component<git-world repo="owner/repo"> for embedding in READMEs and docs
  • Full Gaussian splat walkthrough via SparkJS for true 3D navigation
  • The big vision: a persistent visual layer for all of open source — every repo on GitHub as a living, evolving world that tells the story of the people who built it

Built With

  • anthropic
  • css-frameworks-&-libraries:-three.js
  • digital-ocean-app-platform-tools:-tsx
  • express.js
  • github-rest-api
  • html
  • javascript
  • node.js
  • octokit
  • sparkjs-apis:-claude-api-(anthropic)
  • tsx
  • typescript
  • vite
  • web-audio-api-platforms:-node.js
  • worldlabs-marble-api
Share this project:

Updates