API Reference
Peoples Open Codex for Android

One card format.
Eight apps.
Zero cloud.

POCA is an open-source suite of offline-first Android apps built for Indigenous digital sovereignty. Every story, calendar, lesson, and map lives on a community-curated PAC, a removable microSD card, and is served to every app through a single ContentProvider. Nothing leaves the device.

Apache 2.0 Offline-first Community-sovereign org.poca.*
8core apps
2provider authorities
12URI endpoints
0cloud services

The suite

Eight apps, one codex

Each app owns a content domain on the PAC and reads only its own cards. The names come from Nahuatl; the content comes from the community that curates the card, made to be picked up by elders and kids alike.

Amoxtli

“book”

Stories, creation myths, and oral traditions. An ePub and audiobook reader whose signature Codex format scrolls horizontally, the way pre-Columbian codices unfold. Deep links: poca://amoxtli/{codex|book|audiobook}/{card_id}

storycodex

Cualli

“good, well-being”

Wellness and safety hub. Offline emergency information, guided check-ins, and health education with culturally grounded support content.

exercisecheckin_promptsupport_services

Cuilo

“to paint, to write”

Creative studio. Full painting and drawing tools, built on Krita, with community art templates, compositions, and tutorials from the PAC.

templatecompositiontutorial

Metztli

“moon”

Aztec/Mexica calendar. Day signs, trecenas, and lunar phases alongside the device calendar: a community’s own calendar system overlaid on everyday scheduling.

calendar_daymy_eventslunar_phase

Ollin

“movement”

Ceremonies, healing practices, and cultural articles. An open-source reader, never the owner, of community content, with optional Mukurtu integration that honors cultural protocols.

articleprofileceremony

Tlalli

“earth”

Land and nature field guide. Sacred places, plants, animals, and minerals. Fully offline by design: the app ships without the INTERNET permission.

locationplantanimal

Tlato

“word, speech”In development

Language learning and dictionary. Offline vocabulary, pronunciation audio, and full lessons. Every language database is loaded from the PAC, curated by community language-preservation departments.

wordphraselesson

Teo

“sacred”

Deities, spiritual entities, and mythology. Content is community-provided and community-gated.

entityreflectionprayer

Cristo

Unpublished

Biblical content and Christian traditions for Latin American communities where Indigenous practice and Catholicism are syncretized.

daily_devotionalreflectionprayer

Nahual

“shapeshifter”Unpublished

Spirit animals and primal archetypes. A planned journaling and grounding companion.

id_profilecheckin_promptspecies_affirmations

The plumbing

Three utilities carry the suite

PAC Reader

org.poca.pac

The content bridge. Reads the PAC microSD card, parses its index, and re-serves everything to the suite through one read-only ContentProvider. Runs the dashboard, diagnostics, and each community’s signed update channel.

Xochi

org.poca.xochi

Offline digital assistant. An on-device model that answers voice and text questions using only what is on the PAC, through a typed tool contract. No cloud, no eavesdropping: it cannot know what the card doesn’t hold.

Gateway

org.poca.launcher

The home screen. A POCA fork of Android’s Launcher3. Its culture wheel renders a pattern served by PAC’s identity provider, so the same tablet greets each community with its own identity.

Why offline

A single card can carry tens of thousands of books, hours of elders’ voices, and an entire language. When the card comes home, the tablet speaks it, whether or not the internet ever arrives.

The content bridge

How PAC parses a card

A PAC is a community-curated microSD card. PAC Reader turns it into a queryable, permission-guarded content service; client apps never touch the filesystem directly. Swap the card, and the same tablet becomes a different library.

Mount

The card is inserted. PAC Reader detects the mount, verifies the PAC fingerprint files, and locates the PAC root.

Parse

It parses poca_config.json and poca_cards_index.json, plus per-app app_config.json and identity/wheel.json, into a typed card index.

Serve

Everything is exposed through one read-only ContentProvider on two authorities, guarded by a signature-level permission.

Render

Apps query their own cards, resolve media by relative path against the PAC root, and jump between apps with poca:// deep links.

Developer reference

The PAC provider API

Verified against the current provider source. Access to both authorities requires org.poca.pac.permission.READ_CARDS, a signature-level permission: only apps signed with the shared POCA key can query. The surface is read-only by design; the single writable endpoint is the culture-wheel override.

