Built for AI coding agents·Remote-first git client

See what your AI agents are doing. Live.

Claude Code, Codex, Cursor and friends write code on your laptop, a dev VPS and a dozen worktrees at once. GitNut streams every repo, branch and uncommitted change from all of your machines into one window, with the log graph and diff viewer of IntelliJ IDEA.

curl -fsSL /install.sh | sh
GitNut · all uncommitted changes, live
Works with every agent that uses git
  • Claude Code
  • Codex
  • Cursor
  • T3 Code
  • Jean
  • Aider
  • Cline
  • plain git worktree
The problem

Agents work in parallel. Your git client doesn't.

Without GitNut

  • SSH into each box, cd into each worktree, run git status again and again
  • No idea which agent touched which file until it is already committed
  • Reviewing a whole task means stitching together diffs commit by commit
  • A desktop git client only sees one machine, one repo at a time

With GitNut

  • Every machine, repo and worktree in one sidebar, updating by itself
  • Uncommitted edits show up seconds after an agent saves a file
  • Select an agent's commits and read the combined change, file by file
  • Commit, fetch, pull and push without leaving the window
How it works

One small daemon per machine. One window for all of them.

  1. 1

    Agents work as usual

    In repos and worktrees on your laptop, a VPS or a build box. Nothing to change in your agent setup.

  2. 2

    GitNut watches

    The gitnut daemon finds the repos, polls only what you look at, and never takes a git lock, so it can't block an agent.

  3. 3

    You see it live

    Changes stream over WebSocket to the desktop app, a browser tab, or a panel inside your own tool. Over localhost or Tailscale.

  4. 4

    You step in

    Review, commit, fetch, pull, push. Hide noisy repos, watch whole folders so new agent repos appear on their own.

Features

Everything you need to keep up with your agents.

Live

Live uncommitted changes

Every worktree's edits, updated while agents type. "All uncommitted changes" merges several projects into one tree, so three agents on three repos fit on one screen.

Review a whole task at once

Ctrl+click the commits of one task, even far apart, and read their combined change per file, with word-level highlights and IntelliJ's connector bands.

All your machines

Laptop, VPS, CI box: each runs one gitnut daemon. Group projects by server or see one flat list.

Graph

Every agent branch in one graph

Local, remote and tag refs in one IntelliJ-style graph: same lanes, colours and long-edge arrows, smooth with 80k+ commits. See where each agent branched off and what it merged.

Embed it in your agent tool

Every piece is a React component. Put <LocalChanges/> next to your agent's chat, or embed the whole client with an iframe.

Light and safe

One binary, no database, no git locks. Localhost by default, token auth and Tailscale when you open it up. Self-updates with checksums.

Screens

Feels like IntelliJ. Looks like 2026.

For tool builders

Show your agent's changes inside your own app.

Building an agent UI? Drop in one component and your users see exactly what the agent changed, live, without leaving your app.

import { LocalChanges } from "@gitnut/client";

// Live uncommitted changes of the agent's worktree, next to its chat.
<LocalChanges
  server={{ url: "http://127.0.0.1:7420" }}
  worktreePath={agent.worktree}
  theme={{ colors: { primary: "#0f766e" }, radius: { md: "10px" } }}
/>
Download

Get GitNut

The desktop app starts its own daemon and opens the client. On servers, install the CLI: it is the daemon too.

What's new →

CLI and daemon

curl -fsSL /install.sh | sh
irm /install.ps1 | iex

Installs to ~/.gitnut/bin after checking the SHA-256. Then gitnut service install and open the URL from gitnut status. Add projects in the app.

Binaries

Builds are not signed yet. macOS: run xattr -rd com.apple.quarantine /Applications/GitNut.app after copying the app. Windows: SmartScreen → More info → Run anyway.

Support

Stuck, or want to help?

Get help

Found a bug or have an idea? Open an issue. The README covers setup, the daemon and embedding.