e2cffd4a72816ab8427dca93534e2b51048140d7
Cars loop the blocks inside each folder on its grey streets, one lane per block so loops never meet, and wait for anyone standing in the lane. Wall name signs now sit over a metre above the top of the door. The hover tooltip hides when the camera, view or mode changes or mouse-look starts, instead of staying up.
CodeNavigator
See your code as a city. CodeNavigator indexes a GitHub repository (or, if you allow it, a local folder) and turns it into a place you can explore: a zoomable map, a 3D landscape, and a walkable night-time city where every file is a building and every folder is a street.
It's a single Go binary with no dependencies beyond the standard library. It serves both the indexing API and the browser frontend (plain ES modules and WebGL2, no build step).
What you can do
Also:
- Search every file and symbol, with results raised as light beacons in the city.
- Private GitHub repos via a GitHub App sign-in, scoped to the visitor's own access.
- Security alerts: with the right GitHub permissions, files with open code scanning or Dependabot alerts smoke, burn (critical/high) and get wrapped in hazard tape.
- Multi-user: every browser gets its own private sessions, snapshots and sign-in.
- Guided tour of the biggest districts, and shareable links to an exact spot.
- Touch controls: joystick, look and pinch.
Quick start
go run . # http://127.0.0.1:4177
Open the page, click Open a codebase, and paste a public GitHub URL such as
https://github.com/prometheus/prometheus. git must be on your PATH for cloning.
With Docker:
./build.sh # builds codenavigator:latest, running the tests inside
docker run --rm -p 4177:4177 codenavigator:latest
Configuration
| Variable | Default | Purpose |
|---|---|---|
PORT |
4177 |
Listening port (--port overrides) |
CORS_ORIGIN |
* |
Access-Control-Allow-Origin for the API |
SHOW_LOCAL |
unset | true enables uploading local folders; otherwise only GitHub repositories |
GITHUB_CLIENT_ID |
unset | GitHub App client ID; enables sign-in for private repos and security alerts |
GITHUB_CLIENT_SECRET |
unset | GitHub App client secret |
GITHUB_APP_SLUG |
unset | The app's URL name, for the "grant repository access" link |
Keyboard
| Key | Where | Action |
|---|---|---|
Ctrl+O |
anywhere | Open a codebase |
/ |
anywhere | Search |
F |
map views | Fit everything in view |
[ |
anywhere | Hide or show the sidebar |
1 2 3 |
city | Helicopter, walk, fly |
W A S D, Shift |
walk/fly | Move, run |
Space / C |
fly | Up / down |
E |
walk/fly | Inspect the building in the crosshair |
T |
city | Guided tour |
Documentation
- City guide: what everything in the city means and how to get around
- Architecture: indexer, server, sessions, rendering pipeline
- HTTP API: every endpoint, with request and response shapes
- GitHub App setup: private repos and security alerts
- Deployment: Docker, systemd, nginx, operating limits
- Development: running, testing, benchmarking, project layout
Languages
JavaScript
64.8%
Go
21.2%
CSS
9.9%
HTML
3.9%
Dockerfile
0.1%




