Skip to content
gioser
ES

tawasuyu · Root

Minga: version control without an owner — built for AI agents, it signs every commit, understands the code and remembers your whole machine

Almost all of the world's software keeps its history in git, and almost all of that history lives on the same server: GitHub's, which belongs to Microsoft. In tawasuyu the history lives in minga, and git is its mirror: signed by whoever wrote it, understood by definition rather than by line, worked on by many AI agents at once without them stepping on each other, and passed from machine to machine without asking anyone's permission.

17 min readBy Gioser Editorial

Every time someone saves a change to a program, they save it in a version control system: the time machine that remembers what changed, who changed it and when, and that lets you go back. For more than fifteen years that machine has been called git, and the history of almost all the planet's software lives in one place: GitHub, owned by Microsoft since 2018. This article tells what minga is —the version control someone wrote for tawasuyu, and today its primary repository—; what it does that git does not —starting with something git never imagined: many AI agents working on the same history—, and what happened in late October, when it stopped storing only code and started storing the whole machine. With the numbers in plain sight, including the ones that did not go well.

Illustration: a group of people in ponchos and hats work on laptops on an Andean hillside at sunset; between them and the mountains float windows of code joined by threads of light, and above it reads
Illustration: a minga of code —each person on their own machine, the history woven among all— over an Andean valley.

The name

In the Andes, the minka —minga, across much of the continent— is collective work: the community gathers to raise a house, an irrigation channel or a harvest, and what gets done belongs to everyone and to no one in particular. It is a tribute to that way of working, not a flag: the project does not speak for any people, it learns from them. And it describes well what this program wants to be: a history raised by many hands —some human and some not—, with no master keeping it.

What git does very well, and what is not its job

It has to be said without caricature: git is a masterpiece. It is fast, it is distributed by design —every copy holds the whole history— and its model of objects addressed by their own hash is so good that minga does the same. It won because it deserved to.

But it has limits that are not defects but decisions from 2005, when nobody imagined that half the changes would be written by a machine:

Minga in front, git behind

In tawasuyu the relationship has already flipped. minga is the primary repository and git is its mirror: every work session commits in minga, on its own branch; minga does the merging, and from there the result travels to git. Building the git tree of a minga commit takes between 0.08 and 0.42 seconds —it reuses everything that did not change—, against 23.7 for the path that rebuilt the whole tree.

Git stays in front only toward the outside: whoever comes from elsewhere clones and pushes with git, because that is what they have installed. And even that is handled by minga: since October 22, git.tawasuyu.net is not a gitea but minga's host, which speaks git at the door and keeps minga inside.

Built for working with AI agents

Much of tawasuyu is written with AI assistants working in parallel —on a single machine there were days with up to eighteen sessions at once—, and minga grew for that. It is the first difference from git, and the biggest:

It understands the code, not the lines

minga parses the code (Rust, Python, JavaScript, TypeScript, Go and C) and stores, alongside every commit, which functions and types were born, changed or died. Every definition has an identity that does not depend on its name: funny_add and amusing_add with the same body give the same fingerprint, in four languages. That answers questions git cannot:

Merging by reading the syntax

When two branches touch the same file, git compares lines. minga merges the syntax tree: two changes to different functions in the same file do not clash, a function moved elsewhere and edited on the other side is not duplicated, and the merged file comes out with its formatting and comments, not reprinted. When there is a clash, the conflict is not a broken file with markers: it is a value stored inside the tree, it can be committed, rebased and resolved later, and only the statement that clashed carries markers.

Measured on the real repository: out of 1,059 three-way merges taken from its own history, 982 come out clean, and only one duplicated anything. And it is compared against mergiraf, the reference structural merge tool, as a parity oracle.

Trust without a central authority

In git, whom to trust is decided by the server. In minga each person decides, and it is signed:

The entire forge, with no server

What makes GitHub hard to leave is not git: it is everything around it. In minga each piece is a signed record that travels with the history through the same sync session:

machine A machine B every commit, signed “what are you missing?” B sends what it already has only what is missing, checked against its hash no server in between
What happens in a minga sync: the receiver asks only for what it lacks, and every piece has to match the hash that was asked for or it does not get in. The same holds for a single file asked from whoever announces it on the network.

The host: a forge for agents, with git as the door

For the world that uses git, minga has a host: minga-serve. Since October 22 it serves git.tawasuyu.net and git.gioser.net in place of gitea, with the 55 repositories moved and a way back prepared. At the door it speaks git —anyone clones and pushes with what they have installed—, and inside, everything above: protected branches do not ask "did the server's CI pass" but for M signed attestations; agents come in with their delegated keys; the API and MCP answer without cloning; and a web face with no JavaScript, in Spanish, English and Quechua, shows the tasks, the proposals with their per-definition change, the attestations and the provenance of every commit.

Day to day

Taking the load: the numbers

A version control system is judged on the big repository, not on the toy one. tawasuyu's has more than 9,000 commits and about 4 GB of history, and minga has carried all of it since September. Three measurements of how it got there:

