Skip to content

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.