There are two possible workflows for app chain upgrades. The parameter registry admin address can be controlled:
- by a local private key, or
- by Fireblocks.
The goals for testnets are minimal friction, whilst still proving out the Fireblocks approval process before mainnet.
You can use Claude Code to orchestrate the multi-step upgrade process including bridge finalization. The /xmtp-upgrade skill handles repo validation, signing mode selection, and verification automatically:
/xmtp-upgrade upgrade GroupMessageBroadcaster on testnet-dev
| Environment | Default | To Override |
|---|---|---|
testnet-dev |
WALLET |
ADMIN_ADDRESS_TYPE=FIREBLOCKS |
testnet-staging |
WALLET |
ADMIN_ADDRESS_TYPE=FIREBLOCKS |
testnet |
FIREBLOCKS |
ADMIN_ADDRESS_TYPE=WALLET |
mainnet |
FIREBLOCKS |
No override possible |
Add the override variable to your command when you need to use the non-default signing method.
- wallet.md - Private key signing (simpler upgrade process)
- fireblocks.md - Fireblocks signing (multi-step upgrade process)