> ## Documentation Index
> Fetch the complete documentation index at: https://gora.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Connect to the testnet

> Live endpoints, deployed contract IDs, and what the public Gora testnet supports today.

# Connect to the testnet

Everything a developer needs to target the live Gora testnet from their own machine.

## Endpoints

| What                                                      | URL                                         |
| --------------------------------------------------------- | ------------------------------------------- |
| Gora node API (deploy, invoke, schedules, contracts)      | `https://gora-bridge.74.241.248.103.nip.io` |
| Dev bridge (app UIs, mobile signing, staking, validators) | `https://gora-bridge.74.241.248.103.nip.io` |
| Algorand testnet algod (public, no token)                 | `https://testnet-api.algonode.cloud`        |
| Algorand testnet indexer                                  | `https://testnet-idx.algonode.cloud`        |

One hostname serves both roles: node API routes live under `/v1/*`, bridge routes at the top level. Point the CLI at it once per app:

```bash theme={null}
gora config set node.url https://gora-bridge.74.241.248.103.nip.io
```

or export it for every command:

```bash theme={null}
export GORA_NODE_URL=https://gora-bridge.74.241.248.103.nip.io
export GORA_BRIDGE_URL=https://gora-bridge.74.241.248.103.nip.io
```

## Your developer token = your identity

On the public testnet, deploys and invokes are authenticated with a bearer
token that you choose. That token **is your developer identity**: the first
token to deploy an app id owns it, and only that token can upgrade it — so no
one else can overwrite your app. Set it once:

```bash theme={null}
gora config set api.token <any-string-you-choose>
```

Keep it secret (anyone with your token can push to your apps) and reuse the same
token across your projects so you keep owning them. Ownership covers upgrades,
schedules (`gora schedule create|list|delete`) and the app state view; every
request you make runs with `caller` set to your token's `dev_…` identity, so
nobody can act as you.

Quick health checks:

```bash theme={null}
curl https://gora-bridge.74.241.248.103.nip.io/v1/apps       # node API: registered apps
curl https://gora-bridge.74.241.248.103.nip.io/health        # bridge: route list
```

## Deployed contracts (Algorand testnet)

| Contract            | ID          | Purpose                                                                                                                              |
| ------------------- | ----------- | ------------------------------------------------------------------------------------------------------------------------------------ |
| Gora gateway        | `767488273` | Box-per-request oracle gateway: contracts post requests, Gora fulfills with committee-signed results                                 |
| Validator staking   | `764254589` | Stake GORA to run or delegate to validators                                                                                          |
| GORA token (ASA)    | `764254575` | Testnet GORA, 6 decimals                                                                                                             |
| Raffle example      | `764491406` | Reference app: attested prize draws ([walkthrough](../examples/gora-raffle))                                                         |
| ALGO/USD price feed | `767488315` | Live oracle-fed price feed updating continuously; verifies the committee attestation on-chain (source `chains/algorand/price_feed/`) |

The same data is served live by the node — this is what `gora contract deploy --chain algorand` resolves against:

```bash theme={null}
curl https://gora-bridge.74.241.248.103.nip.io/v1/contracts/algorand
```

## What's live today

* **Chain support:** Algorand testnet is fully supported (gateway callbacks, staking, mobile signing, examples). Base (Sepolia) and Solana (devnet) are reachable from the wallet for native balances and transfers, but the Gora contracts for them exist only in the repo and are not yet deployed to the public testnet — `GET /v1/contracts` reports their status honestly.
* **Execution:** deployed apps run in the WASM runtime (the public testnet is WASM-only) with fuel metering and per-request billing; every result carries a committee-signed attestation. JS/TS/Python apps run unsandboxed and are supported only on a self-hosted node.
* **LLM host function:** `gora::llm` works only when the node operator has configured an LLM endpoint (`GORA_LLM_ENDPOINT`); if none is configured the host function returns error `-61`. Agent apps that call an LLM therefore depend on the operator — confirm the endpoint is available on the node you deploy to before relying on it.
* **Free to build:** deploying and invoking apps costs **no GORA** (the node seeds a developer balance per app). A developer token is still required — it is your identity, not a fee (see [Your developer token = your identity](#your-developer-token--your-identity) above). GORA is needed only for validator staking and for apps that move value on-chain (get testnet GORA from the faucet in the mobile app, or the bridge faucet route).

## Trust model (testnet v1)

Be aware of what this testnet does and does not prove:

* Attestations are committee-signed; there are no fraud proofs or slashing yet.
* Validators run under Gora-operated infrastructure while the managed-validator rollout completes; staking and delegation are live on-chain.
* Treat all keys and funds as disposable testnet material.

## Mobile apps

The iOS and Android apps ship preconfigured with the endpoints above — wallet, GORA faucet, app directory, signing, validator launch, and delegation all target this testnet out of the box. See [Test with mobile](./test-with-mobile).
