Skip to main content

Git worktree isolation and provenance for AI coding agents

Project description

ait

Git-native safety rails for AI coding agents

Run Claude Code, Codex, Aider, Gemini, and Cursor in isolated Git worktrees with traceable commits, reviewable attempts, and repo-local memory.

PyPI npm Python License Status


AI agents are fast. Git history, review discipline, and handoff context often are not.

ait wraps the agent CLIs you already use and turns each run into a reviewable attempt. The agent edits an isolated worktree, ait records what happened, and your main checkout stays untouched until you promote the result.

pipx install ait-vcs
cd your-repo
ait init
direnv allow   # only if prompted

claude ...

Prefer npm?

npm install -g ait-vcs
cd your-repo
ait init
claude ...

The package is named ait-vcs on PyPI and npm. The installed command is ait.

Why Developers Use ait

Problem with agent coding What ait adds
A prompt edits many files at once Each run happens in an isolated Git worktree
The diff has no useful provenance Attempts link intent, command output, files, and commits
Agents leave partial or failed work behind You can inspect, discard, rebase, or promote attempts
The next agent repeats old investigation Repo-local memory summarizes prior attempts and commits
Tooling should stay local Metadata lives in .ait/ inside your repository

ait is not another agent. It is the Git layer around the agents you already trust.

What It Feels Like

Initialize once:

ait init
direnv allow   # only if prompted

Then keep using your agent:

claude ...
codex ...
aider ...
gemini ...
cursor ...

After a successful wrapped run, inspect the attempt:

ait status
ait attempt show <attempt-id>

Promote only when you are ready:

ait attempt promote <attempt-id> --to main

Until promotion, your root checkout stays unchanged.

Core Features

Feature Description
Worktree isolation Agent edits happen away from your root checkout
Attempt provenance Commands, status, output, changed files, and commits stay linked
Agent wrappers Repo-local claude, codex, aider, gemini, and cursor wrappers
Auto commit capture Successful changes become attempt-linked commits, without duplicating existing commits
Local memory Prior attempts, commits, notes, and imported agent memory feed future runs
Review flow Promote, discard, rebase, inspect, and query attempts using normal Git concepts

Quick Examples

Set explicit intent and commit text:

AIT_INTENT="Update README" \
AIT_COMMIT_MESSAGE="update README with Claude" \
claude -p --permission-mode bypassPermissions \
  "Shorten the README and improve the quickstart"

Wrap a command directly:

ait run --adapter claude-code --intent "Refactor query parser" -- claude
ait run --adapter codex --intent "Implement parser edge cases" -- codex
ait run --adapter aider --intent "Fix auth expiry" -- aider src/auth.py
ait run --adapter shell --intent "Regenerate fixtures" -- \
  python scripts/regenerate_fixtures.py

Use repo-local memory:

ait memory
ait memory search "auth adapter"
ait memory recall "billing retry"

Repair local setup if wrappers drift:

ait repair
ait repair codex

How It Works

your prompt
    |
    v
agent CLI wrapped by ait
    |
    v
isolated attempt worktree
    |
    v
attempt metadata + commits + memory
    |
    v
review, promote, discard, or rebase

The wrapped process receives:

AIT_INTENT_ID
AIT_ATTEMPT_ID
AIT_WORKSPACE_REF
AIT_CONTEXT_FILE   # when context is enabled

AIT_CONTEXT_FILE contains a compact repo-local handoff selected from previous attempts, commits, curated notes, and imported agent memory files such as CLAUDE.md and AGENTS.md.

Install

Recommended:

pipx install ait-vcs
ait --version

Virtual environment:

python3.14 -m venv .venv
.venv/bin/pip install ait-vcs
.venv/bin/ait --help

npm wrapper:

npm install -g ait-vcs
ait --version

Tagged GitHub release:

pipx install "git+https://github.com/m24927605/ait.git@v0.55.27"

Upgrade:

ait upgrade
ait --version

Preview an upgrade:

ait upgrade --dry-run

Useful Commands

ait status
ait status --all
ait doctor
ait doctor --fix

ait adapter list
ait adapter doctor claude-code
ait adapter setup claude-code

ait attempt list
ait attempt show <attempt-id>
ait intent show <intent-id>
ait context <intent-id>

ait memory
ait memory search "auth adapter"
ait memory lint
ait memory lint --fix

ait graph
ait graph --html

Shell auto-activation:

ait shell show --shell zsh
ait shell install --shell zsh
ait shell uninstall --shell zsh

Requirements

  • Python 3.14+
  • Git
  • SQLite from the Python standard library
  • Node.js 18+ only when installing through npm

Status

ait is currently 0.55.27 and alpha quality. It is intended for local dogfooding and early users who are comfortable with Git workflows.

Metadata is local to one repository under .ait/. It is not synchronized across machines.

Development

Set up the repository:

python3.14 -m venv .venv
.venv/bin/pip install -e .
.venv/bin/pip install pytest

Verify:

.venv/bin/pytest -q
.venv/bin/ait --version
.venv/bin/ait --help

Before a release:

git status --short
.venv/bin/pytest -q

The release version in pyproject.toml, the Git tag, and this README should match.

Documentation

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ait_vcs-0.55.27.tar.gz (194.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ait_vcs-0.55.27-py3-none-any.whl (163.8 kB view details)

Uploaded Python 3

File details

Details for the file ait_vcs-0.55.27.tar.gz.

File metadata

  • Download URL: ait_vcs-0.55.27.tar.gz
  • Upload date:
  • Size: 194.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for ait_vcs-0.55.27.tar.gz
Algorithm Hash digest
SHA256 8869a0735d73be1d9723882f22b42ea7f0848e5f11fa917624a1baf1571a81fc
MD5 51dff40f2fc18b7b41156b60871bed05
BLAKE2b-256 251981b639c340148fcaf5996bd401244688e35b465c3753b3d8a43ee680a147

See more details on using hashes here.

Provenance

The following attestation bundles were made for ait_vcs-0.55.27.tar.gz:

Publisher: publish.yml on m24927605/ait

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ait_vcs-0.55.27-py3-none-any.whl.

File metadata

  • Download URL: ait_vcs-0.55.27-py3-none-any.whl
  • Upload date:
  • Size: 163.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for ait_vcs-0.55.27-py3-none-any.whl
Algorithm Hash digest
SHA256 c3160f050719de6082083e1001057feb53ff304a3077a4a681a66ed995e93a1d
MD5 a200c97a7788fe3badf9c68c69bc6bda
BLAKE2b-256 d425a3d5e10783a6e6d17351fdd2ebe096891f84dc8947651b4576e2013b2e9b

See more details on using hashes here.

Provenance

The following attestation bundles were made for ait_vcs-0.55.27-py3-none-any.whl:

Publisher: publish.yml on m24927605/ait

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page