Abantu — Community Governance
Abantu — Community Governance
Abantu means "people" in Kinyarwanda. The app is a governance tool for groups — neighbourhoods, cooperatives, families, study circles — that need to make decisions together, run shared projects, and agree on the rules they live by.
There is no platform owner. Your community's history is a signed, tamper-evident log stored on each member's device. Members can sync in real time over a relay you control, or work offline and merge when they reconnect.
Identity
Before you can join or create a community, the app needs to know who you are.
When you open abantu for the first time, you will see three options.
Import from iwacu (recommended)
If you already use iwacu, your identity and display name are already there. This is the fastest path.
- Open iwacu on the same device or nearby.
- Tap the settings icon (⚙) in the toolbar at the top.
- Tap Show identity QR.
- Switch to abantu. It will ask to use the camera.
- Point the camera at the QR code.
Your name and cryptographic keys are imported in one scan. No typing.
Paste identity bundle
Use this if you are on a device where the camera cannot read the QR, or if you want to import your identity manually.
- In iwacu, open Settings → Show identity QR → Copy bundle text.
- In abantu, choose Paste identity bundle and paste the text into the field.
- Tap Import.
Start fresh
If you do not use iwacu, or you want a separate identity for this community tool:
- Choose Start fresh.
- Enter the name others will see.
- Tap Get started.
A new Ed25519 keypair is generated locally. Nothing is uploaded anywhere.
Communities
Creating a community
Tap the + button on the communities screen.
| Field | Purpose |
|---|---|
| Name | Short and recognisable. Others will see this. |
| Description | One or two sentences: what is this group for? |
After you tap Create, you are automatically added as the first member. Share the invite link to bring others in.
Joining a community
Someone who is already in a community can generate an invite link. Open that link on your device — or scan the QR code if shown — and tap Join.
You will see the community briefly sync before your name appears in the members list. This is normal. The app is loading the existing event history from the relay.
The community screen
A community has five tabs.
| Tab | What you will find |
|---|---|
| Overview | Members list, governance protocol, invite button |
| Protocols | Community protocols — full lifecycle management |
| Projects | Shared projects, tasks, goals, chat |
| Proposals | Open and closed votes |
| Roles | Governance role assignments |
Protocols
A protocol is a written agreement that governs how the community operates. It could be a code of conduct, a decision-making procedure, an incident response playbook, or a reusable template.
Types and scopes
Types:
| Type | Meaning |
|---|---|
| Agreement | A commitment members sign — code of conduct, shared values |
| Procedure | Step-by-step instructions — how meetings run, how disputes start |
| Scenario | An if-then playbook — what happens when X occurs |
| Policy | An auto-governing rule — quorum percentages, spending limits |
| Template | A reusable structure — project brief, meeting notes |
| Ritual | A recurring scheduled practice — weekly standup, annual election |
Scopes:
| Scope | Where it applies |
|---|---|
| Personal | Applies to an individual member |
| Project | Governs a specific project |
| Community | Governs the whole community |
| Global | Published for cross-community adoption |
Lifecycle
A protocol moves through five states:
Draft → Review → Voting → Ratified → Published
Draft — The author writes the protocol. Others cannot see it yet. The author can edit freely.
Review — The author submits it for community discussion. Members can read the text and leave comments. The author can still amend the text. This stage is for debate and refinement, not voting.
Voting — The author submits again to open a ratification vote. A proposal is created automatically. Members vote Ratify or Reject. The text is frozen.
Ratified — The vote passed. The protocol is now officially adopted. Members can choose to individually adopt it.
Published — The author broadcasts the protocol globally. Other communities can discover and adopt it.
Writing a protocol
- Go to the Protocols tab.
- Tap New protocol.
- Choose the type and scope.
- Write the title and body text.
- Tap Save as draft.
The protocol is now yours to edit. When you are ready for others to read it, submit it for review.
Submitting for review
Open the protocol. Tap Submit for review. The status changes to Review. The community is notified.
Discussion
During review, any member can open the protocol and leave a comment. Comments are threaded — reply directly to a specific comment to keep the discussion organised.
The author reads the comments and decides whether to amend the text. Amendments during review are visible to everyone and increment the version number.
Submitting for a vote
When the discussion is complete and the text is final, tap Submit for vote. This:
- Freezes the text (no further amendments).
- Creates a ratification proposal.
- Opens the Voting period.
Members vote from the Protocols tab or the Proposals tab. The vote closes automatically when quorum is reached.
Ratification and publishing
When the vote passes, the protocol status automatically becomes Ratified. The author can then tap Publish globally to make it discoverable by other communities.
If the vote fails, the protocol returns to Voting status and the author can amend and resubmit.
Adopting a protocol
Some protocols are personal commitments — a code of conduct, a privacy agreement. Any member can open a ratified or published protocol and tap Adopt. This records your adoption in the event log. It is visible to all members.
Adoption is also required to join certain projects. See Projects.
Projects
Projects are shared workspaces inside a community. Each project has its own task list, goal tracker, and chat.
Creating a project
Go to the Projects tab and tap New project.
| Field | Notes |
|---|---|
| Title | Short. This is the label in the list. |
| Description | What is this project trying to accomplish? |
| Required protocols | Optional. Members must have adopted these protocols before they can join. |
Required protocols are a consent mechanism. If your project involves handling personal data, you can require members to adopt a privacy agreement before they can participate.
Joining a project
Open the project and tap Join. If the project has required protocols you have not yet adopted, you will see which ones are missing. Adopt them first, then try again.
Project tabs
Overview — Description, required protocols with your adoption status, project goals, and quick stats.
Tasks — The task list. Filter by all / open / assigned to me / completed. Each task shows its assignee, due date, and progress notes.
Rotation — The lead rotation schedule, if one has been adopted. Shows who leads which phase, when, and what they produced.
Chat — Text chat, private to the project members.
Tasks
Any member can create a task:
- Go to Tasks → New task.
- Write a title and description.
- Assign it to a member.
- Optionally set a due date.
The assignee can add progress notes, which appear as a thread on the task. When the work is done, tap Mark complete.
Goals
Goals are the outcomes the project is working toward. Add them in the Overview tab. Mark a goal complete when it is done; the progress bar reflects how many goals have been reached.
Lead rotation
A lead rotation assigns one member to be the responsible lead for a fixed period, cycling through all contributors in turn. This prevents any one person from becoming a permanent gatekeeper.
To adopt a rotation, tap Adopt rotation in the Rotation tab. Choose:
| Setting | Meaning |
|---|---|
| Rotation days | How many days each lead holds the position |
| Phases | Optional names for each rotation period |
The current lead can declare the phase name and write a summary at the end of their term. Past summaries are visible in the Rotation tab.
Proposals
Proposals are the formal decision mechanism. Any member can create a standalone proposal. Ratification proposals are created automatically when a protocol is submitted for a vote.
Creating a proposal
Go to the Proposals tab and tap New proposal.
| Field | Notes |
|---|---|
| Title | Short and specific |
| Description | Provide enough context for members to vote with understanding |
| Options | At least two. Default is Yes / No. |
| Deadline | How many days the vote stays open |
Voting
Open a proposal and tap the option you choose. Your vote is recorded. You can change your vote before the proposal closes.
Proposals close automatically when enough votes have been cast to reach quorum. The winning option is declared. The result is permanent in the event log.
Governance roles
Roles are named positions in the community — moderator, treasurer, secretary, or whatever your community needs. They are recorded in the event log and visible to all members.
To assign a role:
- Go to the Roles tab.
- Tap Assign role.
- Enter the role name, select the member, and optionally set an expiry.
To remove a role, tap Vacate next to it.
Roles are currently informational — the app does not enforce permissions based on them. They serve as a visible record of who holds which responsibility.
Sync and relay
By default, abantu works offline. Your event log is stored locally. When two members are on the same device session or share an invite, events merge.
For real-time sync across devices, a relay server is needed.
What the relay does
The relay is a WebSocket server that holds events for each community cell and delivers them to members when they connect. It does not store identities, display names, or any data beyond the signed events it receives.
Using a relay
The relay URL is configured when the app is deployed. If your community administrator has set one up, it is already active — you will see events from other members appear in real time without any extra steps.
Running your own relay
See Self-hosting for instructions on running the relay server.
Data and privacy
Every event in abantu is signed with your Ed25519 private key. The private key never leaves your device. The relay sees the signed events but cannot attribute them to a real-world identity unless you choose a display name that reveals one.
What the relay knows:
- The signed events you publish (type, payload, timestamp, your public key).
- When you connected and disconnected.
What the relay does not know:
- Your device, IP address (if using Tor), or real name.
- The content of direct messages (those are not routed through the community relay).
- Your private key.
What other community members know:
- Every event you have authored since you joined.
- Your display name.
- Which protocols you have adopted.
- Which projects you belong to.
There is no way to delete events from the log. Choose your display name carefully.