Authority: org.poca.pac.cards

Card content, PAC metadata, app configuration, and raw file access.

EndpointReturns
/cardsAll visible cards.
/cards/{card_id}A single card by id.
/apps/{app_id}Cards for one app; respects provisioning and queryability.
/featuredFeatured cards from enabled apps, for dashboard and widget hydration.
/indexPAC metadata: schema_version, pac_version, tribe_name, locale, generated_at, total_cards.
/config/{app_id}App provision plus its app_config payload. Unlockable apps that aren’t enabled return nothing.
/file/{path}openFile() read-only stream of a raw content file under the PAC root, path-traversal guarded.
/files/{dir}Directory listing cursor: name, path, is_dir, size.

Authority: org.poca.pac.identity

Serves the Gateway launcher’s culture wheel.

EndpointReturns
/wheel/designsAll wheel designs on the PAC.
/wheel/designs/{id}/patternPattern data for one design.
/wheel/activeThe active design. Writable via update() to set a local active-design override.
/wheel/active/patternPattern data for the active design.

The universal card

Every piece of content on a PAC is a card with the same envelope, whatever app it belongs to. The schema is universal; the content is community-specific.

FieldTypeDescription
card_idStringreqUnique identifier within the PAC.
app_idAppIdreqOwning POCA app.
typeStringreqPer-app content type (see below).
titleStringreqPrimary localized display text.
descriptionStringoptSecondary summary text.
imageString?optRelative hero image path.
image_thumbnailString?optSmall image path.
image_heroString?optLarge image path.
iconString?optMaterial symbol name or SVG path.
labelString?optPill label text.
deep_linkStringreqpoca:// deep-link target.
localeStringoptContent locale; defaults to en.
updated_atStringreqISO 8601 update timestamp.
featuredBooleanoptDashboard featured hint.
schema_versionIntoptForward-compat versioning.

Content types by app

Each app declares its card types and the extra fields those types carry.

app_idTypesType-specific fields
amoxtlistory, codexauthor, page_count, reading_time_min, language
metztlicalendar_day, my_events, lunar_phaseday_number, day_sign, trecena, glyph_path
tlatoword, phrase, lessonnative_word, translation, pronunciation_audio, part_of_speech
ollinarticle, profile, ceremonyauthor, category, reading_time_min
teoentity, reflection, prayerdomain, associations
tlallilocation, plant, animalcoordinates, region, habitat, traditional_uses
cualliexercise, checkin_prompt, support_servicesduration_min, difficulty, wellness_category
cuilotemplate, composition, tutorialmedium, materials, skill_level
nahualid_profile, checkin_prompt, species_affirmationsidentity_profile, prompt_group, integration_notes
cristodaily_devotional, reflection, prayerbook_name, holy_days, verse

poca_config.json: the card’s manifest

Sits at the PAC root and declares what the card is and which apps it provisions.

FieldTypeDescription
schema_versionIntreqConfig schema version.
pac_versionStringreqPAC content version.
tribe_nameStringreqCurating community’s name.
tribe_sealString?optRelative path to the community seal.
tribe_seal_shapeString?optcircle / rounded / raw rendering hint.
localeStringreqDefault PAC locale.
generated_atStringreqISO 8601 generation timestamp.
appsArrayreqList of app_id + directory + provision + enabled.

Provisioning tiers

The PAC decides which apps exist for its holder. Communities curate not just content but the shape of the suite itself.

Core

Always present and enabled. The backbone of every POCA tablet.

Bundled

Shipped on the PAC; each person can toggle them on or off.

Unlockable

Community-managed. Hidden from every query until enabled; the provider returns nothing, as if the app weren’t there.

Xochi’s tool contract

The assistant reaches PAC content only through these typed tools, published in the shared poca-pac-contract library so the provider and the assistant can never disagree.

get_card get_cards_for_app get_featured_cards get_all_cards search_cards get_pac_info get_app_config open_card

Design constraints

Updates stay sovereign, too. Each community runs its own signed update channel: Ed25519-signed manifests, SHA-256 integrity per file, and one-time-code device enrollment. No central store, no third-party gatekeeper.