POROROCA OTA · DOCUMENTATION
Start here
Account, credentials, signed bundle, native runtime, and first staged rollout.
THE RESULT
Ship one safe native screen update.
An eligible install downloads a signed document, verifies it on-device, keeps an embedded fallback, renders native UI, and reports whether it was applied. Pororoca changes presentation, not executable code: purchases, navigation, authentication, data, and side effects remain in the compiled app.
BEFORE YOU START
Gather the five inputs.
- A Pororoca account with Pro active.
- An app workspace and its stable slug, such as
acme-mobile. - A
deliverytoken for a developer machine, CI, or MCP. - A separate
runtimetoken for the shipped mobile app. - An Ed25519 key pair: private key in CI, public key in the mobile app.
Create the app and tokens in Dashboard. Tokens are shown once; save them immediately. Never put the private key or delivery token in a mobile build.
| Credential | Location | Authority |
|---|---|---|
| Private signing key | CI secret store | Signs bundles |
| Delivery token | CI or MCP environment | App-scoped publish, rollout, rollback; expires after 90 days |
| Public signing key | Mobile app bundle | Verifies signatures |
| Runtime token | Mobile app configuration | App-scoped resolve and untrusted event reporting; cannot inspect or mutate delivery |
01 · FIRST BUNDLE
Validate, sign, and publish at 10%.
cd /path/to/pororoca-ota/ios
mkdir -p .pororoca/documents
cp Fixtures/documents/paywall.ios.json .pororoca/documents/
swift run pororoca keys generate --output .pororoca/keys
swift run pororoca validate .pororoca/documents --platform ios
swift run pororoca export .pororoca/documents \
--output .pororoca/update --update-id paywall-1 \
--private-key .pororoca/keys/private.key
POROROCA_API_TOKEN=pororoca_live_... swift run pororoca publish .pororoca/update \
--server https://pororoca-ota.fly.dev --app your-app-slug \
--channel production --rollout 10 \
--public-key .pororoca/keys/public.key
Android needs a separate bundle using --platform android. Update IDs are immutable and unique
within an app. See Publisher and CI
before automation.
02 · NATIVE RUNTIME
Integrate one platform completely.
Persist one random app-owned install ID. Regenerating it changes staged-rollout membership.
03 · VERIFY
Test the endpoint the SDK calls.
curl -i \
-H "Authorization: Bearer $POROROCA_RUNTIME_TOKEN" \
"https://pororoca-ota.fly.dev/api/v1/apps/your-app-slug/channels/production/resolve?install_id=docs-smoke-0001"
200: this install receives a signed update.204: no eligible update; at 10%, it may be outside the cohort.401: missing, revoked, or wrong-app token.404: wrong app slug or channel.
DONE CHECK
Do not widen until all are true.
- The app has a compiled embedded fallback.
- The app contains only a runtime token and public key.
- A bundle signed by another key is rejected.
- The screen renders and native action handlers run.
- Dashboard reports downloaded and applied events.
- A rollback test restores known-good content.