Apache-2.0 · pip install awgit

Git tracks lines.
awgit tracks code nodes.

When two agents edit the same function minutes apart, git records a tidy linear history and tells you nothing. awgit keys every edit to a stable node id, so that collision is a thing you can see — and, if you want, refuse.

Live, from this tool measuring itself

These numbers come from awgit's own op-log in the repository it was built in, published as aither-manifest.json. Nothing here is hand-written.

—
edit-ops captured
—
distinct authors
—
confirmed collisions
—
lease adoption
loading…
A confirmed collision is one code node edited by two distinct sessions. The raw count is higher; entries where one worker appears under an old and a new attribution label are excluded, because they look like collisions and are not. This page shows the number that survives that filter.

Install

pip install awgit              # Python node identity
pip install "awgit[multilang]" # + TypeScript, Go, C#, 70 more extensions

What it actually does

Node identity that survives movement

A function that moves to the top of a file and has its body rewritten keeps its id. That single property is what makes node-level merge possible — without it, every reorder reads as a delete plus an add, and the merge is worth nothing.

Leases, so a collision is refused rather than discovered

awgit lease list                 # who is in this file right now
awgit lease acquire --staged     # claim what you are about to commit

With enforcement on, the pre-commit hook rejects a commit whose staged files you don't hold: no active lease covering: <path>. The identity is derived per session, so nothing needs configuring.

A graph, because the op-log is one

awgit graph                      # mermaid: files, nodes, who touched what
awgit graph --format json        # node/edge form for a graph store

Files render as subgraphs with their code nodes inside; a node two authors touched is drawn as a collision. That's the only part of the picture that means something is wrong.

What is proven, and what is not

Replayed against 1,833 real merge commits: every one the node engine could evaluate came back clean — no false conflicts. That proves it doesn't cry wolf on real history, which is the failure mode that would kill it on contact.

It does not yet prove superiority over git. Zero false positives also means zero cases where awgit rescued something git lost. The evidence that matters is the collision count above, and it is early and small. It grows on its own; the honest thing is to say so rather than dress it up.

awgit is a Python semantic VCS with a language-agnostic lease layer. With the multilang extra its node identity extends to 20+ languages; without it, non-Python files still get leases but no semantic diff. It reports which, rather than implying coverage it doesn't have.

The constellation

Three packages, three different questions about the same repository: awgit knows what changed and who is editing it; awgraph knows what the code is and what depends on what; awrelay knows who found what and who still needs to hear it. awdk is the agent runtime that consumes all three.

None of the three requires the others. Used together, an agent can find a symptom with awgraph, check whether it is an in-flight edit with awgit, and tell the agent already working that file with awrelay — three questions a solo grep-and-guess loop cannot ask at all.

The Aither World is an operating system for agents — a Linux you can hand to one, the runtimes it works in, and the tools it works with. awgit is one of its 66 bricks — each installs on its own, runs offline, and needs no account. All 66 →