Avok ships a chain registry. Your app does not declare a list of chains; it picks one per send from
the registry, and supplies its own RPC endpoints for production.
The registry
@avokjs/contracts carries a profile for every supported chain: the EIP-7702 delegate address, the
fee-token list, capability flags, and a default RPC. “Supported” is concrete. It means the Avok
wallet implementation is deployed there. A chain that is not in the registry has no profile, so a
send to it throws rather than guessing.
v1 is EVM-only. Wallets are smart EOAs through EIP-7702. To add a chain, you deploy the Avok contract
there and add a profile to @avokjs/contracts.
You pick a chain per send
There is no “register your chains” step. Each send names its chain with chainId. The value must be
a registry chain, so an app opts into whichever chains it actually sends on by using their ids.
RPC endpoints
You do not have to supply an RPC for the SDK to run. Every registry chain has a public default, and
resolution is simple:
The public defaults are development-only. They are rate-limited, carry no SLA, and block the
indexed reads a wallet needs. Set rpcUrls before production.
An RPC is a trust boundary, not just a data source. It answers “what address does this name resolve
to,” so a dishonest endpoint can redirect a user’s funds. That is why Avok never picks one for you.
Overrides are per chain, so you point the chains you use at endpoints you trust and leave the rest on
defaults:
You have three ways to supply an endpoint, none of which needs Avok to run anything: your own
provider URL (a domain-allowlisted key is safe in a browser bundle), a proxy you host that keeps the
key server-side, or a URL your end user supplies.
isPublicDefaultRpc() reports whether a chain is still on a public default, so your app can warn “you
are on a public dev endpoint” instead of degrading silently.
Fee tokens
Each chain profile also lists the fee tokens it supports for sponsored sends. A fee token is checked
against the target chain’s registry and rejected if it means nothing there, since an address that is
USDC on one chain is not USDC on another. See Sponsorship.