Make something people can run together.
Software for any group that wants to set its own rules and keep its own books. Everything the group does is written down, signed by whoever did it, and checked by everyone who holds a copy. Whoever runs the server has no way to quietly change what happened.
Start
Picture a folder that governs itself. Inside are the group’s members, its rules, and every decision it has made, in order. Copy the folder and you have all of it, history included.
The folder only changes the way its rules allow. Someone proposes, people vote, and the result is signed into the record. If anyone edits the files by hand, every other copy notices. The rules sit in the same record, so changing them takes a vote too, usually a harder one to win.
- Let anyone join, or admit people by vote.
- Decide by simple majority, by two thirds, or over two readings a month apart, depending on how much a change matters.
- Elect people to offices, and give them powers with limits you set and can take back.
- Keep money: a budget, a treasury, a currency of your own, shares that pay dividends, a fund the members invest together.
- Write things down: a constitution, bylaws, minutes, a wiki, agreements members sign.
- Run the everyday: meetings, chores, a forum, polls.
- Split, if it comes to that. A fork keeps the whole history, and everyone keeps their keys.
Every act (joining, proposing, voting, paying) is signed with the key of the person who made it. Signed acts are folded into a chain where each record carries the hash of the one before, so changing anything in the past changes everything after it. Folding is deterministic: the same acts always produce the same record, byte for byte, on any machine.
When you open a republic’s page, your browser downloads the record and replays it from the first act, checking every signature on the way. What you see is your browser’s own reading of the record.
Features come as modules, and a module is installed only by vote, pinned to the exact code the members approved. Upgrading anything, the core included, means replaying the whole history with the new code first. If a single byte would come out differently, the upgrade is refused.
Copies travel over Radicle, peer to peer. Where it matters which copy is right, the members can name validators who sign checkpoints; two thirds of them make a record final, and anyone who signs two different histories has proven it with their own signature.
You need a computer with Node.js 20 or newer. Nothing else.
git clone https://github.com/ttschoonover/entity my-republic
cd my-republic
node cli/index.js preset apply assembly
node cli/index.js found --id you --name "My Republic"
node cli/index.js serve --settle
Then open http://localhost:7780. The program is called entity; Getting started walks through the rest, from inviting people to putting it online.
- Getting startedInstall, found, invite, decide, publish.
- Use casesWhere to begin for different kinds of group.
- ManualEvery part, in depth.
- CommandsEverything the command line can do.
- ModulesWhat each module adds.
- GuaranteesEach promise the software makes, and how it keeps it.
- The code, on GitHubThe core: the record, the page, the command line.
- The modules, on GitHubOne folder per module. Republics fetch them from here when their members vote one in.
Timothy Schoonover
I study political economy at Berkeley and Sciences Po, and I wrote the Git Republic. This site runs on a Raspberry Pi on my desk, so now and then it goes down. Every republic keeps copies elsewhere, so nothing is lost when it does.