Troubleshooting
Start with the symptom, then run the checks in order.Devnet health returns 404 or fails
On the VM, check that the Gora dev API is running:gora devnet upis not running- ngrok is not authenticated
- the reserved ngrok domain is already in use
- the tunnel points at the wrong local port
- another process was already using port
8080
Local CLI cannot reach Devnet
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:
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 Devnet
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.
The Devnet 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 - the dev 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