POMP developer docs
Build partner apps that create and claim PermaTell POMPs using the open tag protocol and the @permatell/pomp-sdk.
Integration gate (required before integrating)
You need an AO/Arweave signer, the exact Module/Authority/Scheduler below, the correct write URL, Arweave artwork, and a full Spawn → Eval → Setup. Missing any of these breaks create/claim or keeps the POMP hidden from Discover.
- Signer: Wander, PermawebOS, or your own AO/Arweave (or ETH type-3) key via @permaweb/aoconnect. An XRP-only wallet is not enough.
- Artwork: POMP-Artwork must be a 43-char Arweave tx id. IPFS → fetch → upload to Arweave first (optional POMP-Artwork-IPFS for provenance).
- Lifecycle: Spawn → Eval campaign Lua → Setup-POMP-Campaign. Incomplete setup stays hidden from public Discover. Optional POMP-Client for attribution.
- Create fee: may apply on PermaTell’s create UI after a free quota. Partner SDK spawns do not use the site fee voucher. Claims are never charged.
- Install: npm install @permatell/pomp-sdk (peer: @permaweb/aoconnect). npmjs.com/package/@permatell/pomp-sdk — v0.1.1+ defaults Scheduler; on 0.1.0 pass scheduler explicitly.
Overview
Discover indexes any AO process that carries the right tags. There is no custodial mint API — spawn with documented Module/Scheduler/Authority, Eval campaign Lua, then Setup-POMP-Campaign. Keep App-Name=PermaTell; use POMP-Client for partner attribution.
Required Discover tags
- App-Name = PermaTell
- POMP-Asset-Type = native-event | poap-claim
- POMP-Source = POMP | POAP
After spawn: Eval campaign Lua → Setup-POMP-Campaign. Incomplete setup stays hidden from public Discover.
Optional: POMP-Client (e.g. xrp-mini-app) and POMP-Client-Version for attribution. Filter Discover with ?client=.
Spawn constants (PermaTell mainnet)
Public on every PermaTell spawn. SDK 0.1.1+ defaults to this Module / Authority / Scheduler triple. Keep write URL with the same triple (RSA: https://app-1.forward.computer; ETH: https://schedule.forward.computer).
- Module = ISShJH1ij-hPPt9St5UFFr_8Ys3Kj5cyg7zrMGt7H9s
- Authority = a5ZMUKbGClAsKzB4SHDYrwkOZZHIIfpbaxrmKwUHCe8
- Scheduler = n_XZJhUnmldNFo4dhajoPZWhBXuJk-OcQr5JQ49c4Zo
- RSA write URL = https://app-1.forward.computer
- ETH write URL = https://schedule.forward.computer
SDK install
npm install @permatell/pomp-sdk
Published on npm as @permatell/pomp-sdk. Peer dependency: @permaweb/aoconnect. Browser-first — pass your own aoconnect DataItemSigner; no wallet UI is bundled. createPomp / claimPomp / getCampaignState / listDiscover. Prefer 0.1.1+ for Scheduler defaults.
Artwork (IPFS → Arweave)
POMP-Artwork must be a 43-character Arweave transaction id. If media is on IPFS, fetch the CID, upload bytes to Arweave, then pass the tx id. Optional POMP-Artwork-IPFS is provenance only.
Read APIs & CORS
GET/OPTIONS CORS is enabled on /api/pomp/discover, /top, /profile, /campaign/[id], and /asset/[id]. HyperBEAM proxy and create-fee routes stay same-origin — call HyperBEAM nodes or GraphQL directly for raw process state.
- GET /api/pomp/discover
- GET /api/pomp/top
- GET /api/pomp/profile?wallet=
- GET /api/pomp/campaign/[id]
- GET /api/pomp/asset/[id]
Security & spam
Anyone who can spawn AO can stamp PermaTell tags. Avoid PermaTell-Test and test title prefixes. Claim words must be ≥6 characters; weak words are discouraged. We may hide abusive process ids. Unique 1/1 minting is optional and needs Arweave L1 signing — see the EVM guide for caveats.
EVM wallet guidePartner checklist (e.g. XRP mini-app)
- Provide an AO/Arweave signer (Wander / PermawebOS / own key) — XRP-only is not enough.
- Fetch IPFS artwork → upload to Arweave → keep the 43-char artworkId.
- Spawn with Module/Authority/Scheduler + write URL (or SDK 0.1.1+ defaults), then Eval → Setup-POMP-Campaign.
- Optional POMP-Client; share /pomp/claim/{assetId}; confirm HyperBEAM state and Discover after indexing.
XRP-only wallets cannot sign AO/ANS-104 — you need an Arweave/AO signer (Wander, PermawebOS, or your own key).