Packages
The monorepo has 54 packages. Generic building blocks are MIT; what encodes Paramira's own design is AGPL-3.0-or-later (see Licensing). Each name links to its page.
Identity and devices
Who you are, on which devices, and how apps and services check it.
| Package | What it does | Used by | License |
|---|---|---|---|
| identity | Ed25519 did:iwacu: identity primitives — keypair generation, signing/verification, and encrypted recovery backups. | abantu, agreements, auth-sdk, community-identity, community-log, companion, device-link, did-e2e, directory, directory-listings, family, identity-scope, inquiry-board, inzira, isoko-client, isoko-web, iwacu-nuxt, one-time-mailbox, portable-entitlements, protocol-core, testimony, web-session | MIT |
| identity-scope | Several identities on one device or origin: a registry of them (public data only), the current one, and storage names (IndexedDB, localStorage, files) scoped per identity, with the first identity keeping today's unscoped names. | abantu, companion, isoko-web, iwacu-nuxt, web-session | MIT |
| auth-sdk | Verify a visitor controls a paramira community identity (did:iwacu:...) without your app ever touching their private key. | abantu, directory | MIT |
| web-session | Browser sessions signed in with the Paramira phone app: a session key and the phone's delegation, never the identity key; ends on sign-out, expiry or revocation. | abantu, isoko-web, iwacu-nuxt | AGPL-3.0-or-later |
| device-link | Links a browser or computer to your phone as a full device (like WhatsApp Web): a one-time code or QR, the phone's sync package sealed with a key that never touches the network, and session links for signed-in browsers. | abantu, companion, isoko-web, iwacu-nuxt, web-session | AGPL-3.0-or-later |
| suite-identity | One identity for the Paramira Suite's tabs: abantu and isoko keep theirs in the Suite's local service, the same record iwacu uses, and every tab follows changes. | abantu, isoko-web, iwacu-nuxt | AGPL-3.0-or-later |
| webauthn-lock | Keeps a secret on the device locked behind a platform authenticator (Touch ID, Windows Hello, a hardware key) with WebAuthn's PRF extension; the authenticator never sees the secret. | abantu, isoko-web, iwacu-nuxt | AGPL-3.0-or-later |
| capacitor-keystore | Capacitor plugin (Android) that wraps small secrets with an Android Keystore AES key usable only right after a strong biometric or device-credential unlock. | companion | MIT |
| signed-request | Sign HTTP requests (method, path, time, nonce, body hash) with a did:iwacu Ed25519 key, instead of trusting a bare DID header. | abantu, companion, directory, inquiry-board, isoko, isoko-client, playground | MIT |
Encryption and messaging
Sealing, envelopes and timing defences between people and through relays.
| Package | What it does | Used by | License |
|---|---|---|---|
| did-e2e | Pairwise end-to-end encryption between two did:iwacu: identities — Ed25519-to-X25519 conversion, ECDH, HKDF, XChaCha20-Poly1305. | community-identity, family, inzira, isoko, one-time-mailbox, relay-envelope, testimony | MIT |
| aes-gcm | Minimal AES-256-GCM string encryption with a base64url transport codec. | ephemeral-share, identity, relay-envelope, webauthn-lock | MIT |
| relay-envelope | Two-layer encrypted envelope for a peer-to-peer message carried through a group's own relay — an outer layer any group member can open (proving 'this is a legitimate forward'), sealing an inner layer only the named recipient can open. | abantu | MIT |
| one-time-mailbox | Mailboxes reachable only through a single-purpose key: anyone holding the mailbox's public key can leave a sealed, signed message; only the mailbox's holder can read it and reply. | inzira | MIT |
| ephemeral-share | Publish a small JSON payload as a short-lived, one-time-claim, encrypted share via a relay that never sees the plaintext. | nothing yet | AGPL-3.0-or-later |
| cover-traffic-scheduler | Sends decoy traffic at randomized intervals on a steady cadence, whether or not there's anything real to send — so message timing alone can't reveal real activity to an observer. | nothing yet | AGPL-3.0-or-later |
| broadcast-medium | In-process simulated physical-radio broadcast medium (BLE/LoRa/WiFi Direct) with optional DTN epidemic-buffering, for testing transports that assume one. | nothing yet | AGPL-3.0-or-later |
Communities and governance
Communities, their logs and keys, clans, requirements, acts between communities, trust.
| Package | What it does | Used by | License |
|---|---|---|---|
| community-core | The community model shared by abantu and the Paramira companion app: event types, derive() over a community's log (members, proposals, votes, protocols, projects), how proposals close, and deriving a community with its identity and clan state. | abantu, companion | AGPL-3.0-or-later |
| community-identity | A community's own did:iwacu identity: keypair creation with a founder proof, the community key sealed to each custodian inside the community's event log, custodian add/remove rules, and signing as the community. | abantu, clan, community-core, companion, family, iwacu-nuxt, link-room | AGPL-3.0-or-later |
| community-log | The signed, hash-chained community event log format abantu uses, and a small WebSocket client for the relay that stores it. | abantu, companion, family, iwacu-nuxt, link-room | MIT |
| clan | Clans as communities of family communities: admission, motions and per-family votes, policy, and linking chapters of the same clan through vouches and signed accepts. | abantu, community-core, companion, family, iwacu-nuxt | AGPL-3.0-or-later |
| requirements | Requirements a protocol sets before an act between two communities (a tree link, a clan admission): a fixed vocabulary, composition where the stricter wins, and an evaluator over the signed records of a link room that says what is met, what is still missing, and why. | abantu, clan, companion, directory, family, iwacu-nuxt, link-room, protocol-catalog | AGPL-3.0-or-later |
| link-room | A link room: a small encrypted log two communities share for one act (two families linking their trees, two clan chapters linking), with statements signed by each community's key, offer codes handed over in person, and the room's records in the shape @paramira/requirements evaluates. | abantu, clan, directory, family, iwacu-nuxt | AGPL-3.0-or-later |
| agreements | The canonical payload for signing an agreement-type protocol: a hash of the exact clauses and version, built identically by the app that signs and the directory that verifies. | directory, isoko | AGPL-3.0-or-later |
| trust-graph | A local peer trust ledger — score peers in 0,1 by direct connection, relay/intermediary reliability, and transitive endorsement. | abantu | AGPL-3.0-or-later |
Protocols
What communities adopt, how adoption is signed and resolved, and the catalog.
| Package | What it does | Used by | License |
|---|---|---|---|
| protocol-core | Generic protocol-adoption resolution and signing machinery — feature-flag composition, Ed25519-signed adoption/listing records, replay protection. | abantu, companion, directory, isoko, isoko-client, iwacu-nuxt, playground | MIT |
| protocol-catalog | The Rubanda/paramira system protocol catalog — the actual protocols this ecosystem defines (cc:v1, delivery:v1, clan:v1, ...), for use with @paramira/protocol-core's resolution/client machinery. | abantu, companion, directory, family, isoko, iwacu-nuxt, playground | AGPL-3.0-or-later |
| portable-entitlements | A portable, DID-signed, offline-capable entitlement resolver: the user holds a signed set of adopted capability ids, portable across devices and servers; an app resolves them against a shared catalog into unlocked grants and parameter overrides, with dependency composition. | protocol-core | MIT |
| directory-listings | Canonical signed payloads for small directory records (marketplace listings of communities and projects, community role assignments): signed by the writer's DID over the exact content, with timestamps that only increase, so old snapshots can't be replayed. | abantu, directory | AGPL-3.0-or-later |
Family and history
Family trees, history and dates as people remember them.
| Package | What it does | Used by | License |
|---|---|---|---|
| family | A family tree's shared cell: encrypted cell sync, tree merge, invite links, signed person claims and admin handovers, family chat, and the family community (custodians, successions, feature-change protests). | abantu, capture-inbox, companion, iwacu-nuxt | AGPL-3.0-or-later |
| demo-family-tree | Generates a whole family-tree shape (a root couple, N children, M generations of ancestors, married-with-children subtrees) against a pluggable store — the generator behind iwacu-nuxt's 'demo family' terminal command, shared with apps/playground's tutorial setups. | iwacu-nuxt, playground | AGPL-3.0-or-later |
| historical-date | Dates as oral history gives them — exact, a year, around a year, a range, or relative to an era ("the year we fled") — with the verbatim text kept, chronological sorting, overlap, and coarsening to a month, year or decade that never adds precision. | corroboration, inquiry-board, inzira, iwacu-nuxt, testimony, testimony-qa | MIT |
| capture-inbox | A personal encrypted inbox shared by one identity's own devices: the phone captures photos, voice, coarse place pins and person stubs; the desktop files them into the family tree. | companion, iwacu-nuxt | AGPL-3.0-or-later |
Maps and places
Maps without a tile server, coarse places, and claims on regions.
| Package | What it does | Used by | License |
|---|---|---|---|
| geo | Dependency-free geography for maps without a tile server: a TopoJSON decoder, point-in-polygon, local and Equal Earth projections, great-circle paths, hierarchical place cells (continent / country / province / district / city) with coarsening and k-threshold rollup, offline place search, and per-era label resolution. | corroboration, directory, geo-packs, geo-vue, inquiry-board, inzira, inzira-web, iwacu-nuxt, testimony, testimony-qa | MIT |
| geo-packs | Static boundary and place data for @paramira/geo maps: world countries and continents (Natural Earth, public domain), provinces for every country and districts for a starter set (geoBoundaries, per-country open licenses), and a city gazetteer, all keyed by place cells, plus a loader that fetches them on demand. | abantu, companion, inzira, inzira-web | MIT |
| geo-vue | Vue SVG maps on @paramira/geo, with no tile server: a fitted, pannable, zoomable (wheel, drag, pinch) <GeoMap> and layers for regions (with agreement styling), pins, great-circle paths, flows sized by count, and count bubbles. | inzira, inzira-web, iwacu-nuxt | MIT |
| geo-claims | Region-claim polygons small enough to ride in a proposal: quantized to a ~111 m grid and delta-encoded, with one encoder and decoder shared by abantu, iwacu and the directory. | abantu, directory, iwacu-nuxt | AGPL-3.0-or-later |
Testimonies and Inzira
Anonymous testimonies, their review, the public board, investigation and questions.
| Package | What it does | Used by | License |
|---|---|---|---|
| inzira | Inzira, a community app for abantu and the Paramira companion: members share the journeys they took, anonymously, and the community reviews, publishes and maps them as an open investigation. | abantu, companion, inzira-web | AGPL-3.0-or-later |
| testimony | Anonymous journey testimonies, as inzira defines them: the journey schema (stops, accounts, consent), coarsening per stop role, path-uniqueness checks, sealed submissions signed by a per-testimony key, edits, consent narrowing, withdrawal, two-reviewer publication with an outside reviewer, and a chain-of-custody check anyone can run. | inquiry-board, inzira | AGPL-3.0-or-later |
| testimony-qa | Grounded questions over published testimonies, with no model or network inside: refuses identity, whereabouts and naming questions, keeps to consented text, quotes testimonies as inert data, keeps only real citations, and withholds names and contact details from answers. | inzira, testimony-qa | MIT |
| inquiry-board | The public board inzira communities share (docs/plans/inzira.md, Parts 4d–4f): anonymous inquiries pinned to places with proof-of-work, communities' signed rosters of reviewer keys, hosting, watched regions, update notices, public publications and withdrawals, peer boards chosen by the hosting communities, and pull replication between boards. | directory, inzira | AGPL-3.0-or-later |
| corroboration | Render agreement, don't elect a winner: group independent accounts that converge on a place and time, count how many different people stand behind them, and mark what's corroborated, what stands alone and what's contradicted, for narratives and for drawn region claims alike. | inzira, iwacu-nuxt | MIT |
| redact | Finds identifying details in free text on the device — names, phone numbers, emails, links, ID numbers, exact dates, ages (English, French, Kinyarwanda, Swahili) and a caller's own sensitive terms — as spans for a person to review, and applies the ones they accept. | inquiry-board, inzira, testimony-qa | MIT |
| blind-tokens | Anonymous, rate-limited, publicly verifiable membership tokens: an issuer signs a blinded message once per member per epoch (RFC 9474 blind RSA, via @cloudflare/blindrsa-ts), the member unblinds a token the issuer can't link back to them, and anyone can verify it against the epoch's public key. | inquiry-board, inzira | MIT |
Community apps
The plugin contract community apps are built on, and what they show people.
| Package | What it does | Used by | License |
|---|---|---|---|
| community-plugin-api | The plugin contract for community apps in abantu and the Paramira companion: event reducers, tabs, routes and notice rules, a per-plugin context limited to what the manifest declares (storage, rooms, blobs, community signing, the board, proposals), and a source lint. | abantu, community-core, companion, example-community-plugin, inzira | AGPL-3.0-or-later |
| example-community-plugin | Reference implementation of abantu's community-plugin convention — a Badges tab plus the community:badge-award event type it introduces. | abantu, companion | AGPL-3.0-or-later |
| notices | Turning what's new into what a person sees: notices from any source, de-duplicated, filtered by what they follow, held during quiet hours or gathered into a daily digest, and rendered discreetly by default, so a lock screen never says more than 'something new'. | abantu, companion | MIT |
Storage and files
Key-value storage and content-addressed files.
| Package | What it does | Used by | License |
|---|---|---|---|
| storage | A minimal async KeyValueStore contract (get/set of string values) plus an in-memory implementation for tests and throwaway node services. | isoko, protocol-core | MIT |
| blob-store | A content-addressed BlobStore contract (put/get/has by sha256) with memory, relay-HTTP, local-disk and S3-compatible backends, an AES-GCM encrypting wrapper and replication across backends. | abantu, capture-inbox, companion, family, iwacu-nuxt | MIT |
Phone
Capacitor plugins and the companion app's own pieces.
| Package | What it does | Used by | License |
|---|---|---|---|
| capacitor-tor | Capacitor plugin that runs an embedded Tor daemon on Android and routes the whole WebView through it, reporting 'connected' only once the proxy override is active. | companion, iwacu-nuxt | AGPL-3.0-or-later |
| capacitor-unifiedpush | Capacitor plugin (Android): UnifiedPush with any distributor, showing one generic notification for content-free wake-ups. | companion | MIT |
| device-scanner | Heuristic threat classification from a stream of BLE/wifi device observations — flags passive sniffers, anomalously strong signals, followers, and sybil clusters. | companion | AGPL-3.0-or-later |
Market
The isoko marketplace.
| Package | What it does | Used by | License |
|---|---|---|---|
| isoko-client | The isoko marketplace client shared by isoko-web and the Paramira companion app: listings, buying, deliveries and procedures with signed step attestations, scenarios, and chat, over services/isoko-market. | companion, isoko-web | AGPL-3.0-or-later |
Interface
Components shared by the apps.
| Package | What it does | Used by | License |
|---|---|---|---|
| endscroll | Zoom-blur section navigation instead of scrolling: full-screen sections scale/fade into each other on wheel, keyboard, touch, or click — diving forward, pulling back out. | inzira, iwacu-nuxt | MIT |
Developer tools
Running the services and starting new apps.
| Package | What it does | Used by | License |
|---|---|---|---|
| ecosystem-cli | List, start, stop, deploy, and health-check the paramira self-hosted services (directory, abantu-rooms, iwacu-rooms, isoko-market) — a thin, testable wrapper over each service's own docker-compose.yml — and scaffold new community apps. | command-line tool | AGPL-3.0-or-later |