last 20 commits out of 100,000, loading the whole history 10 min 18 s walking from the heads, like git log 22 ms — 28,000 times less
Synthetic bench of 100,000 commits (scripts/probar-minga-escala.sh, September 18, 2026). With 1,000 commits the same query took 9 ms: the repository grew a hundredfold and the query, 2.4 times.
service memory after six commits of the real tree, before 2,257 MB with the database cache bounded to 64 MB 729 MB
Measured on September 28, 2026 on a copy of the real mirror (9,872 commits, 4.6 GB). The cause was a line nobody wrote: the database in use came with a gigabyte of cache by default. A small bench did not reproduce the defect —with a 352 MB store the cache never fills—: the size of the corpus was part of the instrument.

And the third is the one that cost the most: between September and October the database that stored the objects broke twice when the disk filled up in the middle of a write, and the second time the recovery deleted everything written after the error. It was replaced entirely. Objects and commits now live in append-only packs, with a checksum per record, a minga fsck the service itself runs every 24 hours, and a live replica of what git cannot rebuild. The mirror went from 9.4 to 4.0 GB. On a bench of 200,000 commits, listing branches went from 1,128 to 9 milliseconds.

Late October: from storing code to storing the machine

Documents already lived in minga: in pluma, the suite's editor, every paragraph keeps its identity across versions, and there is per-paragraph blame, edit proposals, machine-to-machine sync and merging of two versions paragraph by paragraph. The project's plan has a line called, without modesty, minga as the substrate of the whole suite: that the same signed store keep everything a person wants to be able to remember and undo. In late October it was closed. Six new pieces, all working:

minga signed store the code commits and per-definition deltas your machine encrypted snapshots every minute your dotfiles encrypted backup and push science results that can be redone takana packages from whoever has them kernels a quorum of machines wawa another system’s disk
One single way of storing —objects addressed by their hash, signed by whoever writes them— for everything one wants to be able to remember and undo. Until late October, minga stored only the first.

Your machine's history

Every minute, if something changed, minga takes a signed snapshot of your configuration —the hidden files in your home folder, ~/.config, whatever you add— in a local repository encrypted on disk with your identity's key. minga machine log shows what changed and when; minga machine restore ~/.config/kitty --at 10:00 puts it back the way it was.

The first real snapshot: 2,122 files, 25 MB, 3 seconds. The next ones, 1 second if nothing changed.

Your dotfiles, without a separate folder

The suite's configuration manager stores its backups in that same repository, and pushing them to another machine travels encrypted with the same key: the destination never sees plain text.

Tested with the real shell and git configuration: no readable text at the destination, and restored identical into another user folder.

Science you can redo

minga derive run runs a recipe over a commit —data plus code— in a separate folder, and signs the hash of the result. Another machine redoes it on its own and signs its own. minga derive bisect finds the commit that moved the result, without rerunning what was already run.

The control arm: a recipe that reads the clock comes out "does not reproduce", with a different result per machine.

A distribution with no trusted server

takana, the suite's Linux distribution, separates what needs trust —a signed index of kilobytes— from what does not: tens of gigabytes of packages and sources. minga is now one more origin for those gigabytes, and a node fetches a single file from whoever has it, verified piece by piece, without syncing the rest.

An origin that lacks the file yields to the next; one that delivers different content aborts the install even if the good one is right behind.

Kernels with a quorum

When takana tries a new kernel on a machine and it boots, the machine signs "it booted, on this hardware"; if it is dropped, it signs red. A kernel is not staged on another machine of the same class unless M different ones have booted it, and a red is not covered up by greens.

Tested on a server running takana, with three machine identities brought together over the wire: with no signatures it stops, with two greens it passes, a third in red stops it again.

An operating system that reads minga

wawa, tawasuyu's own operating system, stores its objects under the same contract as minga. On boot it builds a minga tree on its disk and reads it back; on the next boot it finds it there, with the same fingerprint minga computes on an ordinary computer.

With the disk full, the write fails, the error is recorded and the system keeps booting. Tested in a virtual machine; the bare metal is still missing.

And the machine's timeline also reads takana's: the journal where the system records every file that changes, and the generations of every upgrade, appear interleaved with the snapshots of your configuration, and "going back" on an upgrade asks takana for the rollback, since takana is the one that knows how. Tested against a production machine running takana: the 9,299-line journal and its 17 generations fit in 100 entries, and the September 16 upgrade shows up as one entry of 777 files —the same number of changes its generation's manifest records—.

What went wrong, told

A project that only shows what worked is hiding something. Four stumbles from those days, and what each one taught:

What is not there yet

How to see it

minga lives in the root region of the tawasuyu repository —git.tawasuyu.net, served by minga itself— under 03_ukupacha/minga. The plan, PLAN-VCS.md, tells every phase with its measurements and dates; the work lines are in 03_ukupacha/minga/lineas/, each with what was certified and what is missing, just as it came out; and FLUJO-AGENTE.md tells how an agent works with minga in front and git behind.

Background