Technical reference

Packages

The 54 packages in the Paramira monorepo, by area: what each does, where it's used, and its license.

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.

PackageWhat it doesUsed byLicense
identityEd25519 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-sessionMIT
identity-scopeSeveral 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-sessionMIT
auth-sdkVerify a visitor controls a paramira community identity (did:iwacu:...) without your app ever touching their private key.abantu, directoryMIT
web-sessionBrowser 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-nuxtAGPL-3.0-or-later
device-linkLinks 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-sessionAGPL-3.0-or-later
suite-identityOne 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-nuxtAGPL-3.0-or-later
webauthn-lockKeeps 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-nuxtAGPL-3.0-or-later
capacitor-keystoreCapacitor plugin (Android) that wraps small secrets with an Android Keystore AES key usable only right after a strong biometric or device-credential unlock.companionMIT
signed-requestSign 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, playgroundMIT

Encryption and messaging

Sealing, envelopes and timing defences between people and through relays.

PackageWhat it doesUsed byLicense
did-e2ePairwise 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, testimonyMIT
aes-gcmMinimal AES-256-GCM string encryption with a base64url transport codec.ephemeral-share, identity, relay-envelope, webauthn-lockMIT
relay-envelopeTwo-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.abantuMIT
one-time-mailboxMailboxes 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.inziraMIT
ephemeral-sharePublish a small JSON payload as a short-lived, one-time-claim, encrypted share via a relay that never sees the plaintext.nothing yetAGPL-3.0-or-later
cover-traffic-schedulerSends 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 yetAGPL-3.0-or-later
broadcast-mediumIn-process simulated physical-radio broadcast medium (BLE/LoRa/WiFi Direct) with optional DTN epidemic-buffering, for testing transports that assume one.nothing yetAGPL-3.0-or-later

Communities and governance

Communities, their logs and keys, clans, requirements, acts between communities, trust.

PackageWhat it doesUsed byLicense
community-coreThe 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, companionAGPL-3.0-or-later
community-identityA 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-roomAGPL-3.0-or-later
community-logThe 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-roomMIT
clanClans 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-nuxtAGPL-3.0-or-later
requirementsRequirements 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-catalogAGPL-3.0-or-later
link-roomA 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-nuxtAGPL-3.0-or-later
agreementsThe 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, isokoAGPL-3.0-or-later
trust-graphA local peer trust ledger — score peers in 0,1 by direct connection, relay/intermediary reliability, and transitive endorsement.abantuAGPL-3.0-or-later

Protocols

What communities adopt, how adoption is signed and resolved, and the catalog.

PackageWhat it doesUsed byLicense
protocol-coreGeneric protocol-adoption resolution and signing machinery — feature-flag composition, Ed25519-signed adoption/listing records, replay protection.abantu, companion, directory, isoko, isoko-client, iwacu-nuxt, playgroundMIT
protocol-catalogThe 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, playgroundAGPL-3.0-or-later
portable-entitlementsA 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-coreMIT
directory-listingsCanonical 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, directoryAGPL-3.0-or-later

Family and history

Family trees, history and dates as people remember them.

PackageWhat it doesUsed byLicense
familyA 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-nuxtAGPL-3.0-or-later
demo-family-treeGenerates 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, playgroundAGPL-3.0-or-later
historical-dateDates 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-qaMIT
capture-inboxA 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-nuxtAGPL-3.0-or-later

Maps and places

Maps without a tile server, coarse places, and claims on regions.

PackageWhat it doesUsed byLicense
geoDependency-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-qaMIT
geo-packsStatic 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-webMIT
geo-vueVue 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-nuxtMIT
geo-claimsRegion-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-nuxtAGPL-3.0-or-later

Testimonies and Inzira

Anonymous testimonies, their review, the public board, investigation and questions.

PackageWhat it doesUsed byLicense
inziraInzira, 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-webAGPL-3.0-or-later
testimonyAnonymous 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, inziraAGPL-3.0-or-later
testimony-qaGrounded 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-qaMIT
inquiry-boardThe 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, inziraAGPL-3.0-or-later
corroborationRender 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-nuxtMIT
redactFinds 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-qaMIT
blind-tokensAnonymous, 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, inziraMIT

Community apps

The plugin contract community apps are built on, and what they show people.

PackageWhat it doesUsed byLicense
community-plugin-apiThe 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, inziraAGPL-3.0-or-later
example-community-pluginReference implementation of abantu's community-plugin convention — a Badges tab plus the community:badge-award event type it introduces.abantu, companionAGPL-3.0-or-later
noticesTurning 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, companionMIT

Storage and files

Key-value storage and content-addressed files.

PackageWhat it doesUsed byLicense
storageA minimal async KeyValueStore contract (get/set of string values) plus an in-memory implementation for tests and throwaway node services.isoko, protocol-coreMIT
blob-storeA 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-nuxtMIT

Phone

Capacitor plugins and the companion app's own pieces.

PackageWhat it doesUsed byLicense
capacitor-torCapacitor 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-nuxtAGPL-3.0-or-later
capacitor-unifiedpushCapacitor plugin (Android): UnifiedPush with any distributor, showing one generic notification for content-free wake-ups.companionMIT
device-scannerHeuristic threat classification from a stream of BLE/wifi device observations — flags passive sniffers, anomalously strong signals, followers, and sybil clusters.companionAGPL-3.0-or-later

Market

The isoko marketplace.

PackageWhat it doesUsed byLicense
isoko-clientThe 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-webAGPL-3.0-or-later

Interface

Components shared by the apps.

PackageWhat it doesUsed byLicense
endscrollZoom-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-nuxtMIT

Developer tools

Running the services and starting new apps.

PackageWhat it doesUsed byLicense
ecosystem-cliList, 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 toolAGPL-3.0-or-later