Apps

Abantu — Community Governance

How to use abantu to create communities, write and ratify protocols, run projects, and make decisions together — without a central server.

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.

If you already use iwacu, your identity and display name are already there. This is the fastest path.

  1. Open iwacu on the same device or nearby.
  2. Tap the settings icon (⚙) in the toolbar at the top.
  3. Tap Show identity QR.
  4. Switch to abantu. It will ask to use the camera.
  5. Point the camera at the QR code.

Your name and cryptographic keys are imported in one scan. No typing.

If your device does not support the camera QR scanner (older Android, or a desktop browser), tap Can't scan? Paste instead and use the clipboard method: in iwacu, tap Copy bundle text inside the same QR modal, then paste into abantu.

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.

  1. In iwacu, open Settings → Show identity QR → Copy bundle text.
  2. In abantu, choose Paste identity bundle and paste the text into the field.
  3. Tap Import.

Start fresh

If you do not use iwacu, or you want a separate identity for this community tool:

  1. Choose Start fresh.
  2. Enter the name others will see.
  3. 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.

FieldPurpose
NameShort and recognisable. Others will see this.
DescriptionOne 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.

Your join event is broadcast to all members. Everyone will know when you joined and under what display name. There is no silent entry.

The community screen

A community has five tabs.

TabWhat you will find
OverviewMembers list, governance protocol, invite button
ProtocolsCommunity protocols — full lifecycle management
ProjectsShared projects, tasks, goals, chat
ProposalsOpen and closed votes
RolesGovernance 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:

TypeMeaning
AgreementA commitment members sign — code of conduct, shared values
ProcedureStep-by-step instructions — how meetings run, how disputes start
ScenarioAn if-then playbook — what happens when X occurs
PolicyAn auto-governing rule — quorum percentages, spending limits
TemplateA reusable structure — project brief, meeting notes
RitualA recurring scheduled practice — weekly standup, annual election

Scopes:

ScopeWhere it applies
PersonalApplies to an individual member
ProjectGoverns a specific project
CommunityGoverns the whole community
GlobalPublished 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

  1. Go to the Protocols tab.
  2. Tap New protocol.
  3. Choose the type and scope.
  4. Write the title and body text.
  5. 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.

The quorum percentage is set in the community's governance protocol. If no governance protocol has been adopted, the default is 51 %.

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.

FieldNotes
TitleShort. This is the label in the list.
DescriptionWhat is this project trying to accomplish?
Required protocolsOptional. 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:

  1. Go to Tasks → New task.
  2. Write a title and description.
  3. Assign it to a member.
  4. 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:

SettingMeaning
Rotation daysHow many days each lead holds the position
PhasesOptional 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.

FieldNotes
TitleShort and specific
DescriptionProvide enough context for members to vote with understanding
OptionsAt least two. Default is Yes / No.
DeadlineHow 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:

  1. Go to the Roles tab.
  2. Tap Assign role.
  3. 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.

The relay can only read signed events. It cannot forge events, modify history, or impersonate members. All trust is in the cryptographic log, not the relay.

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.