carry::access module is live on Sui testnet. The app reads these IDs from deployments/testnet.json, so the verifier works out of the box.
Testnet (live)
Package ID
0xf7acc10ee3de95ed5bb4560e48d5bf4a4e24f7c4003b892b56632c7ff398b6f9View the example proof
Open the walletless verifier for the demo Receipt — all three checks green.
Configuration
The canonical IDs live indeployments/testnet.json. The app reads them (with env overrides) in apps/web/lib/sui.ts:
On-chain reads (the verifier’s
getObject + is_allowed via devInspect) go through a public RPC — the fullnode.testnet.sui.io endpoint no longer serves raw JSON-RPC, so Carry points at sui-testnet-rpc.publicnode.com by default (override with SUI_RPC_URL).Publish your own
1
Switch to testnet and fund gas
2
Publish
packageId from the published objectChanges.3
Create your policy
publish doesn’t call create(), so make your shared AccessPolicy + OwnerCap:4
Update deployments/testnet.json
Set
packageId, accessPolicy, ownerCap, and owner to the new values — the app picks them up automatically.