Tenzro Testnet is live —request testnet TNZO

CLI Reference

The tenzro tool provides command-line access to all Tenzro Network functionality including node management, wallets, models, staking, governance, payments, agents, and more.

Installation

# Homebrew (recommended)
brew tap tenzro/tap
brew install tenzro-cli

# Or install script
curl -sSL https://get.tenzro.network | sh

# Or build from source
git clone https://github.com/tenzro/tenzro-network.git
cd tenzro-network && cargo build --release -p tenzro-cli

# Verify
tenzro version

Global Options

tenzro [OPTIONS] <COMMAND>

OPTIONS:
  --rpc <URL>           RPC endpoint [default: http://127.0.0.1:8545]
  --format <FORMAT>     Output format: text|json [default: text]
  --verbose             Enable verbose logging
  -h, --help            Print help
  -V, --version         Print version

Commands

join - Network Onboarding

Zero-install network participation. Provisions a TDIP identity, MPC wallet, and hardware profile in a single call.

# Join the network (provisions identity + wallet + hardware)
tenzro join --name "Alice" --rpc https://rpc.tenzro.network

# Options:
#   --name <NAME>       Display name [default: "Tenzro User"]
#   --origin <ORIGIN>   Join origin [default: "cli"]
#   --type <TYPE>       Identity type: human|machine [default: "human"]
#   --rpc <URL>         RPC endpoint [default: https://rpc.tenzro.network]

RPC methods: tenzro_joinAsMicroNode (primary), tenzro_participate (fallback).

node - Node Management

# Start a node
tenzro node start \
  --role validator \
  --config ~/.tenzro/config.toml \
  --data-dir ~/.tenzro \
  --rpc-addr 127.0.0.1:8545 \
  --p2p-addr /ip4/0.0.0.0/tcp/9000 \
  --metrics

# Check node status
tenzro node status --rpc http://127.0.0.1:8545
tenzro node status --format json

# Stop the running node
tenzro node stop --rpc http://127.0.0.1:8545

RPC methods: tenzro_nodeInfo, eth_blockNumber, net_peerCount, tenzro_shutdown.

wallet - Wallet Operations

# Create a new MPC wallet
tenzro wallet create --name my-wallet --rpc http://127.0.0.1:8545

# List all wallets
tenzro wallet list --detailed --rpc http://127.0.0.1:8545

# Check balance
tenzro wallet balance --address 0x742d35Cc6634C0532925a3b844Bc9e7595f...
tenzro wallet balance --detailed

# Send TNZO
tenzro wallet send --to 0xRecipientAddr --amount 10 --rpc http://127.0.0.1:8545

# Import wallet from private key
tenzro wallet import 0x4c0883a69102937d... \
  --key-type ed25519 \
  --name "Alice"

RPC methods: tenzro_createWallet, tenzro_listAccounts, eth_getBalance, eth_sendRawTransaction, tenzro_importIdentity.

model - AI Models

Model commands operate in dual mode: local by default, or remote via --rpc.

# List local models
tenzro model list
tenzro model list --downloaded --family gemma

# List models on the network
tenzro model list --serving --format json

# Get model info
tenzro model info gemma4-9b

# Download model (direct HTTP from HuggingFace)
# Saves to ~/.tenzro/models/<model-id>.gguf (flat file, not subdirectory)
tenzro model download gemma4-9b
tenzro model download gemma4-9b --rpc http://127.0.0.1:8545

# Serve model (local or remote via RPC)
# Sends flat JSON params: {"model_id": "gemma4-9b"}
tenzro model serve gemma4-9b
tenzro model serve gemma4-9b --rpc http://127.0.0.1:8545

# Stop serving (waits for in-flight requests before unloading)
tenzro model stop gemma4-9b
tenzro model stop gemma4-9b --rpc http://127.0.0.1:8545

# Delete local model
tenzro model delete gemma4-9b --yes

# List model service endpoints
tenzro model endpoints --rpc http://127.0.0.1:8545
tenzro model endpoints --format json

# Get specific endpoint
tenzro model endpoint <id> --rpc http://127.0.0.1:8545

RPC methods: tenzro_downloadModel, tenzro_serveModel, tenzro_stopModel, tenzro_listModelEndpoints, tenzro_getModelEndpoint. Both model download and model serve send flat JSON params (not array-wrapped) when using --rpc.

chat - Interactive AI Chat

# Chat with a model (local inference or via RPC)
tenzro chat gemma4-9b

# Chat via network RPC
tenzro chat gemma4-9b --rpc https://rpc.tenzro.network

# Options:
#   <MODEL_ID>           Model ID [required, positional]
#   --max-tokens <N>     Max tokens to generate
#   --temperature <F>    Sampling temperature
#   --rpc <URL>          Use network inference instead of local

# In-chat commands:
#   /exit                Exit the chat session
#   /history             Show session history
#   /load <session_id>   Load a previous session

RPC method: tenzro_chat (when --rpc is provided).

inference - AI Inference

# Request inference
tenzro inference request gemma4-9b "What is the capital of France?" \
  --max-tokens 100 \
  --temperature 0.7 \
  --max-price 0.01 \
  --require-tee \
  --output-file result.json \
  --rpc https://rpc.tenzro.network

RPC method: tenzro_inferenceRequest.

embed-text / segment / detect / transcribe / embed-video - Multi-Modal Inference

Each modality has its own top-level command with catalog, list, and run subcommands. The runtime base64-encodes the local file, dispatches to the matching ONNX runtime over JSON-RPC, and prints the typed result. License-tier gating is enforced centrally on the node — CommercialCustom entries (DINOv3, SAM, Gemma) require --accept-license <id> at download time; NonCommercial entries require --accept-non-commercial. Forecast and image-embedding live as JSON-RPC only (tenzro_forecast, tenzro_imageEmbed); use curl or an SDK.

# Encode text into an embedding vector (Matryoshka truncation supported)
tenzro embed-text run \
  --model embeddinggemma-300m \
  --input "Tenzro is a purpose-built ledger for the AI age." \
  --requested-dim 512 \
  --normalize

# Segment an image. Prompts are normalized [0, 1] coordinates in a JSON file:
#   [{"type":"point","x":0.50,"y":0.50,"is_foreground":true}]
tenzro segment run \
  --model sam2-base \
  --image ./scene.png \
  --prompts prompts.json

# Detect objects with RF-DETR or D-FINE (NMS-free DETR postprocessing)
tenzro detect run \
  --model rfdetr-base \
  --image ./scene.png \
  --score-threshold 0.4

# Transcribe an audio clip (WAV / MP3 / FLAC)
tenzro transcribe run \
  --model whisper-large-v3-turbo \
  --audio ./meeting.wav \
  --language en \
  --timestamps

# Embed a video by mean-pooling a vision encoder across frames
tenzro embed-video run \
  --model siglip2-base \
  --video ./clip.mp4 \
  --normalize

# Catalog and list subcommands per modality
tenzro embed-text catalog
tenzro segment list
tenzro detect catalog
tenzro transcribe list

RPC methods: tenzro_forecast, tenzro_textEmbed, tenzro_imageEmbed / tenzro_imageTextSimilarity, tenzro_segment, tenzro_detect, tenzro_transcribe, tenzro_videoEmbed. Each modality also exposes tenzro_list*Catalog, tenzro_load*Model, and tenzro_unload*Model RPCs for explicit lifecycle control.

identity - Identity Management

# Register human identity
tenzro identity register \
  --name "Alice" \
  --identity-type human \
  --rpc http://127.0.0.1:8545

# Register machine identity
tenzro identity register \
  --name "trading-bot" \
  --identity-type machine \
  --controller did:tenzro:human:550e8400... \
  --rpc http://127.0.0.1:8545

# Resolve DID
tenzro identity resolve did:tenzro:human:550e8400... --rpc http://127.0.0.1:8545

# List identities
tenzro identity list --identity-type machine --detailed

# Export W3C DID document
tenzro identity document did:tenzro:human:550e8400...

# Add credential
tenzro identity add-credential \
  --did did:tenzro:human:550e8400... \
  --credential-type KycCredential \
  --issuer did:tenzro:human:issuer-uuid \
  --rpc http://127.0.0.1:8545

# Add service endpoint
tenzro identity add-service \
  --did did:tenzro:human:550e8400... \
  --service-type WalletService \
  --endpoint https://wallet.tenzro.network/api

RPC methods: tenzro_registerIdentity, tenzro_resolveIdentity, tenzro_listIdentities, tenzro_addCredential, tenzro_addService.

stake - Staking Operations

# Stake TNZO
tenzro stake deposit 1000 \
  --provider-type validator \
  --lock-days 90 \
  --rpc http://127.0.0.1:8545

# Withdraw stake
tenzro stake withdraw 500 --rpc http://127.0.0.1:8545
tenzro stake withdraw 500 --force  # Early withdrawal

# Check staking info
tenzro stake info --address 0x... --detailed

RPC methods: tenzro_stake, tenzro_unstake, tenzro_getVotingPower.

governance - Governance

# List proposals
tenzro governance list --active --detailed --format json

# Create a proposal
tenzro governance propose \
  "Increase validator rewards" \
  "Proposal to increase epoch rewards by 10%" \
  --type parameter \
  --duration-days 7 \
  --deposit 100 \
  --rpc http://127.0.0.1:8545

# Vote on a proposal
tenzro governance vote <proposal_id> yes \
  --reason "Supports network growth" \
  --rpc http://127.0.0.1:8545

RPC methods: tenzro_listProposals, tenzro_createProposal, tenzro_vote, tenzro_getVotingPower.

provider - Provider Management

# Register as provider
tenzro provider register \
  --type model \
  --name "my-provider" \
  --stake 1000 \
  --max-concurrent 10 \
  --rpc http://127.0.0.1:8545

# Check provider status
tenzro provider status --detailed --rpc http://127.0.0.1:8545

# List served models
tenzro provider models --rpc http://127.0.0.1:8545

# List all providers on the network
tenzro provider list --type model --rpc http://127.0.0.1:8545

# Set pricing
tenzro provider pricing set \
  --input-price 0.001 \
  --output-price 0.002 \
  --rpc http://127.0.0.1:8545

# Show current pricing
tenzro provider pricing show --rpc http://127.0.0.1:8545

RPC methods: tenzro_registerProvider, tenzro_providerStats, tenzro_listProviders, tenzro_setProviderPricing, tenzro_getProviderPricing.

payment - Payment Operations

# Create payment challenge
tenzro payment challenge /api/inference/gemma4-9b \
  --amount 1000 \
  --rpc http://127.0.0.1:8545

# Pay a resource (dispatches to MPP or x402)
tenzro payment pay \
  <url> \
  --payer-did did:tenzro:human:550e8400... \
  --wallet my-wallet \
  --protocol mpp \
  --max-amount 1.0 \
  --rpc http://127.0.0.1:8545

# List payment sessions
tenzro payment sessions --rpc http://127.0.0.1:8545

# Get payment receipt
tenzro payment receipt --receipt-id rcpt_xyz789

# Get payment gateway info
tenzro payment info --challenge-id chal_abc123

RPC methods: tenzro_createPaymentChallenge, tenzro_payMpp, tenzro_payX402, tenzro_listPaymentSessions.

agent - AI Agent Management

# Register an agent
tenzro agent register \
  --name "trading-bot" \
  --creator did:tenzro:human:550e8400... \
  --capabilities inference,trading

# List registered agents
tenzro agent list

# Send message to an agent
tenzro agent send \
  --agent-id agent_abc123 \
  --message "Execute trade"

# Spawn a new agent instance
tenzro agent spawn --name "worker-1"

# Run an agent task
tenzro agent run-task --agent-id agent_abc123 --task "Analyze market"

# Create an agent swarm
tenzro agent create-swarm --name "analysis-team" --size 3

# Get swarm status
tenzro agent get-swarm <swarm_id>

# Terminate a swarm
tenzro agent terminate-swarm <swarm_id>

# List agent templates
tenzro agent list-templates

# Get template details
tenzro agent get-template <template_id>

# Spawn from template
tenzro agent spawn-template <template_id>

# Run a template
tenzro agent run-template <template_id> --input "task description"

RPC methods: tenzro_registerAgent, tenzro_sendAgentMessage, tenzro_spawnAgent, tenzro_createSwarm, tenzro_listAgentTemplates.

task - Task Marketplace

# List available tasks
tenzro task list --status open --task-type inference --limit 20

# Post a new task
tenzro task post \
  --title "Translate document" \
  --description "Translate 5000 words from English to French" \
  --task-type inference \
  --max-price 10 \
  --input "Hello" \
  --rpc http://127.0.0.1:8545

# Get task details
tenzro task get <task_id>

# Cancel a task
tenzro task cancel <task_id>

# Submit a quote for a task
tenzro task quote <task_id> --price 5 --eta 3600

# Assign a task to a provider
tenzro task assign <task_id> --provider 0xabc...

# Mark task as complete
tenzro task complete <task_id> --result "path/to/result.json"

RPC methods: tenzro_listTasks, tenzro_postTask, tenzro_getTask, tenzro_cancelTask, tenzro_quoteTask, tenzro_assignTask, tenzro_completeTask.

marketplace - Agent Marketplace

# List agent templates
tenzro marketplace list \
  --template-type inference \
  --free-only \
  --tag trading \
  --limit 20

# Get template details
tenzro marketplace get <template_id>

# Register a new template
tenzro marketplace register \
  --name "DeFi Trading Agent" \
  --description "Automated DeFi trading" \
  --template-type trading \
  --price 10

RPC methods: tenzro_listAgentTemplates, tenzro_getAgentTemplate, tenzro_registerAgentTemplate.

skill - Skills Registry

# List registered skills
tenzro skill list --category defi --limit 20

# Register a new skill
tenzro skill register \
  --name "solana-defi" \
  --description "Solana DeFi operations" \
  --category defi \
  --tags "solana,swap,jupiter"

# Search skills
tenzro skill search "cross-chain bridge"

# Use a skill
tenzro skill use <skill_id> --params '{"action": "swap"}'

# Get skill details
tenzro skill get <skill_id>

RPC methods: tenzro_listSkills, tenzro_registerSkill, tenzro_searchSkills, tenzro_useSkill, tenzro_getSkill.

tool - Tool Registry (MCP Servers)

# List registered tools
tenzro tool list --tool-type mcp --category defi

# Register a new tool
tenzro tool register \
  --name "tenzro-solana-mcp" \
  --description "Solana MCP server" \
  --endpoint /mcp \
  --tool-type mcp \
  --category defi \
  --version "1.0.0" \
  --creator-did did:tenzro:human:550e8400...

# Search tools
tenzro tool search "ethereum mcp"

# Use a tool
tenzro tool use <tool_id> --tool-name "eth_get_balance" --params '{"address": "0x..."}'

# Get tool details
tenzro tool get <tool_id>

RPC methods: tenzro_listTools, tenzro_registerTool, tenzro_searchTools, tenzro_useTool, tenzro_getTool.

token - Token Operations

# Create a new ERC-20 token via factory
tenzro token create \
  --name "My Token" \
  --symbol MTK \
  --decimals 18 \
  --supply 1000000 \
  --creator 0x... \
  --mintable \
  --burnable \
  --rpc http://127.0.0.1:8545

# Get token info by symbol, address, or token ID
tenzro token info --symbol MTK
tenzro token info --address 0xtoken-contract...
tenzro token info --id <token_id>

# List all registered tokens
tenzro token list
tenzro token list --vm evm

# Get TNZO balance across all VMs
tenzro token balance 0xaddress...

# Wrap native TNZO to VM representation (no-op in pointer model)
tenzro token wrap --amount 100 --vm evm

# Cross-VM token transfer
tenzro token transfer \
  --from-vm evm \
  --to-vm svm \
  --token TNZO \
  --amount 50 \
  --recipient solana-pubkey...

RPC methods: tenzro_createToken, tenzro_getToken, tenzro_listTokens, tenzro_getTokenBalance, tenzro_wrapTnzo, tenzro_crossVmTransfer.

contract - Contract Deployment

# Deploy EVM contract
tenzro contract deploy \
  --vm evm \
  --bytecode ./MyContract.bin \
  --deployer 0xabc... \
  --gas-limit 3000000 \
  --rpc http://127.0.0.1:8545

# Deploy with inline bytecode
tenzro contract deploy \
  --vm evm \
  --bytecode 0x608060405234801561001057600080fd5b50...

# Deploy SVM program
tenzro contract deploy --vm svm --bytecode ./program.so

RPC method: tenzro_deployContract.

escrow - Escrow & Payment Channels

Escrow create, release, and refund are consensus-mediated typed transactions (CreateEscrow, ReleaseEscrow, RefundEscrow) hybrid-signed with the payer's classical Ed25519 key and ML-DSA-65 (FIPS 204) post-quantum key, then submitted viatenzro_signAndSendTransaction. Funds are locked in a deterministically-derived vault address by the Native VM; only the original payer can release or refund.

# Create an on-chain escrow (signed CreateEscrow tx, gas: 75,000)
tenzro escrow create \
  --payer 0xabc... \
  --payee 0xdef... \
  --amount 1000000000000000000 \
  --asset TNZO \
  --expires-at 1735689600000 \
  --release timeout \
  --private-key 0x...   # or omit to be prompted

# Release escrowed funds to the payee (signed ReleaseEscrow tx, gas: 60,000)
tenzro escrow release <escrow_id> \
  --payer 0xabc... \
  --proof 0x... \
  --private-key 0x...

# Refund escrowed funds back to the payer (signed RefundEscrow tx, gas: 50,000)
# Requires expiry passed OR release condition is Timeout/Custom.
tenzro escrow refund <escrow_id> \
  --payer 0xabc... \
  --private-key 0x...

# Inspect an escrow record by id (read RPC, no signing)
tenzro escrow get <escrow_id>

# Open micropayment channel
tenzro escrow open-channel \
  --counterparty 0xdef... \
  --deposit 1000

# Close micropayment channel
tenzro escrow close-channel <channel_id>

# Delegate voting power
tenzro escrow delegate \
  --from 0xabc... \
  --to 0xdef... \
  --amount 500

# Settle payment
tenzro escrow settle <settlement_id>

# Get settlement details
tenzro escrow get-settlement <settlement_id>

Release condition kinds accepted by --release: timeout, provider, consumer, both, verifier, custom.

escrow_id is derived deterministically by the VM as SHA-256("tenzro/escrow/id/v1" || payer || nonce_le) and emitted in the receipt log of the CreateEscrow transaction. Read RPCs: tenzro_getEscrow, tenzro_listEscrowsByPayer, tenzro_listEscrowsByPayee. Channels: tenzro_openPaymentChannel, tenzro_closePaymentChannel. Settlement: tenzro_settle, tenzro_getSettlement.

canton - Canton/DAML Integration

# List Canton domains
tenzro canton domains --rpc http://127.0.0.1:8545

# List DAML contracts
tenzro canton contracts --template MyContract

# Submit a DAML command
tenzro canton submit \
  --command-type create \
  --template MyContract \
  --party Alice

RPC methods: tenzro_listCantonDomains, tenzro_listDamlContracts, tenzro_submitDamlCommand.

schedule - Provider Schedule

# Set provider schedule
tenzro schedule set \
  --start 09:00 \
  --end 17:00 \
  --timezone UTC \
  --days mon,tue,wed,thu,fri \
  --rpc http://127.0.0.1:8545

# Show current schedule
tenzro schedule show

# Enable/disable schedule
tenzro schedule enable
tenzro schedule disable

RPC methods: tenzro_setProviderSchedule, tenzro_getProviderSchedule.

ceremony - ZK Trusted Setup

# Initialize a new ceremony
tenzro ceremony init \
  --output ceremony.json \
  --num-g1 1024 \
  --num-g2 1 \
  --description "Tenzro ZK ceremony"

# Contribute to ceremony
tenzro ceremony contribute \
  --input ceremony.json \
  --output ceremony-contributed.json \
  --id "contributor-1" \
  --proof-output proof.json

# Verify contributions
tenzro ceremony verify --input ceremony-contributed.json

# Finalize ceremony
tenzro ceremony finalize --input ceremony-contributed.json

# Check ceremony status
tenzro ceremony status --input ceremony.json

Local-only: uses the tenzro-zk crate directly. No RPC calls.

faucet - Testnet Token Faucet

# Request testnet TNZO (100 TNZO, 24h cooldown)
tenzro faucet 0xYourAddress --rpc https://rpc.tenzro.network

RPC method: tenzro_faucet.

hardware - Hardware Detection

# Detect hardware profile (CPU, GPU, memory, TEE support)
tenzro hardware
tenzro hardware --format json

Local-only: detects hardware via OS commands. No RPC calls.

info - Network Information

# Get network info
tenzro info --rpc https://rpc.tenzro.network

# Output:
# Node Version: 0.1.0
# Chain ID: 1337
# Block Height: 1207
# Peer Count: 25
# Network Role: Validator
# Sync Status: Synced
# Total Supply: 1,000,000,000 TNZO

RPC methods: eth_blockNumber, eth_chainId, net_peerCount, tenzro_nodeInfo, tenzro_totalSupply, tenzro_getFinalizedBlock.

set-username - Username Management

# Set your username (auto-generates DID and wallet if missing)
# Registers on-chain for global uniqueness
tenzro set-username alice --rpc https://rpc.tenzro.network

# Resolve a username to a DID
curl -X POST https://rpc.tenzro.network \
  -d '{"jsonrpc":"2.0","method":"tenzro_resolveUsername","params":[{"username":"alice"}],"id":1}'

Saves locally to ~/.tenzro/config and registers on-chain via tenzro_setUsername RPC. Usernames must be 3-20 chars, lowercase alphanumeric and underscores only.

x402 - Coinbase HTTP-402 Facilitator

Tenzro is an x402 facilitator: clients build the X-PAYMENT header from a 402 Payment Required challenge, and the node verifies and settles via the configured scheme adapter (exact, permit2).

# Enumerate scheme adapters registered with the facilitator
tenzro x402 list-schemes

# Submit an X-PAYMENT payload (already signed by the principal's wallet)
tenzro x402 pay --challenge-file ./challenge.json --payload-file ./payment.json

RPC methods: tenzro_listX402Schemes, tenzro_payX402.

aap - Agent Access Protocol (alias for auth)

AAP layers OAuth 2.1 + DPoP-bound JWTs (RFC 9449) + Rich Authorization Requests (RFC 9396) for agent-issued bearer tokens. tenzro aap and tenzro auth are aliases — both names hit the same RPCs.

# Onboard a delegated agent (works under either name)
tenzro auth onboard-delegated-agent --controller-did <did> --display-name "Bot"
tenzro aap onboard-delegated-agent --controller-did <did> --display-name "Bot"

# Refresh access token
tenzro aap refresh --refresh-token <token>

# Link a wallet for auth
tenzro aap link-wallet --did <did> --wallet <addr>

RPC methods: tenzro_exchangeToken, tenzro_introspectToken, tenzro_oauthDiscovery.

8004 - ERC-8004 Trustless Agents Registry (alias for erc8004)

Trustless Agents Registry per EIP-8004. tenzro 8004 is the canonical short-name alias for tenzro erc8004. agentId = keccak256(utf8(did_string)) matches the native Tenzro identity registry, so the same calldata works against either surface.

# Register an agent
tenzro 8004 register --did <did> --domain agent.example.com

# Submit reputation feedback (peer-to-peer score)
tenzro 8004 submit-feedback --agent-id <id> --score 95 --reason "..."

# Look up an agent record
tenzro 8004 get-agent --agent-id <id>

# Validation request / submission (verifiable agent work)
tenzro 8004 request-validation --agent-id <id> --task <task>
tenzro 8004 submit-validation --validation-id <id> --result <result>

Backed by EVM precompiles 0x101a (identity), 0x101b (reputation), 0x101c (validation).

reputation - Provider Reputation

Per-provider reputation score (0–1000) maintained by ProviderManager. Successful inferences raise the score by +1 (saturating to 1000); failures drop it by 5 (saturating to 0). The asymmetric update rule is deliberate — flaky providers fall out of routing decisions quickly. Durable across node restarts.

# Read the score for a provider address
tenzro reputation get 0xabc...

RPC method: tenzro_getProviderReputation.

approval - Out-of-Scope Approval Flow

When a delegated machine attempts an operation outside its DelegationScope (value cap, daily-spend cap, restricted contract, etc.), the auth engine parks the request as a pending approval keyed to the controller's DID. These commands are the controller's review surface.

# List approvals waiting on this controller DID
tenzro approval list --approver-did <did>

# Inspect a single approval record
tenzro approval get <approval_id>

# Apply a decision. --approver-did is recommended: the node verifies the
# caller matches the record's approver, returning -32001 (Forbidden) on
# mismatch.
tenzro approval decide --approval-id <id> --decision approved --approver-did <did>
tenzro approval decide --approval-id <id> --decision denied

RPC methods: tenzro_listPendingApprovals, tenzro_getApproval, tenzro_decideApproval.

dispute - Channel-Dispute Inspection

Micropayment-channel disputes are first-class records in the settlement engine — durable in RocksDB (CF_CHANNELS, dispute:<id> prefix). These read-only commands inspect dispute lifecycle records; open/respond/resolve transitions happen via on-chain settlement transactions.

# Show the current state of a single dispute by id
tenzro dispute status <dispute_id>

# List every dispute (open or historical) attached to a channel.
# Returns an empty list (not an error) for channels with no disputes.
tenzro dispute list-by-channel --channel-id <channel_id>

RPC methods: tenzro_getDispute, tenzro_listDisputesByChannel.

provenance - Content Provenance (EU AI Act §50(2))

Under EU AI Act Article 50(2), synthetic content must carry a machine-readable origin marker. Tenzro records a C2PA-style ProvenanceManifest per piece of generated content, keyed by SHA-256 content_hash. Validators sign manifests with their Ed25519 block-signing key.

# Fetch the cached manifest for a 32-byte content hash
# Returns -32004 if no manifest is recorded for that hash.
tenzro provenance get 0x<sha256_hex>

RPC method: tenzro_getProvenance. Outputs imitating real subjects use the deepfake assertion tag (per Article 50(4)) instead of the default ai-generated.

inference stream - Streaming Chat with Channel Billing

Stream a single chat completion via tenzro_chatStream, optionally billing the streamed tokens to a micropayment channel. All chat output (REPL, single-shot, streaming) is prefixed with [AI] per EU AI Act §50(1); the literal lives in tenzro_node::eu_ai_disclosure::render_cli_chat_chunk so the workspace can audit the disclosure string in one place.

# Streaming, no channel  falls back to whatever billing default is configured
tenzro inference stream gemma4-9b "summarize this paragraph" --max-tokens 256

# Streaming with channel billing  node bills tokens against the channel id
tenzro inference stream gemma4-9b "summarize this paragraph" --channel <channel_id>

RPC method: tenzro_chatStream. The streaming JSON-RPC method currently returns a single envelope with the full result plus token-usage metadata.

version - Version Information

# Show version
tenzro version
tenzro version --detailed

Output Formats

Text Output (Default)

tenzro wallet balance

Balance: 1000.5 TNZO
Address: 0x742d35Cc6634C0532925a3b844Bc9e7595f...

JSON Output

tenzro wallet balance --format json

{
  "balance": "1000.5",
  "asset": "TNZO",
  "address": "0x742d35Cc6634C0532925a3b844Bc9e7595f...",
  "timestamp": "2026-03-20T12:30:45Z"
}

Configuration

CLI configuration is stored in ~/.tenzro/config.toml:

# ~/.tenzro/config.toml

[rpc]
url = "http://127.0.0.1:8545"
timeout_ms = 30000

[wallet]
default = "my-wallet"
keystore_dir = "~/.tenzro/keystores"

[output]
format = "text"
verbose = false

Environment Variables

# Set RPC URL
export TENZRO_RPC_URL=http://127.0.0.1:8545

# Set default wallet
export TENZRO_WALLET=my-wallet

# Enable verbose logging
export TENZRO_VERBOSE=1

# Set output format
export TENZRO_OUTPUT=json

Examples

Quick Start (Zero Install)

# Join the network with one command
tenzro join --name "Alice" --rpc https://rpc.tenzro.network

# Request testnet TNZO
tenzro faucet 0xYourAddress --rpc https://rpc.tenzro.network

# Chat with a model
tenzro chat gemma4-9b --rpc https://rpc.tenzro.network

Full Workflow

# 1. Create wallet
tenzro wallet create --name alice-wallet

# 2. Register identity
tenzro identity register --name Alice --identity-type human

# 3. Get testnet TNZO
tenzro faucet 0xYourAddress --rpc https://rpc.tenzro.network

# 4. Check balance
tenzro wallet balance

# 5. List available models
tenzro model list

# 6. Chat with a model
tenzro chat gemma4-9b --rpc https://rpc.tenzro.network

Provider Setup

# 1. Download model
tenzro model download gemma4-9b

# 2. Register as provider
tenzro provider register --type model --name "my-provider" --stake 1000

# 3. Set pricing
tenzro provider pricing set --input-price 0.001 --output-price 0.002

# 4. Set availability schedule
tenzro schedule set --start 09:00 --end 17:00 --days mon,tue,wed,thu,fri

# 5. Serve model
tenzro model serve gemma4-9b

# 6. Check status
tenzro provider status --detailed

bridge - Cross-Chain Bridge Operations

# Get a bridge quote (auto-selects best route via LI.FI)
tenzro bridge quote \
  --from-chain ethereum --to-chain arbitrum \
  --token USDC --amount 1000000000

# Execute a cross-chain bridge transfer
tenzro bridge execute \
  --from-chain ethereum --to-chain arbitrum \
  --token USDC --amount 1000000000 \
  --sender 0xsender... --recipient 0xrecipient...

# Check transfer status
tenzro bridge status <TRANSFER_ID>

# List available routes between chains
tenzro bridge routes --from-chain ethereum --to-chain arbitrum

# List registered bridge adapters
tenzro bridge adapters

# Create a deBridge order with post-fulfillment hook
tenzro bridge hook \
  --from-chain ethereum --to-chain arbitrum \
  --token USDC --amount 1000000000 \
  --sender 0xsender... \
  --hook-target 0xcontract... --hook-calldata 0xdata...

nft - NFT Operations (ERC-721/1155)

# Create a new NFT collection
tenzro nft create-collection \
  --name "My Collection" --symbol "MC" \
  --creator 0xcreator... --standard erc721

# Mint an NFT
tenzro nft mint \
  --collection <COLLECTION_ID> \
  --to 0xrecipient... --token-id 1 \
  --uri "ipfs://Qm..."

# Transfer an NFT
tenzro nft transfer \
  --collection <COLLECTION_ID> \
  --from 0xsender... --to 0xrecipient... --token-id 1

# Query NFT owner
tenzro nft owner --collection <COLLECTION_ID> --token-id 1

# Get collection info
tenzro nft info --collection <COLLECTION_ID>

# List all collections
tenzro nft list

# Register cross-VM pointer (Sei V2 model)
tenzro nft register-pointer \
  --collection <COLLECTION_ID> \
  --vm evm --address 0xpointer...

compliance - ERC-3643 Compliance

# Register compliance rules for a token
tenzro compliance register \
  --token <TOKEN_ID> \
  --require-kyc --min-kyc-tier 2 \
  --require-accreditation --max-holders 500

# Check if a transfer is compliant
tenzro compliance check \
  --token <TOKEN_ID> \
  --from 0xsender... --to 0xrecipient... --amount 1000

# Freeze an address
tenzro compliance freeze \
  --token <TOKEN_ID> --address 0x... --reason "AML investigation"

# Add identity claim
tenzro compliance add-claim \
  --address 0x... --topic 1 \
  --issuer did:tenzro:human:... \
  --valid-from 2026-01-01 --valid-to 2027-01-01

# Force-recover tokens for compliance
tenzro compliance recover \
  --token <TOKEN_ID> --from 0x... --to 0x... \
  --amount 1000 --reason "Court order"

crosschain - ERC-7802 Cross-Chain Tokens

# Authorize a bridge for cross-chain mint/burn
tenzro crosschain authorize \
  --bridge 0xbridge... --name "LayerZero" \
  --daily-mint-limit 1000000000000000000000

# Mint tokens from cross-chain transfer
tenzro crosschain mint \
  --bridge 0xbridge... --to 0xrecipient... \
  --amount 1000000000 --sender 0xsource...

# Burn tokens for cross-chain transfer
tenzro crosschain burn \
  --bridge 0xbridge... --from 0xsender... \
  --amount 1000000000 --destination 0xdest...

# List authorized bridges
tenzro crosschain bridges

# Update bridge limits
tenzro crosschain update-limits \
  --bridge 0xbridge... \
  --daily-mint-limit 5000000000000000000000

events - Event Streaming & Webhooks

# Subscribe to real-time events (streams to stdout)
tenzro events subscribe --types all
tenzro events subscribe --types logs --address 0xcontract...
tenzro events subscribe --types newHeads,transfers --format json

# Query historical events
tenzro events history --from-block 1000 --to-block 2000
tenzro events history --types transfers --limit 50
tenzro events history --from-sequence 42000

# Query EVM logs (eth_getLogs compatible)
tenzro events logs --address 0xcontract... --from-block 100
tenzro events logs --topic0 0xddf252ad...

# Register a webhook for event notifications
tenzro events register-webhook \
  --url https://myapp.com/webhook \
  --types transfers,logs \
  --secret my-hmac-secret \
  --confirmed-delivery

# List and manage webhooks
tenzro events list-webhooks
tenzro events delete-webhook <WEBHOOK_ID>

# Show event streaming server info
tenzro events info