A desktop git repository visualizer with AI-powered commit summaries. Built with Electron, React, and TypeScript.
- Commit Graph — interactive SVG graph with drag-to-pan and branch filtering
- Timeline View — commit history with per-commit AI summaries
- Contribution Heatmap — GitHub-style activity map
- Code Frequency — additions/deletions over time (Recharts)
- Contributor Stats — bar charts with hover details
- File Browser — recursive tree with last-commit info per file
- Branch Switching — select any branch to re-fetch all data
- AI Summaries — powered by NVIDIA NIM API (user-provided key)
- GitHub URL Support — paste any public GitHub URL; auto-clones to a temp directory
- Local Repository Support — open any local
.gitfolder via file picker - Snowy Black Theme — snowy particle animation, dark UI, font-light throughout
npm install -g visigit
visigitThis installs VisiGit globally and adds the visigit command to your PATH.
git clone https://github.com/shayderrr/visigit.git
cd visigit
npm installnpm run devThis starts the Vite dev server with hot-reload. The Electron window opens automatically.
Electron Builder creates platform-specific installers. The default npm run package builds for your current OS and architecture.
npm run packageOutput appears in the release/ directory.
| Platform | Architecture | Command |
|---|---|---|
| macOS | Apple Silicon (arm64) | npm run package:mac:arm |
| macOS | Intel (x64) | npm run package:mac:x64 |
| macOS | Both | npm run package:mac |
| Windows | x64 | npm run package:win:x64 |
| Windows | ARM64 | npm run package:win:arm |
| Windows | Both | npm run package:win |
| Linux | x64 | npm run package:linux:x64 |
| Linux | ARM64 | npm run package:linux:arm |
| Linux | Both | npm run package:linux |
| Platform | Format | Description |
|---|---|---|
| macOS | .dmg |
Drag-and-drop installer for macOS |
| Windows | .exe (NSIS) |
Installer with customizable install directory |
| Linux | .AppImage |
Portable, runs on most distros without installation |
| Linux | .deb |
Debian/Ubuntu package |
Building for a different architecture on the same machine works for some targets but not all. For best results, build each platform on its native OS:
- macOS builds: Run on macOS (builds both arm64 and x64 natively)
- Windows builds: Run on Windows or use CI (GitHub Actions recommended)
- Linux builds: Run on Linux or use CI
If you need to cross-compile macOS arm64 on an Intel Mac (or vice versa), you may need to install the additional target:
# On macOS, to build for the other arch:
brew install filosottile/musl-cross/musl-cross # optional, for Linux cross-buildsVisiGit uses the NVIDIA NIM API for AI-powered commit and repository summaries.
- Create a free account at build.nvidia.com
- Click Get API Key to generate a key (starts with
nvapi-) - In VisiGit, click the gear icon in the top-right toolbar
- Paste your API key and click Save Key
The key is stored in memory for the current session. You will need to re-enter it each time you restart the app.
- 5,000 inference credits/day (1 credit ≈ 1 API call)
- 40 requests per minute rate limit
- No credit card required
- Model:
z-ai/glm-5.2
| Layer | Technology |
|---|---|
| Framework | Electron 35 |
| Build | electron-vite 3, Vite 6 |
| UI | React 19, TypeScript 5 |
| Styling | Tailwind CSS 3 |
| Charts | Recharts 2 |
| Heatmap | @uiw/react-heat-map |
| Git | simple-git 3 |
| Packaging | electron-builder 26 |
visigit/
├── bin/
│ └── visigit.js # npm global launcher script
├── src/
│ ├── main/ # Electron main process
│ │ ├── index.ts # IPC handlers, window management, clone logic
│ │ └── git-service.ts # Local git operations via simple-git
│ ├── preload/
│ │ ├── index.ts # Context bridge (electronAPI)
│ │ └── index.d.ts # TypeScript declarations
│ └── renderer/ # React app
│ ├── index.html
│ └── src/
│ ├── App.tsx
│ ├── main.tsx
│ ├── types.ts
│ ├── components/
│ │ ├── Dashboard.tsx
│ │ ├── DropZone.tsx
│ │ ├── Sidebar.tsx
│ │ ├── CommitGraph.tsx
│ │ ├── CommitTimeline.tsx
│ │ ├── ContributionHeatmap.tsx
│ │ ├── CodeFrequencyChart.tsx
│ │ ├── ContributorStats.tsx
│ │ ├── FileBrowser.tsx
│ │ ├── SummaryPanel.tsx
│ │ ├── SettingsModal.tsx
│ │ ├── StatsBar.tsx
│ │ ├── LoadingScreen.tsx
│ │ └── SnowBackground.tsx
│ ├── hooks/
│ │ ├── useGitData.ts
│ │ └── useAiSummary.ts
│ └── styles/
│ └── globals.css
├── logo.png # App icon
├── package.json
├── electron.vite.config.ts
├── tailwind.config.js
├── postcss.config.js
├── tsconfig.json
├── tsconfig.node.json
└── tsconfig.web.json
- Tag a release and push:
git tag v1.0.0
git push origin v1.0.0- Build all platforms (use CI or build on each OS):
# On macOS
npm run package:mac
# On Windows
npm run package:win
# On Linux
npm run package:linux- Create a GitHub release at https://github.com/shayderrr/visigit/releases/new and upload the artifacts from
release/:
| File | Platform |
|---|---|
VisiGit-1.0.0.dmg |
macOS (universal) |
VisiGit Setup 1.0.0.exe |
Windows |
VisiGit-1.0.0.AppImage |
Linux |
visigit_1.0.0_amd64.deb |
Linux (Debian/Ubuntu) |
electron-builder can publish directly to GitHub Releases:
# Set a GitHub token (personal access token with repo scope)
export GH_TOKEN=your_github_token
# Build and publish
npm run publishThis builds for the current platform and uploads the artifact to the latest GitHub Release.
Create .github/workflows/release.yml to build on all platforms automatically when you push a tag. See the electron-builder CI guide for reference.
VisiGit can be distributed as a global npm package. Users install with npm install -g visigit and run it with the visigit command.
# Build the app first
npm run build
# Login to npm
npm login
# Publish
npm publishThe prepublishOnly script runs electron-vite build automatically before publish. The bin/visigit.js launcher finds the Electron binary from the electron dependency and starts the app.
Note: The npm package includes the Electron binary for the user's platform (~180MB). This is larger than a standalone installer but works for users who prefer npm install -g.
MIT
