The official command-line interface for the PYRAX blockchain
Manage wallets, deploy smart contracts, operate nodes, and interact with the PYRAX network — all from your terminal.
- Overview
- Installation
- First-Time Setup
- Global Flags
- Commands
- Environment Variables
- Output Formats
- Configuration File
- Examples
- Contributing
- License
inferno is the unified CLI for the PYRAX blockchain. It covers the full developer and operator lifecycle:
- Wallet operations — create, import, send, and derive HD wallets
- Node management — init, start, stop, reset, and monitor a
pyrax-nodeprocess - Smart contracts — scaffold, compile (EVM & WASM), deploy, call, and inspect contracts
- Staking & governance — delegate, unbond, vote on proposals, execute governance actions
- ZK-Rollup (L2) — query batches, proofs, balances, deposits, and withdrawals
- Multi-sig — create and manage M-of-N multisig accounts locally
- Genesis — generate genesis blocks for new networks
Download the latest release for your platform from the releases page and place the binary somewhere on your PATH.
# Linux / macOS
chmod +x inferno
sudo mv inferno /usr/local/bin/
# Windows — copy inferno.exe to a directory in %PATH%Requirements: Rust 1.75+ (stable), Git
git clone https://github.com/PYRAX-LLC/pyrax-cli.git
cd pyrax-cli
cargo build --release
# Binary is at target/release/inferno (inferno.exe on Windows)Run these two commands after installing inferno:
# 1. Create the config file and data directories
inferno init
# 2. Pre-download compilers (solc for EVM, wasm32 target for WASM)
inferno setupinferno setup downloads the Solidity compiler and installs the wasm32-unknown-unknown Rust target so that inferno contract compile works instantly without any extra dependencies. You only need to run it once.
inferno setup --solc 0.8.28,0.8.25 # install multiple solc versions at once
inferno setup --skip-wasm # only install solc
inferno setup --skip-solc # only install the wasm32 targetData stored by inferno:
~/.pyrax/
config.toml — main configuration file
wallets/ — AES-256-GCM encrypted wallet keystores
multisig/ — local multisig account configs
solc/<version>/ — cached Solidity compiler binaries
node/ — node data directory (if running a node locally)
These flags work with every command:
| Flag | Environment variable | Default | Description |
|---|---|---|---|
--rpc-url <URL> |
INFERNO_RPC_URL |
from config.toml |
JSON-RPC endpoint |
--network <NAME> |
INFERNO_NETWORK |
from config.toml |
Network (devnet / testnet / mainnet) |
--output <fmt> |
— | table |
Output format — table, json, or plain |
--no-color |
— | false |
Disable ANSI colour output |
--verbose |
— | false |
Print raw RPC requests and response timings |
CLI flags take highest precedence, overriding environment variables and config.toml.
Create the config file and all data directories. Safe to re-run.
inferno init
inferno init --force # overwrite existing config with defaultsPre-install compilers and build tools in one command. Run once after inferno init.
inferno setup # solc 0.8.28 + wasm32-unknown-unknown
inferno setup --solc 0.8.28,0.8.25 # install multiple solc versions
inferno setup --skip-solc # wasm32 target only
inferno setup --skip-wasm # solc only| Component | Location | Required for |
|---|---|---|
solc binary |
~/.pyrax/solc/<version>/solc[.exe] |
inferno contract compile --vm evm |
wasm32-unknown-unknown target |
Rust toolchain via rustup |
inferno contract compile --vm wasm |
If you skip inferno setup, these components are downloaded automatically on first use.
Print CLI version, build commit, Rust version, and active network configuration.
inferno infoSelf-update inferno to the latest release from GitHub.
inferno update # download and replace the current binary
inferno update --check # print the latest available version, do not installRead and write the CLI configuration at ~/.pyrax/config.toml.
inferno config show # print all config values
inferno config get rpc_url # print a single value
inferno config set rpc_url http://127.0.0.1:8545 # update a value
inferno config set network devnet
inferno config set active_wallet my-wallet
# Generate a shell tab-completion script
inferno config generate-shell-completions bash >> ~/.bashrc
inferno config generate-shell-completions zsh >> ~/.zshrc
inferno config generate-shell-completions fish >> ~/.config/fish/completions/inferno.fishLow-level cryptographic key utilities.
# Generate a new Ed25519 keypair and print the key material
inferno key generate
inferno key generate --output-file ./node-identity.json
# Extract the P2P peer ID from a node identity key file
inferno key extract-peer --key-file ./node-identity.json
# Sign arbitrary hex-encoded data with a wallet's private key
inferno key sign --message 0xdeadbeef00 --wallet my-wallet
# Verify a message signature
inferno key verify \
--message 0xdeadbeef00 \
--signature 0xabc123... \
--pubkey 0xpub456...Create and manage wallets. All private keys are stored encrypted with AES-256-GCM under ~/.pyrax/wallets/.
# Create a new wallet — generates a fresh BIP-39 mnemonic
inferno wallet create
inferno wallet create --name trading --network mainnet
# Import from an existing BIP-39 mnemonic
# The mnemonic is prompted securely; never pass it as a plain-text argument
inferno wallet import
inferno wallet import --name cold-storage
# List all saved wallets
inferno wallet list
# Show balance for a wallet or a specific address
inferno wallet balance --wallet my-wallet
inferno wallet balance --address 0x1234abcd...
# Show UTXOs
inferno wallet utxos --wallet my-wallet
# Send PRX
inferno wallet send --to 0xrecipient... --amount 10.5 --wallet my-wallet
inferno wallet send --to 0xrecipient... --amount 10.5 --memo "rent" --wallet my-wallet
inferno wallet send --to 0xrecipient... --amount 10.5 --dry-run # sign but do not broadcast
# Derive multiple HD addresses from a mnemonic
inferno wallet derive --count 10Account-level operations that interact with the network.
# Request devnet/testnet tokens from the faucet
inferno account fund --address 0x1234... --amount 1000
# Look up all on-chain info for an address (balance, nonce, type, code hash)
inferno account lookup 0x1234...
# Rotate the on-chain signing key for a wallet
inferno account rotate-key --wallet my-walletFull lifecycle management for a local pyrax-node process, plus RPC queries and validator operations.
# Generate node config and P2P identity keypair
inferno node init
inferno node init --network devnet --data-dir ~/.pyrax/node --rpc-port 8545 --p2p-port 30303
# Start the node as a background process
inferno node start
inferno node start --mine --coinbase 0xmyaddress... --threads 4
# Run in the foreground (useful with systemd or Docker)
inferno node start --foreground
# Stop / restart
inferno node stop
inferno node restart
inferno node restart --mine --coinbase 0xmyaddress...
# View recent log output
inferno node logs
inferno node logs --lines 200
inferno node logs -f # follow (like tail -f)
# Wipe all chain data (config and node identity key are preserved)
inferno node reset --confirm
# Start an all-in-one local devnet (single validator)
inferno node run-localnet
inferno node run-localnet --rpc-port 8545 --with-faucet
# Bootstrap chain state from a remote snapshot
inferno node bootstrap-db --url https://snapshots.pyrax.org/devnet-latest.tar.gzinferno node status # block height, version, chain ID
inferno node health # node liveness check
inferno node sync # sync progress and estimated ETA
inferno node peers # connected peer list
inferno node check-connectivity # test P2P reachability
inferno node show-epoch-info # current epoch and checkpoint
inferno node show-validator-set # all registered validators
inferno node show-validator-set --active-only # active validators only
inferno node show-validator-config 0xval...
inferno node show-validator-stake 0xval...
inferno node get-stake-pool 0xval...
inferno node get-performance 0xval...
inferno node analyze-validator-performance --sort uptime
inferno node analyze-validator-performance --active-only --sort stake# Register as a new validator
inferno node initialize-validator \
--moniker "my-node" --commission 5 --stake 100000 --wallet validator-wallet
# Join / leave the active set
inferno node join-validator-set --wallet validator-wallet
inferno node leave-validator-set --wallet validator-wallet
# Rotate consensus key
inferno node update-consensus-key \
--new-key 0xnewpub... --wallet validator-wallet
# Update P2P network addresses
inferno node update-validator-network-addresses \
--p2p-addr /ip4/1.2.3.4/tcp/30303 --wallet validator-walletDelegate, unbond, and withdraw staked PRX.
# Read — no wallet required
inferno stake status 0xaddress... # your staking position
inferno stake rewards 0xaddress... # pending rewards and estimated APR
inferno stake delegations 0xaddress... # list of active delegations
inferno stake unbonding 0xaddress... # tokens in the unbonding queue
inferno stake state # global stats: total staked, network APR
# Write — require --wallet
inferno stake delegate --to 0xvalidator... --amount 1000 --wallet my-wallet
inferno stake unbond --from 0xvalidator... --amount 500 --wallet my-wallet
inferno stake withdraw --from 0xvalidator... --wallet my-walletSubmit proposals, vote, execute, and delegate governance power.
# Browse proposals
inferno governance list-proposals
inferno governance list-proposals --status active # active | passed | rejected | pending
inferno governance show-proposal 42
# Submit a new proposal
inferno governance propose \
--type parameter_change \
--title "Increase block gas limit" \
--description "Raise the per-block gas limit from 30M to 50M to support larger contracts." \
--wallet my-wallet
# Vote on a proposal
# vote values: yes | no | abstain | veto
# conviction multipliers: x1 (default) | x2 | x3 | x4 | x5 | x6
inferno governance vote --proposal 42 --vote yes --wallet my-wallet
inferno governance vote --proposal 42 --vote yes --conviction x2 --wallet my-wallet
# Execute a passed proposal
inferno governance execute --proposal 42 --wallet my-wallet
# Delegate voting power to another address
inferno governance delegate \
--to 0xdelegate... --amount 500 --conviction x1 --wallet my-walletSmart contract development from scaffold to deployment.
inferno contract new --name mytoken # EVM project (default)
inferno contract new --name mytoken --vm evm # explicit EVM
inferno contract new --name mymodule --vm wasmGenerated EVM project layout:
mytoken/
contracts/
Mytoken.sol — sample ERC-20 contract
test/
Mytoken.t.sol — sample Foundry test
foundry.toml — compiler config (solc version, optimizer)
README.md
Generated WASM project layout:
mymodule/
src/
lib.rs — sample contract entry point
Cargo.toml
README.md
# Auto-detect VM from project structure
inferno contract compile
# EVM — downloads solc on first use if not already cached
inferno contract compile --vm evm
inferno contract compile --vm evm --input contracts/ --out-dir artifacts/
# WASM — auto-installs wasm32-unknown-unknown target via rustup if needed
inferno contract compile --vm wasmThe Solidity compiler version is read from foundry.toml (solc = "0.8.28"). If no foundry.toml is present, version 0.8.28 is used. The binary is cached at ~/.pyrax/solc/<version>/ — no system solc install is required.
# Run unit tests
inferno contract test
inferno contract test --vm wasm
# Decode an ABI file and print human-readable function + event signatures
# with their 4-byte selectors
inferno contract abi --file artifacts/MyToken.abi
# Deploy a compiled contract
inferno contract deploy \
--bytecode "$(cat artifacts/MyToken.bin)" \
--wallet my-wallet --gas-limit 500000
# Call a state-changing function
inferno contract call \
--address 0xdeployed... \
--fn "transfer(address,uint256)" \
--args 0xrecipient... 1000 \
--wallet my-wallet
# Call a read-only (view/pure) function — no wallet or gas needed
inferno contract view \
--address 0xdeployed... \
--fn "balanceOf(address)" \
--args 0xquery...
# Look up the VM type of any deployed contract
inferno contract type 0xdeployed...
# List on-chain contract counts by VM type
inferno contract listGenerate genesis block configuration for bootstrapping a new network.
inferno genesis generate
inferno genesis generate --network devnet --validators 4Query block data from the chain.
inferno block get --number 12345
inferno block get --hash 0xabcdef...
inferno block list # 10 most recent blocks
inferno block list --count 50Query, simulate, and analyze transactions.
# Fetch a transaction by hash
inferno tx get --txid 0xabcdef...
# Show pending mempool transactions
inferno tx pending
# Dry-run a transaction via eth_call (no state changes)
inferno tx simulate \
--from 0xsender... \
--to 0xcontract... \
--data 0xabcdef... \
--value 0
# Estimate the gas cost of a transaction
inferno tx estimate-gas \
--from 0xsender... \
--to 0xcontract... \
--data 0xabcdef...On-chain address information.
inferno address info 0x1234abcd...
# Prints: balance, nonce, account type (EOA / EVM contract / WASM contract), code hashMining statistics across all TriStream DAG streams.
inferno mining info
# Prints: current hashrate, difficulty, block time, and per-stream statsTriStream DAG layer information.
inferno stream info <stream-id>ZK-Rollup (Layer 2) queries and submissions.
# Sequencer status
inferno rollup status
# Batch queries
inferno rollup batch --number 100
inferno rollup batch --hash 0xabc...
# Transaction queries
inferno rollup tx --txid 0xabc...
inferno rollup receipt --txid 0xabc...
# ZK proofs
inferno rollup prove --batch 100 # fetch the STARK proof for a batch
inferno rollup verify --proof 0xproof... # verify a STARK proof locally
# L2 balance
inferno rollup balance --address 0x1234...
# Bridge status
inferno rollup deposit-status --hash 0xdeposit...
inferno rollup withdrawal-status --hash 0xwithdrawal...
# Submit a raw L2 transaction to the sequencer
inferno rollup submit --data 0xrawtx... --wallet my-walletLocal M-of-N multi-signature account management. Configs are stored as JSON files under ~/.pyrax/multisig/ — no network required for create, show, and list.
# Create a 2-of-3 multisig config
inferno multisig create \
--owners "0xalice...,0xbob...,0xcharlie..." \
--threshold 2 \
--name team-treasury
# List all saved multisig configs
inferno multisig list
# Inspect a config
inferno multisig show --name team-treasury
# Propose a multisig transaction (requires node multisig RPC)
inferno multisig propose \
--multisig team-treasury \
--to 0xrecipient... \
--amount 500 \
--wallet my-wallet
# Approve or reject a pending proposal
inferno multisig vote \
--multisig team-treasury \
--proposal-id abc123 \
--approve true \
--wallet my-wallet
# Execute an approved proposal
inferno multisig execute \
--multisig team-treasury \
--proposal-id abc123 \
--wallet my-wallet| Variable | Description |
|---|---|
INFERNO_RPC_URL |
JSON-RPC endpoint — overrides rpc_url in config.toml |
INFERNO_NETWORK |
Active network — overrides network in config.toml |
Every command supports three output formats via --output:
inferno wallet list --output table # default — formatted ASCII table
inferno wallet list --output json # machine-readable JSON (pipe into jq)
inferno wallet list --output plain # whitespace-separated, suitable for awk/grep~/.pyrax/config.toml is created by inferno init. Example:
network = "devnet"
rpc_url = "http://127.0.0.1:8545"
active_wallet = "my-wallet"Precedence order (highest to lowest):
CLI flag > Environment variable > config.toml > built-in default
inferno init
inferno setup
inferno node run-localnet --with-faucet
inferno wallet create --name dev
inferno account fund --wallet dev --amount 10000
inferno wallet send --to 0xrecipient... --amount 100 --wallet devinferno contract new --name mytoken --vm evm
cd mytoken
inferno contract compile --vm evm
inferno contract deploy \
--bytecode "$(cat out/Mytoken.bin)" \
--wallet dev
inferno contract call \
--address 0xdeployed... \
--fn "mint(address,uint256)" \
--args 0xdev... 1000000 \
--wallet dev
inferno contract view \
--address 0xdeployed... \
--fn "totalSupply()"inferno node init --network mainnet --data-dir ~/.pyrax/node
inferno node initialize-validator \
--moniker "my-validator" \
--commission 5 \
--stake 100000 \
--wallet validator-wallet
inferno node start --mine --coinbase 0xmyaddress...
inferno node join-validator-set --wallet validator-wallet
inferno node show-validator-set --active-only- Fork the repository and create a feature branch off
devnet - Make your changes and run
cargo test— all tests must pass - Open a pull request against
devnet
MIT — see LICENSE.