providers.toml connects each recognized Solana cluster to an RPC endpoint.
It also defines an optional fallback for transient transport failures. This
configuration controls network access. It does not choose who may sign, change
an App’s program allowlist, or select the broadcaster for a transaction.
Read Solana bundle for the instruction assembly,
simulation, signing, and submission lifecycle. This page focuses on provider
configuration and the network-specific boundaries around that lifecycle.
Configure Solana providers
Declare one[solana.<cluster>] table for each cluster you want to configure.
rpc_url is required. The remaining fields have defaults.
providers.toml
rpc_urlselects the primary RPC for the cluster. It supports{ENV_VAR}placeholders.fallback_urlssupplies ordered alternatives. With the currentsingle_fallbackpolicy, Aomi tries only the first URL after a transient transport failure.retry_policyshould remainsingle_fallback.localmarks a developer endpoint. It defaults totrueforlocalnetandfalsefor the public clusters.kindshould remainrpc.
[solana.mainnet] and
[solana.mainnet-beta] refer to the same cluster, so you cannot declare both.
Pass a specific file with --providers <path> or set PROVIDERS_TOML. Without
either option, Aomi searches for providers.toml from the current directory
upward.
Add or change a Solana cluster
Use these steps to point Aomi at another provider:- Choose one of the recognized clusters:
mainnet-beta,devnet,testnet, orlocalnet. - Add or update its
[solana.<cluster>]table. - Set
rpc_urlto the primary endpoint. Use an environment placeholder for any credential in the URL. - Add one
fallback_urlsentry if the cluster needs provider failover. - Restart the process that loads
providers.toml.
providers.toml can change the provider for a recognized cluster. It cannot
define a fifth SVM network. Supporting another SVM network requires a new
cluster implementation so parsing, wallet routing, guards, and transaction
submission agree on its identity.
When a cluster has no explicit table, Aomi resolves its RPC in this order:
- The legacy
SOLANA_<CLUSTER>_RPC_URLenvironment variable. - A Helius URL derived from
HELIUS_API_KEYfor mainnet or devnet. - The public cluster default.
rpc_url in [solana.<cluster>] always takes priority. A blank
value falls through to the same resolution order instead of creating an
unusable RPC client.
Supported clusters
Every wallet request carries a canonical cluster identifier. Aomi rejects an
unknown label instead of silently routing the request to a different network.
The hosted wallet selector and MCP endpoint expose mainnet, devnet, and
testnet. Localnet remains available to a locally configured runtime.
Stage a Solana transaction
An App can stage Solana work in two forms:svm_stage_ixaccepts instructions composed by the App. Aomi can inspect each program ID and instruction discriminator before it creates the wallet request.svm_stage_txaccepts a venue-built base64 transaction, such as aVersionedTransactionreturned by a swap service.
svm:tx-1 cannot resolve to an EVM request.
Request kinds
The request kind determines what the wallet does after review:
Aomi accepts legacy and versioned Solana transactions. In the browser, a
connected Solana wallet handles attended requests. In the CLI,
aomi tx sign can use a local Solana keypair.
Choose the broadcaster
The staged transaction records who submits it. The model cannot change this choice after assembly:walletasks the connected wallet to sign and submit. This is the standard attended flow.venuereturns the signed bytes to the App’s submit tool so the venue can broadcast them.aomilets the runtime submit through the configured cluster RPC after it verifies the signed bytes and expected wallet.
confirmed remains committed even if a later transaction fails. Solana does
not roll back an earlier transaction across a multi-transaction sequence.
Guards
A guarded App can restrict three parts of a Solana request:- Programs. Every instruction’s
program_idmust be allowed. - Instruction discriminators. Each inspectable Anchor discriminator must be allowed.
- Clusters. The request must name an allowed cluster.
svm_stage_tx cannot be checked against program
and discriminator allowlists. Guarded Apps should compose instructions through
svm_stage_ix when those checks are required.
Simulation boundaries
Aomi can simulate a staged Solana transaction against cloned accounts and programs, with cluster RPC simulation as a fallback. Solana simulation is a tool result rather than a universal wallet-request gate. Your wallet remains the final review surface for an attended request. Provider failover also has a narrow scope. Aomi retries the first fallback RPC only for a transport-class failure. A structured RPC error, invalid transaction, signing error, or decoding error returns immediately because a different endpoint should not change its meaning.Next
Solana bundle
Follow instruction assembly, simulation, signing, and submission.
EVM
Configure EVM providers and understand fork simulation and broadcast
routing.
Permission model
See how wallet policy controls who may sign on either virtual machine.