Skip to main content

gitnolo

Autonomous git for coding agents. gitnolo watches Claude Code, Kiro, Antigravity and other CLI agents across every repository on your machine. The moment an agent finishes a task, it splits the work into up to 15 focused commits, pushes a branch, opens a pull request, merges it, and files issues for problems the agent reported but did not fix.

Community edition: works on public GitHub and GitLab repositories only.

             ▄██              ✻ Welcome to gitnolo
            ▄█▀██             Autonomous git for coding agents
           ██  ▀█▄
         ▄█▀    ██▄           repo       my-app on main
        ▄█▀      ██▄          agents     2 working · 1 waiting
 ▄▄    ██         ██    ▄▄▄   commits    up to 15 per change
 ▀▀█▄▄█▀           ██▄▄█▀▀    github     auto PR + merge
    ████▄▄       ▄▄███▀
  ▄█▀   ▀▀▀████▀▀▀▀  ██▄
 ▀▀                   ███

Install

pip install gitnolo && gitnolo

Or with the installer script:

curl -fsSL https://festomanolo.com/gitnolo/install.sh | sh && gitnolo
gitnolo doctor

This needs macOS or Linux (on Windows, use WSL), Python 3.9+ and git. The installer creates a private environment in ~/.gitnolo/app and links gitnolo into ~/.local/bin. To uninstall: rm -rf ~/.gitnolo/app ~/.local/bin/gitnolo.

GitHub access is taken from GITHUB_TOKEN, gh auth token, or the credential git push already uses. To set a token explicitly: gitnolo config set github_token <token>. GitLab (gitlab.com or self-hosted via GITNOLO_GITLAB_HOSTS=git.example.com) uses GITLAB_TOKEN, glab, or gitnolo config set gitlab_token <token>.

Use

gitnolo watch -y        # live dashboard; commits, PRs and merges when agents finish
gitnolo commit          # do it now for the current repo
gitnolo agents --live   # which agent is doing what, where

What it knows about your agents

gitnolo reads each agent's own session log, not just the process list. For every session it knows whether the agent is:

  • working
  • waiting for your approval
  • finished
  • interrupted by you
  • out of usage, along with the reset time
  • failing on network, server or login errors
  • stuck in a loop
  • closed mid-task

Commits happen only when a task has really finished, no other agent is still working in that repo, and the files have stopped changing. Work from an agent that stopped early goes to a draft PR and is never merged until the agent completes.

Commits

  • Up to 15 per change. Commits are split from file groups down to individual lines, written in about a second, and verified against your files byte for byte. A small change gets fewer commits; there are never empty ones.
  • Messages name what changed. Each message is a Conventional Commit naming the functions and classes it touches, for example feat(api): add fetchUser().
  • Never touches your files. Your working tree is untouched while agents keep editing.
  • Skips secrets. .env, keys and certificates are never committed.

Terminal git client

Run gitnolo and pick with the arrow keys; no commands to remember.

gitnolo graph        interactive color-coded commit graph with per-commit actions
gitnolo ops          stage, commit, push, pull, switch, merge, tag, stash
gitnolo conflict     side-by-side 3-way merge editor (ours | base | theirs), AI merge
gitnolo rebase       reorder (space + arrows), squash, fixup, reword, drop
gitnolo explain X    AI explains a commit, a file's history, or FILE:START-END

GitLens in the terminal

gitnolo blame FILE[:START-END]     gitnolo history FILE[:START-END]
gitnolo graph                      gitnolo compare main feature/x
gitnolo branches                   gitnolo contributors
gitnolo hotspots                   gitnolo search QUERY --mode code
gitnolo show REV                   gitnolo timeline
gitnolo insights                   gitnolo stash | worktree | conflict | pr

Supervise an agent

gitnolo supervise claude

gitnolo auto-approves the agent's confirmation prompts. Destructive commands such as rm -rf ~, force pushes and DROP TABLE are never auto-approved; it alerts you instead.

Optional AI

gitnolo works fully offline: commit messages and issue detection are rule-based and instant. For AI-written PR summaries and issue filtering, add a free OpenRouter key:

gitnolo config set openrouter_api_key sk-or-...
gitnolo ai --test

A built-in guard stays below OpenRouter's free-tier limits and falls back to the rules when it reaches them. A local Ollama model also works: gitnolo config set ai_provider ollama.

Configuration

gitnolo config shows every setting, and gitnolo config set <key> <value> changes one, for example auto_merge false or settle_seconds 5.

Made by

festomanolo · github.com/festomanolo · festomanolo.com

Notes

  • Commits are written with git fast-import: hooks do not run and commits are not signed.
  • gitnolo watch --plain prints a line log instead of the dashboard, for running it as a background service.

MIT License · Made by Festo K. Magembe · festomanolo.com/gitnolo

Uninstall

curl -fsSL https://festomanolo.com/gitnolo/uninstall.sh | sh

Add -s -- --purge after sh to also delete settings and sign-in.

Metadata

Release files for gitnolo 0.6.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for gitnolo 0.6.0
File Size Uploaded
gitnolo-0.6.0.tar.gz 139.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for gitnolo 0.6.0
File Interpreter ABI Platform
gitnolo-0.6.0-py3-none-any.whl Python 3 none any Details

Total release size: 282.0 kB

Release files / gitnolo-0.6.0.tar.gz

Download URL gitnolo-0.6.0.tar.gz
Size 139.5 kB
Tags Source
SHA-256 checksum
How to use checksums
297775559f158fa0793a4fac06740afc34fb66f9ecd4f3ed56c538b53fcbc2d5
BLAKE2b-256 checksum
How to use checksums
ff1828b2da11a44c599bd35d517eec5ac35b7beba2aec9f6f70baf620a1aa2e1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.8

Release files / gitnolo-0.6.0-py3-none-any.whl

Download URL gitnolo-0.6.0-py3-none-any.whl
Size 142.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
a4be9146265fdfdbe8c0de67537c8c90153a30142f5a4ee4912601d894df84d6
BLAKE2b-256 checksum
How to use checksums
e49e5d1257f123556bde19ceaedc235399ea81d14a126e6f06a78435132ddb47
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.8

Release history Release notifications | RSS feed

This release

0.6.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page