A lightweight git UI with an embedded terminal — for people who want to live in the terminal but still get visual help when it matters.
Via is built on a simple principle: the terminal is the action surface; the UI is for visualization, situational awareness, and frictionless transfer of text into the terminal.
That means Via deliberately doesn't ship buttons for commit, push, rebase, squash, etc. Where another GUI would do something for you, Via either shows you the state behind it or pre-fills the terminal with the matching command for you to review and run yourself. The result is a tool that augments your terminal workflow instead of replacing it — and helps you build muscle memory for git itself rather than dependence on a GUI.
- Real-time diff panel that auto-collapses when your tree is clean, giving the terminal more room
- Branch indicator with
↑N ↓Mahead/behind your upstream, plus a muted● localbadge for branches with no upstream and a⚠ upstream gonebadge after PR-cleanup deletes - Background
git fetch --pruneevery two minutes (withGIT_TERMINAL_PROMPT=0so it fails fast on auth-required remotes instead of hanging) - Pop-out diff window for big-screen review — opens in a separate Electron window that stays in sync with the main view
- Paginated commit log of the current branch — or all branches via a toggle
- Collapsible filters on top: file chips, date range, quick filters (24h / 3d / 1w / 2w / 1m / 3m); auto-applied with a small debounce
- Ref decoration as small badges (
HEAD → branch,tag: v1.0, plain branches) - PR/issue linkifier:
#123andowner/repo#456references in commit messages become clickable GitHub links - Click any commit → its full diff opens in a modal with collapsible per-file sections
git blameviewer — pick any tracked file, get a per-line view of who last touched it (follows renames automatically); click a line to view that commit's diff. Right-click a changed file in the diff panel to jump straight in.
- Stashes & Logs — list
git stashentries and the last 200 reflog entries. Each row has compact action buttons (Apply ▶ / Pop ▶ / Drop ▶ / Reset to here ▶) that pre-fill the matching command in the terminal — they never auto-execute, so you always review and hit Enter yourself.
Hold Cmd and click on:
- Any command in the Git Reference cheat sheet
- Any commit hash in History (full 40-char SHA gets sent, even when only 8 chars are shown)
- Any file path in the diff panel
- Any stash ref or reflog ref
…and Via inserts the text into your active terminal with a trailing space. You finish typing or hit Enter to run.
Save frequently used terminal commands as snippets — run them in the active tab or a new one, with optional auto-run on insert. Pin up to eight snippets to a radial wheel that pops up when you tap Ctrl.
- Custom themes with built-in presets and a hex-based custom editor; themes are picked up by the pop-out diff window automatically
- Collapsible icon rail — the sidebar collapses (
Cmd+M) to a 48px rail with all repos as letter-icons and every tool as an icon; instant tooltips on hover - In-app changelog viewer with the version highlighted, plus links to the GitHub Releases and raw
CHANGELOG.md - Right-click context menus on repos, branches (with delete + local-only / local + remote dialog), and files
- Auto-updates from GitHub Releases on app launch
- Download the latest
.dmgfrom Releases - Open the
.dmgand drag Via to your Applications folder - Launch Via from Applications
Via is open source and not signed with an Apple Developer certificate, so macOS will block the first launch. To fix this, run the following after installing:
xattr -cr /Applications/Via.appOr: System Settings > Privacy & Security, scroll down, and click Open Anyway next to the Via warning.
Requires Node.js (v18+) and git.
# Clone the repo
git clone https://github.com/JuriKiin/Via.git
cd Via
# Install dependencies
npm install
# Build the .dmg and .app
npm run buildThe built Via.dmg (installer) and Via.app will be in dist/.
To run the .app directly:
open dist/mac-*/Via.appnpm install
npm startThis runs Electron directly for fast iteration. The dock icon will show "Electron" instead of "Via" in dev mode — this is normal.
| Shortcut | Action |
|---|---|
Cmd+M |
Toggle sidebar (icon rail) |
Cmd+T |
Open terminal |
Cmd+N |
New terminal tab |
Cmd+F |
Open History (search & browse) |
Cmd+P |
Open repository |
Tap Ctrl |
Show snippet wheel |
Cmd+click |
Send command/hash/path to terminal |
Esc |
Close modal / popup / snippet wheel |
See CHANGELOG.md or browse Releases. The changelog is also available inside the app under the Changelog entry in the sidebar.
ISC