RepoStellar is a local-first open-source Git atlas and explorer from VAMFI Inc.
It scans your machine for Git repositories, visualizes topology, inspects file trees and commits, and infers repository purpose from local signals only.
- Find any repository quickly across large directory trees
- Understand project purpose without opening each repo manually
- Inspect files and commit history from one interface
- Visualize relationships by path, remote host, and activity
- Keep data local by default
git clone https://github.com/VAMFI/repostellar.git
cd repostellar
npm install
npm run devLocal services:
- Web UI:
http://127.0.0.1:5174 - API:
http://127.0.0.1:4177
apps/serverlocal API + scan engine + SSE jobsapps/webReact/Vite UI (Atlas, Graph, Insights, Repo Drawer)packages/sharedshared API/data types
POST /api/scan/startGET /api/scan/:scanId/eventsPOST /api/scan/:scanId/cancelGET /api/repos?scanId=...GET /api/repo/:repoId/files?path=...GET /api/repo/:repoId/commits?branch=...&limit=...GET /api/graph?scanId=...&mode=path|remote|activity
Use the captured workflow frames in docs/screenshots/workflow5.
cd repostellar
mkdir -p docs/demo
ffmpeg -y -framerate 0.7 -pattern_type glob \
-i 'docs/screenshots/workflow5/*.png' \
-vf "scale=1400:-1:flags=lanczos,split[s0][s1];[s0]palettegen[p];[s1][p]paletteuse" \
docs/demo/repostellar-tour.gifPython fallback (if ffmpeg is unavailable):
python3 -m pip install pillow
python3 - <<'PY'
from PIL import Image
from pathlib import Path
frames = [Image.open(p).convert('P', palette=Image.ADAPTIVE) for p in sorted(Path('docs/screenshots/workflow5').glob('*.png'))]
frames[0].save('docs/demo/repostellar-tour.gif', save_all=True, append_images=frames[1:], duration=[1400,1600,1300,1300,1500], loop=0, optimize=True)
PYOptional optimization:
gifsicle -O3 docs/demo/repostellar-tour.gif -o docs/demo/repostellar-tour.gif- Verify Node version:
node -v(requires>= 20) - If you have an older version, use
nvm install 20 && nvm use 20 - If local dev fails with missing
@esbuild/darwin-arm64on Apple Silicon:
npm install -D @esbuild/darwin-arm64- Reinstall deps cleanly:
rm -rf node_modules package-lock.json
npm installRepoStellar runs locally and does not send scan content to external services by default.
- License: Apache-2.0
- Contributor docs: CONTRIBUTING.md
- Conduct: CODE_OF_CONDUCT.md
- Security: SECURITY.md
- Publish guide: docs/PUBLISH_TO_VAMFI_GITHUB.md





