A modern, cross-platform Git GUI client built with Tauri, Lit, and Rust.
Leviathan aims to be a fast, privacy-first alternative to existing Git clients like GitHub Desktop, GitKraken, and Sourcetree. It runs entirely offline with no telemetry, account requirements, or cloud dependencies.
- Open, clone, and initialize repositories
- Multi-repository support with tabs
- File system watching for auto-refresh
- Commit history with interactive graph visualization
- Create commits with staging support
- Hunk-level staging/unstaging
- Commit details view with file list
- Commit amend - modify last commit message and staged files
- Create, delete, rename branches
- Checkout branches and commits
- Branch tracking (upstream detection)
- Ahead/behind commit counting
- Merge with fast-forward, squash, and no-ff options
- Rebase onto branches
- Interactive rebase with action editor
- 3-way merge conflict resolution editor
- Abort/continue operations
- Cherry-pick specific commits to apply to current branch
- Conflict resolution support for cherry-pick
- Abort/continue cherry-pick operations
- Revert commits with auto-generated revert message
- Abort/continue revert operations
- Soft, mixed, and hard reset modes
- Reset to any commit with visual confirmation
- Context menu integration for quick access
- Fetch, pull, push
- Multiple remotes support
- Force push option
- Command Palette (Cmd/Ctrl+P) - fuzzy finder for all actions
- File History - view all commits that modified a file with rename following
- Commit Search - search by message, author, SHA, file path, or date range
- Undo/Redo - visual reflog browser for recovering previous states
- Keyboard Shortcuts - comprehensive keyboard navigation with vim-style support
- Drag & Drop - drag branches to merge/rebase, drag files to stage/unstage
- Tag management (create, delete, push)
- Stash management (create, apply, pop, drop)
- Diff viewer with syntax highlighting (Shiki)
- Blame view with author attribution
- Dark and light themes
- Syntax highlighting theme options
- Remote Management - add, remove, rename remotes, edit URLs
- Clean Operations - remove untracked/ignored files with preview
- Bisect - binary search for bug-introducing commits
- Submodules - add, init, update, sync, remove submodules
- Worktrees - create, remove, lock/unlock, move multiple working directories
- Git LFS - track patterns, pull/fetch/prune large files
- GPG Signing - configure keys, sign commits/tags, verify signatures, trust levels
- SSH Key Management - generate keys (Ed25519, RSA, ECDSA), view/copy public keys, test connections
- Git Configuration - view/edit global and repository config, manage aliases, user identity
- Credential Management - credential helper configuration, test credentials, per-remote settings
- Pull Requests - view PRs, create PRs, PR status visualization in commit graph
- Issues - view issues, create issues, filter by state/labels
- Commit Linking - automatic issue reference detection (fixes #123, closes #456)
- Releases - view releases, create releases with auto-generated notes
- Actions - workflow run status, check runs for commits
- Merge Requests - view MRs, create MRs, status filtering
- Issues - view issues, create issues, label filtering
- Pipelines - view CI/CD pipeline status
- Pull Requests - view PRs, create PRs, PR status filtering
- Work Items - browse and query work items by project
- Pipelines - view pipeline/build run status
- Pull Requests - view PRs, create PRs, status filtering
- Issues - view issues with priority and status
- Pipelines - view pipeline run status
- Commit Message Generation - generate conventional commit messages from staged diffs
- Embedded LLM - uses Tavernari/git-commit-message model (~2GB quantized)
- Offline-First - model downloads once on first use, runs entirely locally
- GPU Acceleration - Metal on macOS, CUDA on Windows/Linux (configurable via
LEVIATHAN_GPU_LAYERS) - Progress Feedback - download progress and generation status in UI
- Multiple Identities - configure work/personal Git identities
- Integration Accounts - link GitHub, GitLab, Azure DevOps accounts to profiles
- Auto-Detection - automatically switch profiles based on repository URL patterns
- Profile Switching - switch identity and linked accounts together
Pre-built binaries are available from the Releases page:
| Platform | Download |
|---|---|
| macOS (Universal) | .dmg |
| macOS (ARM64) | .dmg |
| Windows | .msi or .exe |
| Linux | .deb or .AppImage |
xcode-select --installsudo apt-get update
sudo apt-get install -y \
libwebkit2gtk-4.1-dev \
libayatana-appindicator3-dev \
librsvg2-dev \
libssl-dev \
libgtk-3-dev \
libglib2.0-dev \
libdbus-1-devInstall Visual Studio Build Tools with the "Desktop development with C++" workload.
# Clone the repository
git clone https://github.com/hegsie/Leviathan.git
cd Leviathan
# Install dependencies
npm install
# Build and run in development mode
npm run tauri:dev
# Build for production
npm run tauri:buildProduction builds are output to src-tauri/target/release/bundle/.
| Command | Description |
|---|---|
npm run dev |
Start Vite dev server |
npm run tauri:dev |
Run app in development mode |
npm run tauri:build |
Build production application |
npm run build |
Build frontend only |
npm run test |
Run tests |
npm run test:watch |
Run tests in watch mode |
npm run typecheck |
Type check without emitting |
npm run lint |
Lint TypeScript files |
npm run lint:fix |
Lint and fix issues |
npm run format |
Format code with Prettier |
leviathan/
├── src/ # Frontend (TypeScript/Lit)
│ ├── components/ # UI components
│ │ ├── common/ # Shared components
│ │ ├── dialogs/ # Modal dialogs
│ │ ├── graph/ # Commit graph visualization
│ │ ├── panels/ # Content panels (diff, blame)
│ │ ├── sidebar/ # Navigation sidebars
│ │ └── toolbar/ # Top toolbar
│ ├── services/ # API and service layer
│ ├── stores/ # Zustand state management
│ ├── types/ # TypeScript type definitions
│ └── styles/ # CSS and design tokens
│
├── src-tauri/ # Backend (Rust)
│ ├── src/
│ │ ├── commands/ # Tauri command handlers
│ │ ├── services/ # Business logic
│ │ └── models/ # Data structures
│ ├── Cargo.toml # Rust dependencies
│ └── tauri.conf.json # Tauri configuration
│
├── plan/ # Technical documentation
└── .github/workflows/ # CI/CD pipelines
- Lit - Web components framework
- Vite - Build tool
- Zustand - State management
- Shiki - Syntax highlighting
- TypeScript - Type safety
- Tauri 2.0 - Desktop application framework
- Rust - Systems programming language
- git2-rs - libgit2 bindings
- Tokio - Async runtime
- SQLite - Local database
- llama-cpp-2 - LLM inference with GPU acceleration
See ROADMAP.md for planned features including:
- Inline file editing in diff view
- Image diff comparison
- Commit message templates
- Git Flow workflow support
- External AI backends (Ollama, LM Studio)
- Code review suggestions
The AI feature uses an embedded LLM that runs locally on your machine. On first use, it downloads a ~2GB model file.
macOS GPU Issues: If the app crashes when generating commit messages, you may need to adjust GPU settings:
# Run with CPU-only inference (slower but stable)
LEVIATHAN_GPU_LAYERS=0 /Applications/Leviathan.app/Contents/MacOS/Leviathan
# Or reduce GPU layers (try 16, 8, etc.)
LEVIATHAN_GPU_LAYERS=16 /Applications/Leviathan.app/Contents/MacOS/LeviathanThis is a known issue with Metal GPU buffer allocation on some macOS configurations. See llama.cpp#16266 for details.
Model Storage: The AI model is stored in:
- macOS:
~/Library/Application Support/io.github.hegsie.leviathan/models/ - Windows:
%APPDATA%\io.github.hegsie.leviathan\models\ - Linux:
~/.config/io.github.hegsie.leviathan/models/
You can delete the model folder to re-download or free up space.
Contributions are welcome! Please feel free to submit issues and pull requests.
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.


