Download · Install · Website · Every feature · What's new
Coding with agents turned the day into reading code. You run Claude Code or Codex in a few worktrees, and juggle an editor to read files, a git client for diffs, terminals to run things and a browser to check the result. GitViber is all of it in one window, and your agents can use the window too.
| Agents get a browser | On macOS, Claude Code and Codex open pages, click, type and read the console in tabs of their own, in the background. |
| ~20 MB download | Native Rust drawn on the GPU, with no web view under the window. About 100 MB of memory with a repo open, and a closed tab or terminal gives its memory back. Measured. |
| Waits for changes | File changes come from the system's file events, not from scanning the disk. |
| Plain git, no telemetry | Your own git, config, hooks and signing. No account, no API keys. Details. |
Every agent gets its own worktree, and you see all of them at once.
- Switch from the top bar. Each worktree shows its change count, pull request and check status.
- Start from anything. A branch, a commit, an issue or a pull request. A new worktree can run
clauderight away and gets your.envcopied in. - Know who needs you. A ring while Claude Code works, a dot when it finishes or asks, a desktop notification if you want one. The Agents menu lists every agent, the waiting ones first.
- Pick up where you left off. Quit with agents running and the restored terminal has the command that resumes the conversation already typed.
Agents in your terminal can drive a real browser, right inside GitViber (macOS for now).
Turn it on in Settings → Browser: Claude Code and Codex learn the gitviber browser command by themselves, and any other agent gets a note to paste.
- Hidden, and out of your way. Agents work in tabs of their own, opened in the background. They never take your window, your pointer, your keyboard or your clipboard.
- Keeps working when you don't look. Their tabs keep drawing while GitViber is hidden or minimized, so a long run doesn't stall behind another app.
- Light on CPU and RAM. It's the system's WebKit, with no second browser to launch. A tab nobody touched for a while slows down, one unused for an hour closes, and a Mac low on memory gets it back from sleeping tabs at once.
- Logins that are theirs, or shared. Each tab signs in apart from the others and from you, so two tabs can be two accounts of the app you're testing. Save a login once as a session and any tab or agent in that repository can load it.
- Acts like a person. Real clicks, keys, hover and drag, waits for elements to be ready, and every action reports what changed. Popups open as tabs, downloads land in a folder, frames and file uploads work.
- Sees what you'd see in DevTools. The page as a tree it can act on, screenshots, the console, and every request with headers, bodies and WebSocket frames.
- You can step in. Click or type in an agent's tab and it's yours, until you press Give back.
More: agents driving the browser →
Your own agent reads the diff first and tells you where to look.
- Guided Review. For a pull request, a commit, a branch or what isn't committed yet: an overview, a diagram of the data and flow it touches, then sections in reading order, each with its category, how important it is and a one-line check. Mark them reviewed as you go.
- Find Risks. The change's concrete problems, most severe first: wrong logic, edge cases, races, security and data loss.
- Ask Agent. Any section or risk opens a Claude Code session in the worktree with that part in its prompt box, so the agent can fix the files too.
No extra account: it runs the claude or codex CLI you're already signed in to.
Diffs refresh the moment an agent saves, without losing your place.
- Unified or split, word-level highlights, unchanged lines folded away.
J/Kwalk the changed files,Vmarks one viewed. If the agent touches it again, the mark clears so you know to look again.- Edit the new side right in the diff, stage single lines, stash just the lines you pick.
- Review pull requests in the same viewer, commit by commit if you like, with its checks beside it.
A real terminal under the diff (⌘J), with tabs and splits.
- Every command is marked, red when it failed, with how long it took.
⌘↑/⌘↓jump between them. - Click what it prints. Paths open at the line,
#123opens the pull request, a SHA opens History.⌃⇧Spaceputs a letter on every link, even inside vim or Claude Code. - Made for agents. Paste a screenshot or drop files and Claude Code or Codex gets their paths. Shift+Enter works, and a trackpad swipe scrolls Claude Code's fullscreen view.
Check the agent's work where you read it. View → Open Browser opens a tab beside the code (macOS for now; on Linux a tab offers to open its page in your browser).
- Your dev server, one click away. Beside the address, a list of every port your worktree's terminals serve. Device mode draws a phone or tablet around the page.
- Point at it.
⇧⌘Cpicks an element and starts an agent session with the selector, React components, styles and a picture of it. Console errors and failed requests go to the agent the same way.
A full file explorer, so for most days the editor stays closed.
- Change bars in the gutter, quick open (
⌘P), rename, create and delete. Fix a line and save with⌘S. - Markdown renders like GitHub shows it: Mermaid, math, alerts, frontmatter as a table.
- Your Obsidian vault shows beside the code, found on its own, with wikilinks, embeds, canvases and all.
Hit the sparkle next to the commit box and your own claude -p or codex exec writes the message
from the diff. New pull request does the same for the title and description. No API key, no extra
account: it uses the CLI you're already signed in to.
Everything you'd open another app for, in the same window:
| History | A colored lane graph. Reword, squash, drop, reorder or split commits, cherry-pick several at once, compare any two points, bisect. |
| Branches | Merge, rebase, pull. Compare any two branches and see what would conflict before you merge. |
| Conflicts | Resolve block by block, or take a whole side, then continue, skip or abort. |
| Pull requests & issues | List, filter, read, review, create, merge and check out. (GitHub) |
| Patches | Copy a commit, one of its files or a stash as a patch. Apply one with a preview, and ⌘Z takes it back. |
Eleven color themes, 24 syntax themes, your own fonts and scale, a see-through window on macOS. Most
actions have a shortcut, every one can be rebound, and holding ⌘ shows the ones that work where
you are (the list).
A ~20 MB download for macOS 13 or later, signed and notarized, for Apple Silicon and Intel:
brew install --cask emircan-sahin/tap/gitviberOr grab the .dmg for your Mac from Releases:
GitViber_<version>_aarch64.dmg for Apple Silicon (20.6 MB), GitViber_<version>_x64.dmg for
Intel (23.7 MB). Apple menu → About This Mac says which chip you have; Homebrew and the updater pick
the right one themselves.
Linux x86_64 from the same page: .deb for Debian and Ubuntu, .rpm for Fedora, .AppImage for the rest.
sudo apt install ./GitViber_*_amd64.deb # Debian, Ubuntu
sudo dnf install ./GitViber-*.x86_64.rpm # Fedora
chmod +x GitViber_*_amd64.AppImage && ./GitViber_*_amd64.AppImageOpen a repository from a terminal with gitviber ., or a file at a line with gitviber src/app.ts:42.
On macOS, GitViber's own terminal has the command with nothing to install and the Homebrew cask
links it; for another terminal, Install 'gitviber' Command in the GitViber menu links it into
Homebrew's bin folder. On Linux the .deb and .rpm put it on your PATH, and for the AppImage the
same item (under File) writes a launcher to ~/.local/bin. GitViber tells you when a new version is out; the macOS app and the AppImage
update in place, and a .deb or .rpm sends you to the Releases page. Every release lists
SHA-256 checksums in SHA256SUMS.
GitViber is used daily on macOS. The Linux builds are tested in CI, but the app itself is only starting to get used there (#35), and its browser tabs are macOS only for now. Windows is untested and has no build yet.
- macOS 13 or later, or a Linux as new as Ubuntu 22.04 (the release is built there, against its glibc).
- git 2.36 or newer. GitViber runs your own git, and says so if it can't find one. On macOS,
xcode-select --installor Homebrew'sgitwill do. - On Linux: GTK 3, xkbcommon, X11 or Wayland, fontconfig, FreeType and a Vulkan driver for your
GPU, which draws the window. The
.deband.rpmpull these in; the AppImage holds only the app and uses your system's. - Optional: the GitHub CLI (
gh auth login) for pull requests and issues; git's stored github.com credential works too.claudeorcodexfor commit messages and guided reviews written for you.
You need rustup (it installs the Rust version rust-toolchain.toml pins) and
git; on Linux, the libraries CONTRIBUTING.md lists.
git clone https://github.com/emircan-sahin/gitviber && cd gitviber
cargo build -p gitviber --release # target/release/gitviber
scripts/macos.sh build --host && scripts/macos.sh app && scripts/macos.sh sign
# macOS: target/dist/macos/<arch>/GitViber.app, ad hoc signedNo telemetry, no API keys, no account. The app talks to your git remotes and, for pull requests and issues, GitHub, borrowing a login you already have (the GitHub CLI first, then git's stored credential) and keeping the token in memory. Errors go to a local log file and nowhere else. Browser tabs keep their own cookies, apart from your other browsers. Agent control of the browser is off until you turn it on. Everything, in detail →
Will macOS say it "can't be opened" or "is damaged"? Not for a release: the app is signed
with a Developer ID and notarized by Apple. If it does, the download didn't come from
Releases or was changed on the way; check
it against SHA256SUMS and download it again. A build of your own isn't notarized, but it's
already trusted on the Mac that built it.
How do I sign in to GitHub? There's no sign-in of its own. Run gh auth login once, or have
git remember a github.com login (any HTTPS push does) and press "Use it" on the sign-in screen,
and GitViber borrows it. An SSH key signs git in but not GitHub's API, which lists pull requests
and issues, so an SSH clone needs gh auth login too. Nothing asks for a login by itself: until
you sign in, the Pull requests and Issues tabs show a sign-in screen. With more than one account
in gh, pick the one a repository uses in Settings → Git. See Privacy.
Where are the logs? Help → Show Logs. They're at ~/Library/Logs/app.gitviber.desktop/ on
macOS and ~/.local/share/app.gitviber.desktop/logs/ on Linux. Help → Copy Diagnostics copies
the versions a bug report needs.
Where are my settings? In the app's own folder, never in your repositories:
~/Library/Application Support/app.gitviber.desktop on macOS, ~/.config/app.gitviber.desktop on
Linux. On its first launch the native app brings over the settings, recent projects and terminals
of an earlier GitViber.
How do I uninstall it? On macOS, drag GitViber to the Trash (or
brew uninstall --cask --zap gitviber, which also removes its settings, caches, logs and browser
data). On Linux, sudo apt remove git-viber or sudo dnf remove git-viber, or delete the
AppImage. To remove the settings by hand, delete the folder above, the logs folder, and
~/Library/Caches/app.gitviber.desktop and ~/Library/WebKit/app.gitviber.desktop on macOS or
~/.cache/app.gitviber.desktop on Linux.
All Rust: the window is drawn with GPUI on the GPU (Metal on macOS, Vulkan on Linux). Diffs are
computed with similar, syntax colors come from tree-sitter, the terminal is alacritty_terminal,
and browser tabs are WebKit views laid over the window.
cargo run -p gitviber -- . # run the app on this repositoryBug reports and small, focused PRs are welcome. CONTRIBUTING.md covers setup, the checks CI runs and the few rules the app depends on. Report security issues privately, see SECURITY.md.
GPL-3.0. Use it, change it, share it; a fork you ship has to stay open under the same license.

