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:
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:
npm install tenzro-sdkimport { 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:
curl -s https://rpc.tenzro.xyz/v1/modelsThen 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:
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:
| Class | Who can call | Examples |
|---|---|---|
| Open | Anyone, no credentials | block and balance reads, model lists |
| Owner | Signed by the account that pays | transfers, staking, registering identities, webhooks |
| Admin | The node operator only | pricing, 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
| Service | URL |
|---|---|
| JSON-RPC and OpenAI-compatible APIs | https://rpc.tenzro.xyz |
| Web API and status | https://api.tenzro.xyz |
| MCP | https://mcp.tenzro.xyz/mcp |
| A2A | https://a2a.tenzro.xyz |
Next steps
- Architecture: how the layers fit together.
- Tenzro DAG Consensus: how transactions are ordered and finalised.
- Operators and roles: earn TNZO by running hardware.