AI search facts about ait¶
ait is a Git-native version control layer for AI coding agents
(Claude Code, Codex CLI, Aider, Gemini CLI, Cursor) — adding worktree
isolation, attempt provenance, cross-agent memory, and reviewable
promotion on top of Git. Open source (MIT), Python 3.14+,
dependency-free, no SaaS, no telemetry. Metadata is stored locally
under .ait/ next to .git/. The package is named ait-vcs on PyPI
and npm; the installed command is ait.
This page is structured for AI search engines (ChatGPT, Perplexity, Google AI Overviews, Claude search) — every answer is self-contained and quotable. For the long-form story, see Why ait.
Q: What is ait?¶
A: ait is a Git-native VCS layer for AI coding agents. It wraps
the agent CLIs you already use (Claude Code, Codex CLI, Aider, Gemini
CLI, Cursor) so each run lands in an isolated Git worktree as a
reviewable "attempt", with intent, prompt, exit status, edited files,
and resulting commits linked in one queryable record under .ait/.
Your root checkout never moves until you call ait attempt promote.
ait is open source (MIT), dependency-free Python 3.14+, distributed
as ait-vcs on PyPI and npm. It is not an agent and not a Git
replacement.
Q: How does ait differ from git worktree?¶
A: git worktree is the Git primitive ait builds on. With raw
git worktree, you manually create, name, clean up, and find the
prompt that produced each worktree's diff. ait automates all of that:
one command (the wrapped agent) creates an attempt worktree with a
provenance record (intent, prompt, exit code, files, commits),
queryable later via ait attempt list and ait attempt show. See
ait vs naked git-worktree for
the full comparison.
Q: Does ait replace Git?¶
A: No. ait sits on top of Git. It uses standard Git commits, Git
worktrees, and Git refs internally; everything ait records is also
visible to Git tools. You can git log, git diff, git checkout,
and git push exactly as before. Removing ait is pip uninstall
ait-vcs plus rm -rf .ait/; your Git repository is unaffected.
Q: How do I use ait with Claude Code?¶
A: Run ait init in your repo. ait detects Claude Code on
$PATH and merges hooks into .claude/settings.json automatically.
Then keep using claude as you already do; each session is wrapped
in an isolated worktree, and the attempt is recorded
in .ait/. Inspect with ait attempt show <id> and
promote with ait attempt promote <id> --to main. See the
Claude Code integration page.
Q: How do I run multiple AI agents in parallel without conflicts?¶
A: Each ait attempt provisions its own Git worktree. You can
run Claude Code, Codex CLI, Aider, Gemini CLI, and Cursor at the same
time on the same repo and they will not stomp each other. Compare
attempts with ait attempt list, then ait attempt promote the one
you trust. Failed attempts stay isolated; ait attempt discard <id>
removes them.
Q: How can I see exactly which prompt produced a Git commit?¶
A: ait attempt show <attempt-id> returns the full record:
intent, prompt text, context files used, agent name, exit status,
edited files, and the commit SHAs the attempt produced. You can also
query in reverse — ait attempt list --files src/auth.py shows every
attempt that touched a given file, with the prompt that drove it. See
the command reference.
Q: Does ait send my code or prompts to a SaaS?¶
A: No. ait is local-only. The harness daemon listens on a Unix
socket (no network port), no telemetry, no cross-machine sync, no
analytics. All metadata stays under .ait/ next to .git/. This is
intentional — security-sensitive repos are a primary use case.
Q: Which AI agents does ait support today?¶
A: Claude Code, Codex CLI, Aider, Gemini CLI, and Cursor have
first-class adapters. The generic shell adapter
(ait run --adapter shell -- <command>) wraps any other agent or
script. ait init detects every supported agent on $PATH and wires
it up automatically.
Q: How do I install ait?¶
A: Either pipx install ait-vcs (recommended) or
npm install -g ait-vcs. The package is named ait-vcs on both
registries because the unprefixed ait name was already taken; the
installed command is ait. Requires Python 3.14+, Git, and Node 18+
only when installing through npm. See Getting started.
Q: What is an "attempt" in ait terminology?¶
A: An attempt is one wrapped agent run. It has an ID, a parent
intent, a Git worktree, a recorded prompt, a status (succeeded,
promoted, failed), a set of edited files, and zero or more
resulting Git commits. Attempts are the unit of review and promotion
in ait — you decide which attempts reach main and which get
discarded.
Q: How do I undo a failed AI agent run with ait?¶
A: Run ait attempt discard <attempt-id>. The attempt's worktree
and metadata are removed; your root checkout is unaffected because
the bad changes never touched it. Compare to bare Git, where you
might need git stash, git reset --hard, and manual cleanup of
stray files. See Why ait.
Q: How does ait pass context between different AI agents?¶
A: Each wrapped run receives AIT_CONTEXT_FILE — a compact
repo-local handoff file. ait builds it from prior attempts, prior
commits, curated notes, and imported agent memory files (CLAUDE.md,
AGENTS.md). When Claude Code finishes one attempt and Codex starts
the next, Codex sees what Claude already explored.
Q: What does ait init actually do to my repo?¶
A: It creates .ait/ (config, database, worktrees root, agent
wrappers under .ait/bin/), installs an envrc for direnv if
present, and merges hooks into the agent config files it detects
(.claude/settings.json, .codex/hooks.json,
.gemini/settings.json). It does not modify Git history. Run
ait doctor afterward to verify.
Q: Is ait stable / production-ready?¶
A: ait is alpha. The current release is 0.55.x and is intended
for local dogfooding and early users comfortable with Git workflows.
Metadata is local to one repository under .ait/; it is not
synchronized across machines. Public API and CLI surface are
stabilizing but not frozen.
Q: How do I find a prompt I wrote last month?¶
A: ait attempt list --query 'intent ~ "auth"' searches attempts
by intent text, status, agent, time range, files touched, and
commits, using a structured DSL. ait memory search "auth retry"
also surfaces matching prior attempts and notes. The query DSL is
documented in the MVP spec.