[{"data":1,"prerenderedAt":1590},["ShallowReactive",2],{"navigation":3,"\u002Fv1\u002Freference\u002Fpackages":489,"\u002Fv1\u002Freference\u002Fpackages-surround":1585},[4,287],{"title":5,"path":6,"stem":7,"children":8,"icon":286},"v1 · in progress","\u002Fv1","1.v1\u002F01.index",[9,11,46],{"title":10,"path":6,"stem":7},"The current guide",{"title":12,"path":13,"stem":14,"children":15,"icon":45},"Communities","\u002Fv1\u002Fcommunities","1.v1\u002F03.communities\u002F1.index",[16,17,21,25,29,33,37,41],{"title":12,"path":13,"stem":14},{"title":18,"path":19,"stem":20},"Decide together","\u002Fv1\u002Fcommunities\u002Fdecide-together","1.v1\u002F03.communities\u002F2.decide-together",{"title":22,"path":23,"stem":24},"Protocols","\u002Fv1\u002Fcommunities\u002Fprotocols","1.v1\u002F03.communities\u002F3.protocols",{"title":26,"path":27,"stem":28},"Features and settings","\u002Fv1\u002Fcommunities\u002Ffeatures","1.v1\u002F03.communities\u002F4.features",{"title":30,"path":31,"stem":32},"Custodians and the community key","\u002Fv1\u002Fcommunities\u002Fcustodians","1.v1\u002F03.communities\u002F5.custodians",{"title":34,"path":35,"stem":36},"Projects","\u002Fv1\u002Fcommunities\u002Fprojects","1.v1\u002F03.communities\u002F6.projects",{"title":38,"path":39,"stem":40},"Between communities","\u002Fv1\u002Fcommunities\u002Fbetween-communities","1.v1\u002F03.communities\u002F7.between-communities",{"title":42,"path":43,"stem":44},"Messages, relays and storage","\u002Fv1\u002Fcommunities\u002Fmessages-and-storage","1.v1\u002F03.communities\u002F8.messages-and-storage","i-lucide-users",{"title":47,"path":48,"stem":49,"children":50,"icon":285},"Technical reference","\u002Fv1\u002Freference","1.v1\u002F12.reference\u002F1.index",[51,52,274,278,282],{"title":47,"path":48,"stem":49},{"title":53,"path":54,"stem":55,"children":56},"Packages","\u002Fv1\u002Freference\u002Fpackages","1.v1\u002F12.reference\u002F2.packages\u002F1.index",[57,58,62,66,70,74,78,82,86,90,94,98,102,106,110,114,118,122,126,130,134,138,142,146,150,154,158,162,166,170,174,178,182,186,190,194,198,202,206,210,214,218,222,226,230,234,238,242,246,250,254,258,262,266,270],{"title":53,"path":54,"stem":55},{"title":59,"path":60,"stem":61},"aes-gcm","\u002Fv1\u002Freference\u002Fpackages\u002Faes-gcm","1.v1\u002F12.reference\u002F2.packages\u002Faes-gcm",{"title":63,"path":64,"stem":65},"agreements","\u002Fv1\u002Freference\u002Fpackages\u002Fagreements","1.v1\u002F12.reference\u002F2.packages\u002Fagreements",{"title":67,"path":68,"stem":69},"auth-sdk","\u002Fv1\u002Freference\u002Fpackages\u002Fauth-sdk","1.v1\u002F12.reference\u002F2.packages\u002Fauth-sdk",{"title":71,"path":72,"stem":73},"blind-tokens","\u002Fv1\u002Freference\u002Fpackages\u002Fblind-tokens","1.v1\u002F12.reference\u002F2.packages\u002Fblind-tokens",{"title":75,"path":76,"stem":77},"blob-store","\u002Fv1\u002Freference\u002Fpackages\u002Fblob-store","1.v1\u002F12.reference\u002F2.packages\u002Fblob-store",{"title":79,"path":80,"stem":81},"broadcast-medium","\u002Fv1\u002Freference\u002Fpackages\u002Fbroadcast-medium","1.v1\u002F12.reference\u002F2.packages\u002Fbroadcast-medium",{"title":83,"path":84,"stem":85},"capacitor-keystore","\u002Fv1\u002Freference\u002Fpackages\u002Fcapacitor-keystore","1.v1\u002F12.reference\u002F2.packages\u002Fcapacitor-keystore",{"title":87,"path":88,"stem":89},"capacitor-tor","\u002Fv1\u002Freference\u002Fpackages\u002Fcapacitor-tor","1.v1\u002F12.reference\u002F2.packages\u002Fcapacitor-tor",{"title":91,"path":92,"stem":93},"capacitor-unifiedpush","\u002Fv1\u002Freference\u002Fpackages\u002Fcapacitor-unifiedpush","1.v1\u002F12.reference\u002F2.packages\u002Fcapacitor-unifiedpush",{"title":95,"path":96,"stem":97},"capture-inbox","\u002Fv1\u002Freference\u002Fpackages\u002Fcapture-inbox","1.v1\u002F12.reference\u002F2.packages\u002Fcapture-inbox",{"title":99,"path":100,"stem":101},"clan","\u002Fv1\u002Freference\u002Fpackages\u002Fclan","1.v1\u002F12.reference\u002F2.packages\u002Fclan",{"title":103,"path":104,"stem":105},"community-core","\u002Fv1\u002Freference\u002Fpackages\u002Fcommunity-core","1.v1\u002F12.reference\u002F2.packages\u002Fcommunity-core",{"title":107,"path":108,"stem":109},"community-identity","\u002Fv1\u002Freference\u002Fpackages\u002Fcommunity-identity","1.v1\u002F12.reference\u002F2.packages\u002Fcommunity-identity",{"title":111,"path":112,"stem":113},"community-log","\u002Fv1\u002Freference\u002Fpackages\u002Fcommunity-log","1.v1\u002F12.reference\u002F2.packages\u002Fcommunity-log",{"title":115,"path":116,"stem":117},"community-plugin-api","\u002Fv1\u002Freference\u002Fpackages\u002Fcommunity-plugin-api","1.v1\u002F12.reference\u002F2.packages\u002Fcommunity-plugin-api",{"title":119,"path":120,"stem":121},"corroboration","\u002Fv1\u002Freference\u002Fpackages\u002Fcorroboration","1.v1\u002F12.reference\u002F2.packages\u002Fcorroboration",{"title":123,"path":124,"stem":125},"cover-traffic-scheduler","\u002Fv1\u002Freference\u002Fpackages\u002Fcover-traffic-scheduler","1.v1\u002F12.reference\u002F2.packages\u002Fcover-traffic-scheduler",{"title":127,"path":128,"stem":129},"demo-family-tree","\u002Fv1\u002Freference\u002Fpackages\u002Fdemo-family-tree","1.v1\u002F12.reference\u002F2.packages\u002Fdemo-family-tree",{"title":131,"path":132,"stem":133},"device-link","\u002Fv1\u002Freference\u002Fpackages\u002Fdevice-link","1.v1\u002F12.reference\u002F2.packages\u002Fdevice-link",{"title":135,"path":136,"stem":137},"device-scanner","\u002Fv1\u002Freference\u002Fpackages\u002Fdevice-scanner","1.v1\u002F12.reference\u002F2.packages\u002Fdevice-scanner",{"title":139,"path":140,"stem":141},"did-e2e","\u002Fv1\u002Freference\u002Fpackages\u002Fdid-e2e","1.v1\u002F12.reference\u002F2.packages\u002Fdid-e2e",{"title":143,"path":144,"stem":145},"directory-listings","\u002Fv1\u002Freference\u002Fpackages\u002Fdirectory-listings","1.v1\u002F12.reference\u002F2.packages\u002Fdirectory-listings",{"title":147,"path":148,"stem":149},"ecosystem-cli","\u002Fv1\u002Freference\u002Fpackages\u002Fecosystem-cli","1.v1\u002F12.reference\u002F2.packages\u002Fecosystem-cli",{"title":151,"path":152,"stem":153},"endscroll","\u002Fv1\u002Freference\u002Fpackages\u002Fendscroll","1.v1\u002F12.reference\u002F2.packages\u002Fendscroll",{"title":155,"path":156,"stem":157},"ephemeral-share","\u002Fv1\u002Freference\u002Fpackages\u002Fephemeral-share","1.v1\u002F12.reference\u002F2.packages\u002Fephemeral-share",{"title":159,"path":160,"stem":161},"example-community-plugin","\u002Fv1\u002Freference\u002Fpackages\u002Fexample-community-plugin","1.v1\u002F12.reference\u002F2.packages\u002Fexample-community-plugin",{"title":163,"path":164,"stem":165},"family","\u002Fv1\u002Freference\u002Fpackages\u002Ffamily","1.v1\u002F12.reference\u002F2.packages\u002Ffamily",{"title":167,"path":168,"stem":169},"geo","\u002Fv1\u002Freference\u002Fpackages\u002Fgeo","1.v1\u002F12.reference\u002F2.packages\u002Fgeo",{"title":171,"path":172,"stem":173},"geo-claims","\u002Fv1\u002Freference\u002Fpackages\u002Fgeo-claims","1.v1\u002F12.reference\u002F2.packages\u002Fgeo-claims",{"title":175,"path":176,"stem":177},"geo-packs","\u002Fv1\u002Freference\u002Fpackages\u002Fgeo-packs","1.v1\u002F12.reference\u002F2.packages\u002Fgeo-packs",{"title":179,"path":180,"stem":181},"geo-vue","\u002Fv1\u002Freference\u002Fpackages\u002Fgeo-vue","1.v1\u002F12.reference\u002F2.packages\u002Fgeo-vue",{"title":183,"path":184,"stem":185},"historical-date","\u002Fv1\u002Freference\u002Fpackages\u002Fhistorical-date","1.v1\u002F12.reference\u002F2.packages\u002Fhistorical-date",{"title":187,"path":188,"stem":189},"identity","\u002Fv1\u002Freference\u002Fpackages\u002Fidentity","1.v1\u002F12.reference\u002F2.packages\u002Fidentity",{"title":191,"path":192,"stem":193},"identity-scope","\u002Fv1\u002Freference\u002Fpackages\u002Fidentity-scope","1.v1\u002F12.reference\u002F2.packages\u002Fidentity-scope",{"title":195,"path":196,"stem":197},"inquiry-board","\u002Fv1\u002Freference\u002Fpackages\u002Finquiry-board","1.v1\u002F12.reference\u002F2.packages\u002Finquiry-board",{"title":199,"path":200,"stem":201},"inzira","\u002Fv1\u002Freference\u002Fpackages\u002Finzira","1.v1\u002F12.reference\u002F2.packages\u002Finzira",{"title":203,"path":204,"stem":205},"isoko-client","\u002Fv1\u002Freference\u002Fpackages\u002Fisoko-client","1.v1\u002F12.reference\u002F2.packages\u002Fisoko-client",{"title":207,"path":208,"stem":209},"link-room","\u002Fv1\u002Freference\u002Fpackages\u002Flink-room","1.v1\u002F12.reference\u002F2.packages\u002Flink-room",{"title":211,"path":212,"stem":213},"notices","\u002Fv1\u002Freference\u002Fpackages\u002Fnotices","1.v1\u002F12.reference\u002F2.packages\u002Fnotices",{"title":215,"path":216,"stem":217},"one-time-mailbox","\u002Fv1\u002Freference\u002Fpackages\u002Fone-time-mailbox","1.v1\u002F12.reference\u002F2.packages\u002Fone-time-mailbox",{"title":219,"path":220,"stem":221},"portable-entitlements","\u002Fv1\u002Freference\u002Fpackages\u002Fportable-entitlements","1.v1\u002F12.reference\u002F2.packages\u002Fportable-entitlements",{"title":223,"path":224,"stem":225},"protocol-catalog","\u002Fv1\u002Freference\u002Fpackages\u002Fprotocol-catalog","1.v1\u002F12.reference\u002F2.packages\u002Fprotocol-catalog",{"title":227,"path":228,"stem":229},"protocol-core","\u002Fv1\u002Freference\u002Fpackages\u002Fprotocol-core","1.v1\u002F12.reference\u002F2.packages\u002Fprotocol-core",{"title":231,"path":232,"stem":233},"redact","\u002Fv1\u002Freference\u002Fpackages\u002Fredact","1.v1\u002F12.reference\u002F2.packages\u002Fredact",{"title":235,"path":236,"stem":237},"relay-envelope","\u002Fv1\u002Freference\u002Fpackages\u002Frelay-envelope","1.v1\u002F12.reference\u002F2.packages\u002Frelay-envelope",{"title":239,"path":240,"stem":241},"requirements","\u002Fv1\u002Freference\u002Fpackages\u002Frequirements","1.v1\u002F12.reference\u002F2.packages\u002Frequirements",{"title":243,"path":244,"stem":245},"signed-request","\u002Fv1\u002Freference\u002Fpackages\u002Fsigned-request","1.v1\u002F12.reference\u002F2.packages\u002Fsigned-request",{"title":247,"path":248,"stem":249},"storage","\u002Fv1\u002Freference\u002Fpackages\u002Fstorage","1.v1\u002F12.reference\u002F2.packages\u002Fstorage",{"title":251,"path":252,"stem":253},"suite-identity","\u002Fv1\u002Freference\u002Fpackages\u002Fsuite-identity","1.v1\u002F12.reference\u002F2.packages\u002Fsuite-identity",{"title":255,"path":256,"stem":257},"testimony","\u002Fv1\u002Freference\u002Fpackages\u002Ftestimony","1.v1\u002F12.reference\u002F2.packages\u002Ftestimony",{"title":259,"path":260,"stem":261},"testimony-qa","\u002Fv1\u002Freference\u002Fpackages\u002Ftestimony-qa","1.v1\u002F12.reference\u002F2.packages\u002Ftestimony-qa",{"title":263,"path":264,"stem":265},"trust-graph","\u002Fv1\u002Freference\u002Fpackages\u002Ftrust-graph","1.v1\u002F12.reference\u002F2.packages\u002Ftrust-graph",{"title":267,"path":268,"stem":269},"web-session","\u002Fv1\u002Freference\u002Fpackages\u002Fweb-session","1.v1\u002F12.reference\u002F2.packages\u002Fweb-session",{"title":271,"path":272,"stem":273},"webauthn-lock","\u002Fv1\u002Freference\u002Fpackages\u002Fwebauthn-lock","1.v1\u002F12.reference\u002F2.packages\u002Fwebauthn-lock",{"title":275,"path":276,"stem":277},"Apps","\u002Fv1\u002Freference\u002Fapps","1.v1\u002F12.reference\u002F3.apps",{"title":279,"path":280,"stem":281},"Services","\u002Fv1\u002Freference\u002Fservices","1.v1\u002F12.reference\u002F4.services",{"title":22,"path":283,"stem":284},"\u002Fv1\u002Freference\u002Fprotocols","1.v1\u002F12.reference\u002F5.protocols","i-lucide-library","i-lucide-book-open",{"title":288,"icon":289,"path":290,"stem":291,"children":292,"page":470},"v0 · summer 2026","i-lucide-archive","\u002Fv0","2.v0",[293,329,365,401,436,452,471],{"title":294,"path":295,"stem":296,"children":297,"icon":328},"Getting Started","\u002Fv0\u002Fgetting-started","2.v0\u002F1.getting-started\u002F1.index",[298,300,304,308,312,316,320,324],{"title":299,"path":295,"stem":296},"What is this?",{"title":301,"path":302,"stem":303},"Web, Desktop, or Mobile","\u002Fv0\u002Fgetting-started\u002Faccess-methods","2.v0\u002F1.getting-started\u002F2.access-methods",{"title":305,"path":306,"stem":307},"Before You Begin","\u002Fv0\u002Fgetting-started\u002Fbefore-you-begin","2.v0\u002F1.getting-started\u002F3.before-you-begin",{"title":309,"path":310,"stem":311},"Install the Apps","\u002Fv0\u002Fgetting-started\u002Finstall","2.v0\u002F1.getting-started\u002F4.install",{"title":313,"path":314,"stem":315},"F-Droid, Explained","\u002Fv0\u002Fgetting-started\u002Ffdroid","2.v0\u002F1.getting-started\u002F5.fdroid",{"title":317,"path":318,"stem":319},"Your First Family Tree","\u002Fv0\u002Fgetting-started\u002Fyour-first-tree","2.v0\u002F1.getting-started\u002F6.your-first-tree",{"title":321,"path":322,"stem":323},"Invite Family Members","\u002Fv0\u002Fgetting-started\u002Finvite-family","2.v0\u002F1.getting-started\u002F7.invite-family",{"title":325,"path":326,"stem":327},"Connect Family Branches","\u002Fv0\u002Fgetting-started\u002Fconnect-branches","2.v0\u002F1.getting-started\u002F8.connect-branches","i-lucide-footprints",{"title":330,"path":331,"stem":332,"children":333,"icon":45},"Abantu","\u002Fv0\u002Fabantu","2.v0\u002F2.abantu\u002F1.index",[334,336,339,342,345,349,353,357,361],{"title":335,"path":331,"stem":332},"Abantu — Community Governance",{"title":12,"path":337,"stem":338},"\u002Fv0\u002Fabantu\u002Fcommunities","2.v0\u002F2.abantu\u002F2.communities",{"title":22,"path":340,"stem":341},"\u002Fv0\u002Fabantu\u002Fprotocols","2.v0\u002F2.abantu\u002F3.protocols",{"title":34,"path":343,"stem":344},"\u002Fv0\u002Fabantu\u002Fprojects","2.v0\u002F2.abantu\u002F4.projects",{"title":346,"path":347,"stem":348},"Proposals and Roles","\u002Fv0\u002Fabantu\u002Fproposals-and-roles","2.v0\u002F2.abantu\u002F5.proposals-and-roles",{"title":350,"path":351,"stem":352},"Sync and Relay","\u002Fv0\u002Fabantu\u002Fsync-and-relay","2.v0\u002F2.abantu\u002F6.sync-and-relay",{"title":354,"path":355,"stem":356},"Identity and Devices","\u002Fv0\u002Fabantu\u002Fidentity-and-devices","2.v0\u002F2.abantu\u002F7.identity-and-devices",{"title":358,"path":359,"stem":360},"Data and Privacy","\u002Fv0\u002Fabantu\u002Fprivacy","2.v0\u002F2.abantu\u002F8.privacy",{"title":362,"path":363,"stem":364},"Plugins and Extensibility","\u002Fv0\u002Fabantu\u002Fplugins-and-extensibility","2.v0\u002F2.abantu\u002F9.plugins-and-extensibility",{"title":366,"path":367,"stem":368,"children":369,"icon":400},"Iwacu","\u002Fv0\u002Fiwacu","2.v0\u002F3.iwacu\u002F1.index",[370,372,376,380,384,388,392,396],{"title":371,"path":367,"stem":368},"Iwacu — Family Tree",{"title":373,"path":374,"stem":375},"Terminal Commands","\u002Fv0\u002Fiwacu\u002Fterminal-commands","2.v0\u002F3.iwacu\u002F2.terminal-commands",{"title":377,"path":378,"stem":379},"Manage Page and Sync","\u002Fv0\u002Fiwacu\u002Fmanage-and-sync","2.v0\u002F3.iwacu\u002F3.manage-and-sync",{"title":381,"path":382,"stem":383},"Family History and the Atlas","\u002Fv0\u002Fiwacu\u002Fhistory-and-atlas","2.v0\u002F3.iwacu\u002F4.history-and-atlas",{"title":385,"path":386,"stem":387},"Script Editor","\u002Fv0\u002Fiwacu\u002Fscript-editor","2.v0\u002F3.iwacu\u002F5.script-editor",{"title":389,"path":390,"stem":391},"Inviting and Connecting","\u002Fv0\u002Fiwacu\u002Finviting-and-connecting","2.v0\u002F3.iwacu\u002F6.inviting-and-connecting",{"title":393,"path":394,"stem":395},"Desktop App and Devices","\u002Fv0\u002Fiwacu\u002Fdesktop-and-devices","2.v0\u002F3.iwacu\u002F7.desktop-and-devices",{"title":397,"path":398,"stem":399},"Reference","\u002Fv0\u002Fiwacu\u002Freference","2.v0\u002F3.iwacu\u002F8.reference","i-lucide-trees",{"title":402,"path":403,"stem":404,"children":405,"icon":435},"Isoko","\u002Fv0\u002Fisoko","2.v0\u002F4.isoko\u002F1.index",[406,408,411,415,419,423,427,431],{"title":407,"path":403,"stem":404},"Isoko — Local Marketplace",{"title":22,"path":409,"stem":410},"\u002Fv0\u002Fisoko\u002Fprotocols","2.v0\u002F4.isoko\u002F2.protocols",{"title":412,"path":413,"stem":414},"Listings and Messaging","\u002Fv0\u002Fisoko\u002Flistings-and-messaging","2.v0\u002F4.isoko\u002F3.listings-and-messaging",{"title":416,"path":417,"stem":418},"Tracked Deliveries","\u002Fv0\u002Fisoko\u002Fdeliveries","2.v0\u002F4.isoko\u002F4.deliveries",{"title":420,"path":421,"stem":422},"Wallet and Reputation","\u002Fv0\u002Fisoko\u002Fwallet-and-reputation","2.v0\u002F4.isoko\u002F5.wallet-and-reputation",{"title":424,"path":425,"stem":426},"Market Cells","\u002Fv0\u002Fisoko\u002Fcells","2.v0\u002F4.isoko\u002F6.cells",{"title":428,"path":429,"stem":430},"Safety Scanner","\u002Fv0\u002Fisoko\u002Fsafety","2.v0\u002F4.isoko\u002F7.safety",{"title":432,"path":433,"stem":434},"Web Version, Privacy, and Limitations","\u002Fv0\u002Fisoko\u002Fweb-and-privacy","2.v0\u002F4.isoko\u002F8.web-and-privacy","i-lucide-store",{"title":437,"path":438,"stem":439,"children":440,"icon":451},"Playground","\u002Fv0\u002Fplayground","2.v0\u002F5.playground\u002F1.index",[441,443,447],{"title":442,"path":438,"stem":439},"Playground — Try It in the Browser",{"title":444,"path":445,"stem":446},"Using the Tutorials","\u002Fv0\u002Fplayground\u002Fusing-tutorials","2.v0\u002F5.playground\u002F2.using-tutorials",{"title":448,"path":449,"stem":450},"How Tutorials Are Made","\u002Fv0\u002Fplayground\u002Fbuilding-tutorials","2.v0\u002F5.playground\u002F3.building-tutorials","i-lucide-flask-conical",{"title":453,"icon":454,"path":455,"stem":456,"children":457,"page":470},"Relays","i-lucide-server","\u002Fv0\u002Frelays","2.v0\u002F6.relays",[458,462,466],{"title":459,"path":460,"stem":461},"Relays Overview","\u002Fv0\u002Frelays\u002Foverview","2.v0\u002F6.relays\u002F1.overview",{"title":463,"path":464,"stem":465},"Deploy a Relay Node","\u002Fv0\u002Frelays\u002Frelay","2.v0\u002F6.relays\u002F2.relay",{"title":467,"path":468,"stem":469},"Configure Tor Hidden Service","\u002Fv0\u002Frelays\u002Ftor","2.v0\u002F6.relays\u002F3.tor",false,{"title":472,"icon":473,"path":474,"stem":475,"children":476,"page":470},"Privacy & Security","i-lucide-shield","\u002Fv0\u002Fprivacy","2.v0\u002F7.privacy",[477,481,485],{"title":478,"path":479,"stem":480},"How Privacy Works Here","\u002Fv0\u002Fprivacy\u002Fhow-it-works","2.v0\u002F7.privacy\u002F1.how-it-works",{"title":482,"path":483,"stem":484},"Device Security","\u002Fv0\u002Fprivacy\u002Fdevice","2.v0\u002F7.privacy\u002F2.device",{"title":486,"path":487,"stem":488},"Under Pressure","\u002Fv0\u002Fprivacy\u002Fcoercion","2.v0\u002F7.privacy\u002F3.coercion",{"id":490,"title":53,"body":491,"description":1578,"extension":1579,"links":1580,"meta":1581,"navigation":1582,"path":54,"seo":1583,"stem":55,"__hash__":1584},"docs\u002F1.v1\u002F12.reference\u002F2.packages\u002F1.index.md",{"type":492,"value":493,"toc":1560},"minimark",[494,504,509,512,663,667,670,781,785,788,920,923,926,996,1000,1003,1075,1079,1082,1154,1158,1161,1274,1278,1281,1337,1341,1344,1388,1392,1395,1450,1454,1457,1487,1491,1494,1523,1527,1530],[495,496,497,498,503],"p",{},"The monorepo has 54 packages. Generic building blocks are MIT; what encodes Paramira's own design is AGPL-3.0-or-later (see ",[499,500,502],"a",{"href":501},"\u002Fv1\u002Freference#licensing","Licensing","). Each name links to its page.",[505,506,508],"h2",{"id":507},"identity-and-devices","Identity and devices",[495,510,511],{},"Who you are, on which devices, and how apps and services check it.",[513,514,515,534],"table",{},[516,517,518],"thead",{},[519,520,521,525,528,531],"tr",{},[522,523,524],"th",{},"Package",[522,526,527],{},"What it does",[522,529,530],{},"Used by",[522,532,533],{},"License",[535,536,537,553,567,581,596,609,622,635,649],"tbody",{},[519,538,539,544,547,550],{},[540,541,542],"td",{},[499,543,187],{"href":188},[540,545,546],{},"Ed25519 did:iwacu: identity primitives — keypair generation, signing\u002Fverification, and encrypted recovery backups.",[540,548,549],{},"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",[540,551,552],{},"MIT",[519,554,555,559,562,565],{},[540,556,557],{},[499,558,191],{"href":192},[540,560,561],{},"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.",[540,563,564],{},"abantu, companion, isoko-web, iwacu-nuxt, web-session",[540,566,552],{},[519,568,569,573,576,579],{},[540,570,571],{},[499,572,67],{"href":68},[540,574,575],{},"Verify a visitor controls a paramira community identity (did:iwacu:...) without your app ever touching their private key.",[540,577,578],{},"abantu, directory",[540,580,552],{},[519,582,583,587,590,593],{},[540,584,585],{},[499,586,267],{"href":268},[540,588,589],{},"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.",[540,591,592],{},"abantu, isoko-web, iwacu-nuxt",[540,594,595],{},"AGPL-3.0-or-later",[519,597,598,602,605,607],{},[540,599,600],{},[499,601,131],{"href":132},[540,603,604],{},"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.",[540,606,564],{},[540,608,595],{},[519,610,611,615,618,620],{},[540,612,613],{},[499,614,251],{"href":252},[540,616,617],{},"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.",[540,619,592],{},[540,621,595],{},[519,623,624,628,631,633],{},[540,625,626],{},[499,627,271],{"href":272},[540,629,630],{},"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.",[540,632,592],{},[540,634,595],{},[519,636,637,641,644,647],{},[540,638,639],{},[499,640,83],{"href":84},[540,642,643],{},"Capacitor plugin (Android) that wraps small secrets with an Android Keystore AES key usable only right after a strong biometric or device-credential unlock.",[540,645,646],{},"companion",[540,648,552],{},[519,650,651,655,658,661],{},[540,652,653],{},[499,654,243],{"href":244},[540,656,657],{},"Sign HTTP requests (method, path, time, nonce, body hash) with a did:iwacu Ed25519 key, instead of trusting a bare DID header.",[540,659,660],{},"abantu, companion, directory, inquiry-board, isoko, isoko-client, playground",[540,662,552],{},[505,664,666],{"id":665},"encryption-and-messaging","Encryption and messaging",[495,668,669],{},"Sealing, envelopes and timing defences between people and through relays.",[513,671,672,684],{},[516,673,674],{},[519,675,676,678,680,682],{},[522,677,524],{},[522,679,527],{},[522,681,530],{},[522,683,533],{},[535,685,686,700,714,728,741,755,768],{},[519,687,688,692,695,698],{},[540,689,690],{},[499,691,139],{"href":140},[540,693,694],{},"Pairwise end-to-end encryption between two did:iwacu: identities — Ed25519-to-X25519 conversion, ECDH, HKDF, XChaCha20-Poly1305.",[540,696,697],{},"community-identity, family, inzira, isoko, one-time-mailbox, relay-envelope, testimony",[540,699,552],{},[519,701,702,706,709,712],{},[540,703,704],{},[499,705,59],{"href":60},[540,707,708],{},"Minimal AES-256-GCM string encryption with a base64url transport codec.",[540,710,711],{},"ephemeral-share, identity, relay-envelope, webauthn-lock",[540,713,552],{},[519,715,716,720,723,726],{},[540,717,718],{},[499,719,235],{"href":236},[540,721,722],{},"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.",[540,724,725],{},"abantu",[540,727,552],{},[519,729,730,734,737,739],{},[540,731,732],{},[499,733,215],{"href":216},[540,735,736],{},"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.",[540,738,199],{},[540,740,552],{},[519,742,743,747,750,753],{},[540,744,745],{},[499,746,155],{"href":156},[540,748,749],{},"Publish a small JSON payload as a short-lived, one-time-claim, encrypted share via a relay that never sees the plaintext.",[540,751,752],{},"nothing yet",[540,754,595],{},[519,756,757,761,764,766],{},[540,758,759],{},[499,760,123],{"href":124},[540,762,763],{},"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.",[540,765,752],{},[540,767,595],{},[519,769,770,774,777,779],{},[540,771,772],{},[499,773,79],{"href":80},[540,775,776],{},"In-process simulated physical-radio broadcast medium (BLE\u002FLoRa\u002FWiFi Direct) with optional DTN epidemic-buffering, for testing transports that assume one.",[540,778,752],{},[540,780,595],{},[505,782,784],{"id":783},"communities-and-governance","Communities and governance",[495,786,787],{},"Communities, their logs and keys, clans, requirements, acts between communities, trust.",[513,789,790,802],{},[516,791,792],{},[519,793,794,796,798,800],{},[522,795,524],{},[522,797,527],{},[522,799,530],{},[522,801,533],{},[535,803,804,818,832,846,860,874,888,902],{},[519,805,806,810,813,816],{},[540,807,808],{},[499,809,103],{"href":104},[540,811,812],{},"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.",[540,814,815],{},"abantu, companion",[540,817,595],{},[519,819,820,824,827,830],{},[540,821,822],{},[499,823,107],{"href":108},[540,825,826],{},"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\u002Fremove rules, and signing as the community.",[540,828,829],{},"abantu, clan, community-core, companion, family, iwacu-nuxt, link-room",[540,831,595],{},[519,833,834,838,841,844],{},[540,835,836],{},[499,837,111],{"href":112},[540,839,840],{},"The signed, hash-chained community event log format abantu uses, and a small WebSocket client for the relay that stores it.",[540,842,843],{},"abantu, companion, family, iwacu-nuxt, link-room",[540,845,552],{},[519,847,848,852,855,858],{},[540,849,850],{},[499,851,99],{"href":100},[540,853,854],{},"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.",[540,856,857],{},"abantu, community-core, companion, family, iwacu-nuxt",[540,859,595],{},[519,861,862,866,869,872],{},[540,863,864],{},[499,865,239],{"href":240},[540,867,868],{},"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.",[540,870,871],{},"abantu, clan, companion, directory, family, iwacu-nuxt, link-room, protocol-catalog",[540,873,595],{},[519,875,876,880,883,886],{},[540,877,878],{},[499,879,207],{"href":208},[540,881,882],{},"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\u002Frequirements evaluates.",[540,884,885],{},"abantu, clan, directory, family, iwacu-nuxt",[540,887,595],{},[519,889,890,894,897,900],{},[540,891,892],{},[499,893,63],{"href":64},[540,895,896],{},"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.",[540,898,899],{},"directory, isoko",[540,901,595],{},[519,903,904,908,916,918],{},[540,905,906],{},[499,907,263],{"href":264},[540,909,910,911,915],{},"A local peer trust ledger — score peers in ",[912,913,914],"span",{},"0,1"," by direct connection, relay\u002Fintermediary reliability, and transitive endorsement.",[540,917,725],{},[540,919,595],{},[505,921,22],{"id":922},"protocols",[495,924,925],{},"What communities adopt, how adoption is signed and resolved, and the catalog.",[513,927,928,940],{},[516,929,930],{},[519,931,932,934,936,938],{},[522,933,524],{},[522,935,527],{},[522,937,530],{},[522,939,533],{},[535,941,942,956,970,983],{},[519,943,944,948,951,954],{},[540,945,946],{},[499,947,227],{"href":228},[540,949,950],{},"Generic protocol-adoption resolution and signing machinery — feature-flag composition, Ed25519-signed adoption\u002Flisting records, replay protection.",[540,952,953],{},"abantu, companion, directory, isoko, isoko-client, iwacu-nuxt, playground",[540,955,552],{},[519,957,958,962,965,968],{},[540,959,960],{},[499,961,223],{"href":224},[540,963,964],{},"The Rubanda\u002Fparamira system protocol catalog — the actual protocols this ecosystem defines (cc:v1, delivery:v1, clan:v1, ...), for use with @paramira\u002Fprotocol-core's resolution\u002Fclient machinery.",[540,966,967],{},"abantu, companion, directory, family, isoko, iwacu-nuxt, playground",[540,969,595],{},[519,971,972,976,979,981],{},[540,973,974],{},[499,975,219],{"href":220},[540,977,978],{},"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.",[540,980,227],{},[540,982,552],{},[519,984,985,989,992,994],{},[540,986,987],{},[499,988,143],{"href":144},[540,990,991],{},"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.",[540,993,578],{},[540,995,595],{},[505,997,999],{"id":998},"family-and-history","Family and history",[495,1001,1002],{},"Family trees, history and dates as people remember them.",[513,1004,1005,1017],{},[516,1006,1007],{},[519,1008,1009,1011,1013,1015],{},[522,1010,524],{},[522,1012,527],{},[522,1014,530],{},[522,1016,533],{},[535,1018,1019,1033,1047,1061],{},[519,1020,1021,1025,1028,1031],{},[540,1022,1023],{},[499,1024,163],{"href":164},[540,1026,1027],{},"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).",[540,1029,1030],{},"abantu, capture-inbox, companion, iwacu-nuxt",[540,1032,595],{},[519,1034,1035,1039,1042,1045],{},[540,1036,1037],{},[499,1038,127],{"href":128},[540,1040,1041],{},"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\u002Fplayground's tutorial setups.",[540,1043,1044],{},"iwacu-nuxt, playground",[540,1046,595],{},[519,1048,1049,1053,1056,1059],{},[540,1050,1051],{},[499,1052,183],{"href":184},[540,1054,1055],{},"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.",[540,1057,1058],{},"corroboration, inquiry-board, inzira, iwacu-nuxt, testimony, testimony-qa",[540,1060,552],{},[519,1062,1063,1067,1070,1073],{},[540,1064,1065],{},[499,1066,95],{"href":96},[540,1068,1069],{},"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.",[540,1071,1072],{},"companion, iwacu-nuxt",[540,1074,595],{},[505,1076,1078],{"id":1077},"maps-and-places","Maps and places",[495,1080,1081],{},"Maps without a tile server, coarse places, and claims on regions.",[513,1083,1084,1096],{},[516,1085,1086],{},[519,1087,1088,1090,1092,1094],{},[522,1089,524],{},[522,1091,527],{},[522,1093,530],{},[522,1095,533],{},[535,1097,1098,1112,1126,1140],{},[519,1099,1100,1104,1107,1110],{},[540,1101,1102],{},[499,1103,167],{"href":168},[540,1105,1106],{},"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 \u002F country \u002F province \u002F district \u002F city) with coarsening and k-threshold rollup, offline place search, and per-era label resolution.",[540,1108,1109],{},"corroboration, directory, geo-packs, geo-vue, inquiry-board, inzira, inzira-web, iwacu-nuxt, testimony, testimony-qa",[540,1111,552],{},[519,1113,1114,1118,1121,1124],{},[540,1115,1116],{},[499,1117,175],{"href":176},[540,1119,1120],{},"Static boundary and place data for @paramira\u002Fgeo 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.",[540,1122,1123],{},"abantu, companion, inzira, inzira-web",[540,1125,552],{},[519,1127,1128,1132,1135,1138],{},[540,1129,1130],{},[499,1131,179],{"href":180},[540,1133,1134],{},"Vue SVG maps on @paramira\u002Fgeo, with no tile server: a fitted, pannable, zoomable (wheel, drag, pinch) \u003CGeoMap> and layers for regions (with agreement styling), pins, great-circle paths, flows sized by count, and count bubbles.",[540,1136,1137],{},"inzira, inzira-web, iwacu-nuxt",[540,1139,552],{},[519,1141,1142,1146,1149,1152],{},[540,1143,1144],{},[499,1145,171],{"href":172},[540,1147,1148],{},"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.",[540,1150,1151],{},"abantu, directory, iwacu-nuxt",[540,1153,595],{},[505,1155,1157],{"id":1156},"testimonies-and-inzira","Testimonies and Inzira",[495,1159,1160],{},"Anonymous testimonies, their review, the public board, investigation and questions.",[513,1162,1163,1175],{},[516,1164,1165],{},[519,1166,1167,1169,1171,1173],{},[522,1168,524],{},[522,1170,527],{},[522,1172,530],{},[522,1174,533],{},[535,1176,1177,1191,1205,1219,1233,1247,1261],{},[519,1178,1179,1183,1186,1189],{},[540,1180,1181],{},[499,1182,199],{"href":200},[540,1184,1185],{},"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.",[540,1187,1188],{},"abantu, companion, inzira-web",[540,1190,595],{},[519,1192,1193,1197,1200,1203],{},[540,1194,1195],{},[499,1196,255],{"href":256},[540,1198,1199],{},"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.",[540,1201,1202],{},"inquiry-board, inzira",[540,1204,595],{},[519,1206,1207,1211,1214,1217],{},[540,1208,1209],{},[499,1210,259],{"href":260},[540,1212,1213],{},"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.",[540,1215,1216],{},"inzira, testimony-qa",[540,1218,552],{},[519,1220,1221,1225,1228,1231],{},[540,1222,1223],{},[499,1224,195],{"href":196},[540,1226,1227],{},"The public board inzira communities share (docs\u002Fplans\u002Finzira.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.",[540,1229,1230],{},"directory, inzira",[540,1232,595],{},[519,1234,1235,1239,1242,1245],{},[540,1236,1237],{},[499,1238,119],{"href":120},[540,1240,1241],{},"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.",[540,1243,1244],{},"inzira, iwacu-nuxt",[540,1246,552],{},[519,1248,1249,1253,1256,1259],{},[540,1250,1251],{},[499,1252,231],{"href":232},[540,1254,1255],{},"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.",[540,1257,1258],{},"inquiry-board, inzira, testimony-qa",[540,1260,552],{},[519,1262,1263,1267,1270,1272],{},[540,1264,1265],{},[499,1266,71],{"href":72},[540,1268,1269],{},"Anonymous, rate-limited, publicly verifiable membership tokens: an issuer signs a blinded message once per member per epoch (RFC 9474 blind RSA, via @cloudflare\u002Fblindrsa-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.",[540,1271,1202],{},[540,1273,552],{},[505,1275,1277],{"id":1276},"community-apps","Community apps",[495,1279,1280],{},"The plugin contract community apps are built on, and what they show people.",[513,1282,1283,1295],{},[516,1284,1285],{},[519,1286,1287,1289,1291,1293],{},[522,1288,524],{},[522,1290,527],{},[522,1292,530],{},[522,1294,533],{},[535,1296,1297,1311,1324],{},[519,1298,1299,1303,1306,1309],{},[540,1300,1301],{},[499,1302,115],{"href":116},[540,1304,1305],{},"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.",[540,1307,1308],{},"abantu, community-core, companion, example-community-plugin, inzira",[540,1310,595],{},[519,1312,1313,1317,1320,1322],{},[540,1314,1315],{},[499,1316,159],{"href":160},[540,1318,1319],{},"Reference implementation of abantu's community-plugin convention — a Badges tab plus the community:badge-award event type it introduces.",[540,1321,815],{},[540,1323,595],{},[519,1325,1326,1330,1333,1335],{},[540,1327,1328],{},[499,1329,211],{"href":212},[540,1331,1332],{},"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'.",[540,1334,815],{},[540,1336,552],{},[505,1338,1340],{"id":1339},"storage-and-files","Storage and files",[495,1342,1343],{},"Key-value storage and content-addressed files.",[513,1345,1346,1358],{},[516,1347,1348],{},[519,1349,1350,1352,1354,1356],{},[522,1351,524],{},[522,1353,527],{},[522,1355,530],{},[522,1357,533],{},[535,1359,1360,1374],{},[519,1361,1362,1366,1369,1372],{},[540,1363,1364],{},[499,1365,247],{"href":248},[540,1367,1368],{},"A minimal async KeyValueStore contract (get\u002Fset of string values) plus an in-memory implementation for tests and throwaway node services.",[540,1370,1371],{},"isoko, protocol-core",[540,1373,552],{},[519,1375,1376,1380,1383,1386],{},[540,1377,1378],{},[499,1379,75],{"href":76},[540,1381,1382],{},"A content-addressed BlobStore contract (put\u002Fget\u002Fhas by sha256) with memory, relay-HTTP, local-disk and S3-compatible backends, an AES-GCM encrypting wrapper and replication across backends.",[540,1384,1385],{},"abantu, capture-inbox, companion, family, iwacu-nuxt",[540,1387,552],{},[505,1389,1391],{"id":1390},"phone","Phone",[495,1393,1394],{},"Capacitor plugins and the companion app's own pieces.",[513,1396,1397,1409],{},[516,1398,1399],{},[519,1400,1401,1403,1405,1407],{},[522,1402,524],{},[522,1404,527],{},[522,1406,530],{},[522,1408,533],{},[535,1410,1411,1424,1437],{},[519,1412,1413,1417,1420,1422],{},[540,1414,1415],{},[499,1416,87],{"href":88},[540,1418,1419],{},"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.",[540,1421,1072],{},[540,1423,595],{},[519,1425,1426,1430,1433,1435],{},[540,1427,1428],{},[499,1429,91],{"href":92},[540,1431,1432],{},"Capacitor plugin (Android): UnifiedPush with any distributor, showing one generic notification for content-free wake-ups.",[540,1434,646],{},[540,1436,552],{},[519,1438,1439,1443,1446,1448],{},[540,1440,1441],{},[499,1442,135],{"href":136},[540,1444,1445],{},"Heuristic threat classification from a stream of BLE\u002Fwifi device observations — flags passive sniffers, anomalously strong signals, followers, and sybil clusters.",[540,1447,646],{},[540,1449,595],{},[505,1451,1453],{"id":1452},"market","Market",[495,1455,1456],{},"The isoko marketplace.",[513,1458,1459,1471],{},[516,1460,1461],{},[519,1462,1463,1465,1467,1469],{},[522,1464,524],{},[522,1466,527],{},[522,1468,530],{},[522,1470,533],{},[535,1472,1473],{},[519,1474,1475,1479,1482,1485],{},[540,1476,1477],{},[499,1478,203],{"href":204},[540,1480,1481],{},"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\u002Fisoko-market.",[540,1483,1484],{},"companion, isoko-web",[540,1486,595],{},[505,1488,1490],{"id":1489},"interface","Interface",[495,1492,1493],{},"Components shared by the apps.",[513,1495,1496,1508],{},[516,1497,1498],{},[519,1499,1500,1502,1504,1506],{},[522,1501,524],{},[522,1503,527],{},[522,1505,530],{},[522,1507,533],{},[535,1509,1510],{},[519,1511,1512,1516,1519,1521],{},[540,1513,1514],{},[499,1515,151],{"href":152},[540,1517,1518],{},"Zoom-blur section navigation instead of scrolling: full-screen sections scale\u002Ffade into each other on wheel, keyboard, touch, or click — diving forward, pulling back out.",[540,1520,1244],{},[540,1522,552],{},[505,1524,1526],{"id":1525},"developer-tools","Developer tools",[495,1528,1529],{},"Running the services and starting new apps.",[513,1531,1532,1544],{},[516,1533,1534],{},[519,1535,1536,1538,1540,1542],{},[522,1537,524],{},[522,1539,527],{},[522,1541,530],{},[522,1543,533],{},[535,1545,1546],{},[519,1547,1548,1552,1555,1558],{},[540,1549,1550],{},[499,1551,147],{"href":148},[540,1553,1554],{},"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.",[540,1556,1557],{},"command-line tool",[540,1559,595],{},{"title":1561,"searchDepth":1562,"depth":1563,"links":1564},"",1,2,[1565,1566,1567,1568,1569,1570,1571,1572,1573,1574,1575,1576,1577],{"id":507,"depth":1563,"text":508},{"id":665,"depth":1563,"text":666},{"id":783,"depth":1563,"text":784},{"id":922,"depth":1563,"text":22},{"id":998,"depth":1563,"text":999},{"id":1077,"depth":1563,"text":1078},{"id":1156,"depth":1563,"text":1157},{"id":1276,"depth":1563,"text":1277},{"id":1339,"depth":1563,"text":1340},{"id":1390,"depth":1563,"text":1391},{"id":1452,"depth":1563,"text":1453},{"id":1489,"depth":1563,"text":1490},{"id":1525,"depth":1563,"text":1526},"The 54 packages in the Paramira monorepo, by area: what each does, where it's used, and its license.","md",null,{},true,{"title":53,"description":1578},"PIov8vnch5Mpge8-TzqW2fL-MRvXMknNF8aq2_hRHVU",[1586,1588],{"title":47,"path":48,"stem":49,"description":1587,"children":-1},"The Paramira monorepo: its packages, apps and services, and how they fit together.",{"title":59,"path":60,"stem":61,"description":1589,"children":-1},"Minimal AES-256-GCM string encryption with a base64url transport codec. No password derivation or key management — bring your own 32-byte key.",1791986801818]