Skip to content
Tenzro
Documentation menu
Start here

Getting started

Create a passkey wallet, fund it with TNZO, call Tenzro Network 1 over JSON-RPC and run your first inference request.

This guide takes you from nothing to a working application on Tenzro Network 1: a hardware-rooted wallet, TNZO to pay fees, a first JSON-RPC call, a first inference request and a signed transaction. If you want to run hardware on the network instead, start with Operators and roles.

1. Create a wallet in the console

Open the console wallet and create a passkey. Your key is rooted in your device: a passkey on your phone or laptop, or a TPM 2.0 or Secure Enclave key on a machine. There is no key file to download and no seed phrase to write down.

  • The passkey requires user verification (a fingerprint, face or device PIN) for every signature.
  • Every passkey signature is hybrid: P-256 plus ML-DSA-65, so it stays quantum-safe.
  • Your human DID (did:tenzro:human:...) is derived from the passkey, and your account holds one native TNZO balance that EVM, SVM and DAML applications all read.

Add a second device or guardians straight away, so you can recover the account if you lose the first device. See Console and passkey wallet and Device linking and recovery.

2. Fund your account

TNZO pays every network fee and settles every transaction. Fund your account by transferring TNZO to its address from another wallet or account.

3. Call the network

Every node exposes EVM-compatible methods (eth_*) and the native tenzro_* namespace on one JSON-RPC endpoint. Reads are open and need no credentials:

bash
curl -s https://rpc.tenzro.xyz \
  -H 'content-type: application/json' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tenzro_blockNumber","params":[]}'

curl -s https://rpc.tenzro.xyz \
  -H 'content-type: application/json' \
  -d '{"jsonrpc":"2.0","id":2,"method":"tenzro_getBalance","params":["0xYourAddress"]}'

tenzro_listRpcMethods returns every method the node serves together with its access class.

From TypeScript, install the SDK:

bash
npm install tenzro-sdk
ts
import { TenzroClient } from "tenzro-sdk";

const client = new TenzroClient({
  endpoint: "https://rpc.tenzro.xyz",
  apiEndpoint: "https://api.tenzro.xyz",
});

console.log("height", await client.getBlockNumber());
const models = await client.inference.listModels();
console.log(models.length, "models available");

A Rust SDK with the same surface is on crates.io (cargo add tenzro-sdk). See SDK.

4. Run your first inference

Tenzro serves open models behind OpenAI-compatible routes on the RPC endpoint: chat, embeddings, images, audio and video. List what is available:

bash
curl -s https://rpc.tenzro.xyz/v1/models

Then call a model. You authenticate in one of two ways.

With an API key, issued to you by an RPC provider, sent in the X-Tenzro-Api-Key header:

bash
curl -s https://rpc.tenzro.xyz/v1/chat/completions \
  -H 'content-type: application/json' \
  -H "X-Tenzro-Api-Key: $TENZRO_API_KEY" \
  -d '{
    "model": "<model id from /v1/models>",
    "messages": [{"role": "user", "content": "Explain the Machine Economy in two sentences."}]
  }'

Or with no key at all, paying per request. A paid route answers 402 Payment Required with its price and accepted payment methods. Your client pays with x402 or MPP, in TNZO or stablecoins, and retries the same request with the payment attached. Agents use this path: no account setup with the provider, settlement per use. See x402, MPP and OpenAI-compatible APIs.

Any OpenAI client library works once you point its base URL at https://rpc.tenzro.xyz/v1 and add the header.

5. Sign what changes state

Network 1 is closed by default. Methods are split into three classes:

ClassWho can callExamples
OpenAnyone, no credentialsblock and balance reads, model lists
OwnerSigned by the account that paystransfers, staking, registering identities, webhooks
AdminThe node operator onlypricing, model management, API key issuance

Anything that moves money or changes state needs a signature from the paying account. In the browser the console wallet produces that signature with your passkey; on a machine, the device key does. See RPC access.

Patterns for applications

Most applications combine a few building blocks:

  • Identity. Give each user a passkey-rooted DID and each agent or device a machine DID derived from its device key. See Identity.
  • Agents. Give each user one or more agents with their own identity, a delegation scope and a spending policy. Agents talk to each other over A2A and to tools over MCP. See Agents.
  • Payments. Put HTTP 402 in front of your own paid resources with x402 or MPP, accept stablecoins through Bridge.xyz wallets, and let agents buy through ACP. If you charge customers off-chain and settle in TNZO from your own app account, see Developer payments.
  • Inference and compute. Call models through the OpenAI-compatible routes, or rent compute directly. See Inference and Compute rental.

Endpoints

ServiceURL
JSON-RPC and OpenAI-compatible APIshttps://rpc.tenzro.xyz
Web API and statushttps://api.tenzro.xyz
MCPhttps://mcp.tenzro.xyz/mcp
A2Ahttps://a2a.tenzro.xyz

Next steps