Troubleshooting
Start with the symptom, then run the checks in order.Cannot reach the live testnet
Check the live endpoint (full endpoint list: Connect to the testnet):/health returns the bridge route list. /v1/apps answers from the node API — one hostname serves both roles, with node routes under /v1/*.
If you are running your own local devnet instead of the live testnet, use the local devnet checks at the bottom of this page.
Local CLI cannot reach the node
From your app folder:gora validate says the artifact is missing
Run:
gora.app.json:
gora validate says there is a secret
Remove private or credential-like values from source, manifest, policy, fixtures, and package metadata.
Do not package:
- private keys
- mnemonics
- deployer keys
- API tokens
- RPC secrets
- Algod tokens
gora deploy fails
Check:
upgrade must publish a new version label— it’s your app: bumpversion_labelingora.app.jsonand redeploy.only the current owner may publish an upgrade— someone else picked that name first (app ids are global). Rename your app (app_idingora.app.json, orgora inita fresh directory with a unique name).
gora invoke says the app does not exist
Confirm the app id in gora.app.json:
my-agent becomes my_agent.
JS/TS/Python runs locally but fails on the node
Check the runtime contract:- logs printed to stdout
- invalid JSON output
- app reads a local file that was not packaged
- app depends on unavailable network access
- manifest artifact path points to the wrong file
Algorand deploy asks for --datadir
Use --datadir only on the VM running the Algorand localnet.
From a local computer, do this instead:
app_id locally.
Contract metadata says needs_deployment
The Gora node knows the chain but not a deployed gateway/contract yet.
On the live public testnet this is expected for Base and Solana — only Algorand has Gora contracts deployed today (the wallet still reaches Base Sepolia / Solana devnet for native balances and transfers; see Connect to the testnet).
On a local devnet, the operator should deploy or configure it on the VM, then update the registry. Depending on chain, set or produce:
- Base:
BASE_CONTRACT_ADDRESS - Solana:
SOLANA_PROGRAM_ID - Algorand:
ALGORAND_APP_ID
No chain transaction happened after invoke
This is expected if you only invoked the Gora app.gora invoke runs your off-chain app and returns a result or intent. It does not automatically submit a Base, Solana, or Algorand transaction.
To make chain state change, connect one of:
- mobile signing request
- gateway fulfillment
- app contract callback
- smart wallet execution
- chain-specific submitter
Mobile shows no pending request
Check:- the app was invoked successfully
- the app returned
mobile_signing_requestor an approval-compatible result - (local devnet only) the node has a signing-request sink configured
- mobile points at the correct bridge/inbox
- you are looking at the correct app id
Mobile signed, but the contract did nothing
A signature alone is not enough. The signed response must be submitted to the chain or gateway. Check:submission_planexists- chain RPC is reachable
- gateway or contract address is correct
- contract rejects duplicate request ids
- contract accepts the proof/attestation format used by Devnet
- sender has enough dev funds
Which command should I run next?
For a local developer:Local devnet checks
Everything in this section applies only when you run your own local devnet withgora devnet up — none of it is needed against the live testnet.
On the VM, check that the Gora dev API is running:
gora devnet upis not running- the tunnel is not authenticated or not running
- the reserved tunnel domain is already in use
- the tunnel points at the wrong local port
- another process was already using port
8080