Avi is a SwiftUI-based macOS git client. It focuses on local-first workflows (staging, committing, browsing history) and adds an AI-assisted commit message generator alongside lightweight GitHub and GitLab integration.
Alpha. Avi has not had a public release yet; v0.1.0 is the first tagged build. Expect rough edges, especially around provider authentication, OAuth, and multi-account flows.
- Tab-based repository view with status bar, branch info, and remote actions.
- Staged / unstaged file lists in Fork-style ordering, with selection-preserving stage and unstage operations.
- Commit graph view with per-commit file diffs.
- Changed-files tree that defaults to fully expanded, with expand-all and collapse-all controls.
- AI-assisted commit message generation through a configurable command or the OpenAI API, with an IDE-style debug drawer for the underlying run.
- Config file with live reload; secrets stored in the macOS Keychain.
- Repository picker with search, lazy metadata hydration, and clone-from-provider.
- GitHub / GitLab account management with Personal Access Tokens and
gh/glabCLI integration.
- macOS 14 (Sonoma) or later, Apple Silicon.
- Swift 6.2 toolchain (Xcode 16 or a recent Swift release).
- Optional CLI tools used by some features:
git(required),gh,glab,codex,claude. Configure paths in Settings → External Tools.
# Build everything (library + executable):
swift build
# Run the unit and snapshot tests:
swift test
# Launch the app in development:
swift run AviAppIf your installed Command Line Tools cannot link the SwiftPM manifest (a known
issue on stock toolchains without full Xcode), the repo ships a fallback build
script that bypasses swift build:
./build.sh # builds GitKit + AppUI + AviApp into .build/manual/
./build.sh run # build + launchTagged releases are built locally on a Mac with swift build -c release and
packaged by scripts/package-app.sh. See
docs/RELEASE.md for the full runbook.
The config file lives at ~/Library/Application Support/Avi/config.toml. It
is created automatically on first launch with defaults. See
docs/CONFIGURATION.md for the full schema and
config.example.toml for a complete example.
Tokens (GitHub / GitLab PATs, AI provider API keys) are stored in the macOS
Keychain (service com.avi) and are never written to the config file.
Tagged releases ship a zipped Avi.app bundle and a SHA256SUMS file on the
GitHub Releases page. Artifact names
follow the pattern avi-<version>-macos-arm64.zip.
Verify a download with:
shasum -a 256 -c SHA256SUMSThe bundle is ad-hoc signed, not notarized with a Developer ID. The first
time you launch the downloaded Avi.app, macOS Gatekeeper will refuse to
open it; right-click the app in Finder and pick Open, then click
Open in the warning sheet. Subsequent launches work normally.
See docs/RELEASE.md for the maintainer's release checklist.
Released under the MIT License. See LICENSE.
