Skip to main content

Devnet quickstart

This is the clearest end-to-end flow:
  1. A VM runs Gora Devnet, local chains, and ngrok.
  2. Your local computer runs the Gora CLI and app code.
  3. The local CLI points at the Gora ngrok URL.
  4. Contract metadata comes from Gora Devnet, not from VM-only files.

A. Start Devnet on the VM

On the VM where the Gora repo, local chains, and ngrok live:
This starts:
  • Gora dev HTTP API
  • Dev Bridge for mobile approval/signing
  • Base/Ganache local RPC
  • Solana local validator
  • Algorand localnet
  • ngrok tunnels
  • contract metadata registry
The command stays running. Use tmux if you want to detach:
Check status from another VM shell:
Typical public endpoints:
Gora posts mobile signing requests to the bridge over the VM-local URL http://127.0.0.1:8787. Mobile apps on another machine read the same requests through https://gora-bridge-dev.ngrok.app. Stop processes started by the helper:

B. Configure your local app

On your local computer, create an app:
Set the Gora Devnet URL:
If Devnet requires a token:
Check health:

C. Resolve chain contract metadata

For apps that target Base, Solana, or Algorand, link chain metadata before deploying the Gora app package. First run doctor:
Then resolve and link:
For Base:
For Solana:
The --node form calls GET /v1/contracts/{chain} and records the deployed address, program id, or Algorand app id in .gora/contracts/<chain>/latest.json. For Algorand, this is the important distinction:
  • local developers use --node https://gora-dev.ngrok.app
  • VM operators may use --datadir /path/to/Node
Do not use --datadir from a local computer unless that computer is running the Algorand localnet.

D. Build, validate, package, deploy

gora deploy uploads:
  • app artifact
  • manifest
  • policy
  • package metadata
  • linked contract metadata
It writes a deployment receipt to:

E. Invoke

Use the generated fixture:
The response includes a request_id. If your app result includes a chain field, Devnet may attach contract_metadata to the invoke or result response. Use that metadata for app ids, program ids, addresses, RPC URLs, and auth hints.

F. Inspect

Inspect receipts are saved under:

What success means

A successful invoke means:
  1. Devnet found your deployed app.
  2. Devnet ran the declared artifact.
  3. Your app returned valid JSON.
  4. Gora recorded the result and attestation data.
It does not necessarily mean a chain transaction was submitted. Chain execution requires a gateway, wallet, mobile signing flow, or submitter. For mobile signing flows, use:

One-screen local flow

Next: Deploy to Gora.