Hands-on guides for the
git-native intelligence layer.
Reference articles for engineers shipping AI-driven code on top of Git. Running several agents on one repository, reading changes as structure instead of text, and keeping a record of what an agent did and why: answered properly, with code.
Comparison
Aura Crew vs Claude Code Loops: the autonomous work-loop, compared
Claude Code names four loop types: turn-based, goal, time, proactive. Aura Crew is the same idea with proof, collision-safety and any agent you like.
Agent work-loop harnesses compared: Aura Crew, Ralph, Beads, and the bash loop
From a while-true bash loop to dependency-aware task trackers to a proof-gated work-loop: how the ways to run an agent autonomously compare.
Concepts
Autonomous coding agent loops, explained: turn-based, goal, time, and proactive
An agent repeating cycles of work until a stop condition is met. The four loop types explained, when to use each, and how to keep the quality up.
Goal-based agent loops: giving a coding agent a definition of done
A goal-based loop iterates until a success criterion is met. The trick is a deterministic definition of done — tests, a score, a proof — not a guess.
Multi-agent
How to run multiple coding agents in parallel without merge conflicts
Several AI agents at once collide on shared files. The fix: a worktree per agent, a live team radar, and zone claims so no two ever touch one symbol.
Agent collision detection: stopping two AI agents editing the same function
Two agents on one repository will eventually rewrite the same function. How collision detection works at file, symbol and branch level, and what to do.
The agent inbox: how parallel coding agents talk to each other
A message queue between AI coding sessions, for handing off work and warning about collisions. What belongs in it, and how it differs from a shared chat.
One Git worktree per agent: the pattern behind parallel AI coding
git worktree gives each agent its own directory and branch off one repository. How the parallel-agent pattern works, where it breaks, what to watch for.
Handing context from one agent to the next
A context window fills and the session ends. What to carry into the next one, what to leave, and how a handover differs from a chat transcript.
Agent strategy inbox contents — what shows up and how to act on it
The sentinel inbox carries strategy messages between agents — handoffs, conflict alerts, plan amendments. The schema, and how to triage from the CLI.
Reference
AGENTS.md and CLAUDE.md: which instruction file does what
AGENTS.md is the vendor-neutral instruction file; CLAUDE.md is Claude Code’s own. What reads each, how they interact, and how to keep one source of truth.
Aura MCP — the Model Context Protocol server for git-native version control
A 29-tool MCP server that lets Claude Code, Cursor and any MCP client read AST graphs, log signed intent, snapshot files and prove behaviour.
dotenv duplicate keys — does last win? (Aura's deterministic resolver)
Most parsers say "last duplicate key wins" — but it depends which library you load. Aura uses a deterministic resolver and warns on every collision.
Review
How to review a pull request an AI wrote
Reviewing agent-written code is a different job. What to check first, which failure modes are specific to agents, and how to read a 4,000-line diff.
Intent poisoning: when the commit message and the diff disagree
A commit whose stated purpose does not match what the code did. Why agents produce it, why it beats a sloppy message for damage, and how to detect it.
Semantic
Semantic diff vs git diff: what changes when you compare structure
A git diff compares lines. A semantic diff compares parsed structure, so a rename is a rename and a move is a move. What that changes, and what it costs.
Semantic diff for Rust: traits, impls and what a text diff misses
Rust makes text diffs misleading: impl blocks move, trait bounds change meaning without changing shape, macros hide the edit. What structure sees.
Tree-sitter and the AST: how tools read your code
Tree-sitter parses source into a concrete syntax tree fast enough for every keystroke, and keeps working on code that does not compile. What it holds.
AST merge and text merge: why some conflicts should not exist
Git merges lines, so two agents editing different functions in one region conflict for no reason. What a structural merge resolves, and what it cannot.
Shadow branches: keeping tool metadata out of your history
A shadow branch keeps a tool’s own data in the repository without putting it on the branches you push. How it works with Git refs, and what breaks.
A Merkle graph of your code, and what it makes cheap
Hash every node of the syntax tree from its children up and comparison, caching and change detection get cheap. Git’s trick on files, applied inside.
Structural code search: finding patterns instead of strings
Grep finds text. Structural search finds shapes: every call with a literal timeout, every catch that swallows the error. How AST queries beat a regex.
Governance
An immutable audit log for AI-written code
What to record when an agent writes code, how to make the record tamper-evident with hash chaining and signatures, and what an auditor asks.
Running coding agents on an air-gapped network
Running AI coding agents with no route to the internet: local models, offline tooling, and moving artefacts across the boundary without breaking it.
Code provenance: tracing a line back to the session that wrote it
git blame names whoever ran the agent. Provenance needs the session, the model, the instruction and the reasoning, attached to the change itself.
Stopping agents deleting code nobody agreed to delete
Autonomous sessions remove code to make things compile, and it rarely reaches the summary. How a pre-commit guard on unaccounted deletions works.
Operations
What an agent session actually costs, per response
Input, output, cache writes and cache reads are priced differently, and long sessions are dominated by re-read context. Where the money actually goes.
A self-hosted stack for AI-assisted development
Which parts of an agent workflow can run on your own infrastructure, which cannot, and what each choice costs in quality and effort.
Reference notes
How to prove an AI code change did what you asked
AI writes plausible code that quietly does the wrong thing. Proving a change ties the commit to its goal and records a verdict you can audit.
Mask secrets in sync errors and diffs — how Aura redacts before they leak
Aura's redact pipeline strips API keys, JWTs and dotenv values out of sync errors, diffs and agent prompts before they leave the machine.
Homebrew on Apple Silicon — the official default prefix is /opt/homebrew
On Apple Silicon Macs, Homebrew installs to /opt/homebrew by default — not /usr/local. The official docs and the Aura CLI both expect this prefix.
tree_sitter_typescript::language_tsx in Rust — the right way to wire it up
Using tree_sitter_typescript::language_tsx() from Rust without crashing on JSX-heavy files: crate compatibility, parser init, and how Aura uses it.