Introduction
htcli is the official command-line interface for the Hypertensor ecosystem — manage wallets, operate subnets and nodes, stake, vote, and query the chain without leaving your terminal.
Hypertensor is a Substrate-based network for coordinating decentralized AI: subnets of compute and services, the operators and validators that run them, and the staking, consensus, and governance that secure it. htcli wraps every core transaction and query layer of that chain in a single, scriptable namespace.
What you can do
- Wallets — create and manage encrypted coldkey/hotkey pairs locally.
- Subnets — register networks, publish models, and set on-chain weights.
- Nodes — launch, daemonize, and monitor miner and validator nodes.
- Stake — add, remove, and delegate stake; inspect yields.
- Governance — review proposals and cast consensus votes.
- Chain — read blocks, balances, and runtime state directly from a peer.
New here? Head to Installation, then run through the Quickstart to go from a fresh machine to a registered validator in a few commands.
Design principles
Every command works the same way: predictable subcommands, consistent flags, and machine-readable output. Pass --format json to any command for scripting, or --format table (the default) for humans. No middleware, no hosted API — htcli talks to the chain directly.
Installation
Install the stable client from PyPI. htcli runs on macOS, Linux, and Windows.
Requirements
- Python 3.10+ and
pip - A network connection to a Hypertensor RPC endpoint
Install with pip
$ pip install htcli Collecting htcli Installing collected packages: requests, htcli Successfully installed htcli-1.0.0
Verify the install
$ htcli --version htcli v1.0.0
Upgrade
$ pip install --upgrade htcli
Prefer isolation? Install into a virtual environment (python -m venv .venv && source .venv/bin/activate) before running pip install htcli.
Quickstart
From a fresh install to an active validator in five commands.
1. Initialize configuration
Run the wizard once to write ~/.htcli/config.yaml with your endpoint and defaults.
$ htcli config init ? Blockchain endpoint wss://rpc.htcli.io/ ? Default output format table Configuration initialized.
2. Create keys
$ htcli wallet generate-coldkey --name master-key $ htcli wallet generate-hotkey --coldkey master-key --hotkey master-hot Coldkey "master-key" and hotkey "master-hot" created.
3. Register a validator, then a node
Register a validator first; it returns a validator_id that your subnet nodes register under.
$ htcli validator register --hotkey master-hot --delegate-rate 10 --coldkey master-key Validator registered :: validator_id 11 $ htcli node register --validator-id 11 --subnet-id 8 --hotkey node-hot --stake 100 --coldkey master-key [SUCCESS] Node registered on subnet 8 under validator 11.
That's it — you're on the network. Read the command reference for everything else, or browse Concepts to understand how the pieces fit together.
Configuration
htcli reads a YAML config and accepts global flags that override it per-command.
The config file
By default htcli stores configuration at ~/.htcli/config.yaml. Generate it with the wizard:
endpoint: wss://rpc.htcli.io/ format: table wallet_dir: ~/.htcli/wallets
Global options
These flags work on every command and take precedence over the config file:
| Flag | Description |
|---|---|
-c, --config PATH | Path to an alternate configuration file. |
-e, --endpoint TEXT | Blockchain RPC endpoint (overrides config). |
-f, --format TEXT | Output format: table, json, or csv. |
-v, --verbose | Verbose logging. |
--help | Show help for any command or subcommand. |
Every flag also has an environment-variable form, e.g. HTCLI_ENDPOINT and HTCLI_FORMAT — handy for CI and daemon setups.
htcli config
Initialize, view, and validate htcli configuration — the chain endpoint, output format, and wallet paths.
Subcommands
| Command | Description |
|---|---|
config init | Run the interactive wizard and write the config file. |
config show | Print the resolved configuration. |
config path | Print the configuration file path. |
config edit | Open the configuration file in your editor. |
config validate | Check the configuration for errors. |
config set | Set a configuration value (--key, --value). |
config get | Read a configuration value. |
Initialize configuration
$ htcli config init Configuration written to ~/.htcli/config.yaml
See Configuration for the file format and global flags.
htcli wallet
Generate, import, rotate, and inspect cryptographic coldkey and hotkey pairs locally, with encrypted storage in ~/.htcli/wallets/.
Subcommands
| Command | Description |
|---|---|
wallet generate | Generate a new key pair. |
wallet generate-coldkey | Generate a new coldkey. |
wallet generate-hotkey | Generate a new hotkey owned by a coldkey. |
wallet restore-coldkey | Restore a coldkey from a mnemonic. |
wallet restore-hotkey | Restore a hotkey from a mnemonic. |
wallet list | List stored keys. |
wallet delete | Delete a stored key. |
wallet balance | Show a wallet's on-chain balance. |
wallet transfer | Transfer balance between accounts. |
wallet update-coldkey | Update a stored coldkey reference. |
wallet update-hotkey | Update a stored hotkey reference. |
wallet rotate-coldkey | Securely rotate a coldkey. |
wallet rotate-hotkey | Securely rotate a hotkey. |
wallet describe | Show addresses and metadata for a wallet. |
wallet check-hotkey-owner | Show which coldkey owns a hotkey. |
wallet upgrade | Upgrade the wallet key-storage format. |
wallet identity | Set on-chain wallet identity metadata. |
Generate a coldkey
$ htcli wallet generate-coldkey --name master-key Generating ECDSA keypair… Address 0xBbCdFE56402109104dcA757B0B644035Ac3Fd321 Coldkey "master-key" created in ~/.htcli/wallets.
Options
| Flag | Description |
|---|---|
--name TEXT | Key name (required). |
--password / --no-password | Encrypt the key with a passphrase (or skip it). |
--copy-mnemonic | Copy the recovery mnemonic to the clipboard. |
htcli subnet
Register and activate subnets, and inspect subnet information and network-wide statistics.
Subcommands
| Command | Description |
|---|---|
subnet list | List subnets on the network (add --mine for yours). |
subnet cost | Show the cost to register a subnet. |
subnet register | Register a new subnet. |
subnet check-activation | Check a subnet's activation status. |
subnet activate | Activate a registered subnet. |
subnet pause | Pause a subnet. |
subnet unpause | Resume a paused subnet. |
subnet update | Update subnet parameters. |
subnet transfer | Transfer subnet ownership. |
subnet accept | Accept a subnet ownership transfer. |
subnet remove | Remove a subnet. |
subnet set-emergency-validator-set | Set the emergency validator set. |
subnet clear-emergency-validator-set | Clear the emergency validator set. |
subnet add-bootnode-access | Grant bootnode access. |
subnet remove-bootnode-access | Revoke bootnode access. |
subnet add-bootnode | Add a bootnode. |
subnet remove-bootnode | Remove a bootnode. |
subnet info | Show subnet details. |
subnet nodes | List a subnet's nodes. |
subnet bootnodes | List a subnet's bootnodes. |
List your subnets
$ htcli subnet list --mine NETUID NAME STAKE EMISSION 8 coordination 1.284 kTAO 12.4% 19 inference 0.642 kTAO 6.1% 2 subnets active for hotkey master-key.
htcli node
Register, list, inspect, and monitor nodes across the subnets you operate.
Subcommands
| Command | Description |
|---|---|
node register | Register a node on a subnet (requires a validator id). |
node list | List nodes on a subnet. |
node all | List all nodes across subnets. |
node status | Show heartbeat, sync state, and compute scores. |
node info | Show details for a node. |
node overwatch-commits | Show a node's overwatch commit records. |
node overwatch-reveals | Show a node's overwatch reveal records. |
node remove | Remove a node from a subnet. |
node update | Update node parameters. |
Register a node under a validator
Nodes register under a validator, so pass the validator_id returned by htcli validator register (see validator).
$ htcli node register --validator-id 11 --subnet-id 8 --hotkey node-hot --stake 100 --coldkey master-key [SUCCESS] Node registered on subnet 8 under validator 11.
Then check it with htcli node status --subnet-id 8 --node-id <id>, watch it live with htcli overwatch, or filter listings with --mine.
htcli stake
Add, remove, and delegate stake; inspect compound APY yields and delegator parameters.
Subcommands
| Command | Description |
|---|---|
stake add | Add stake to a subnet node. |
stake remove | Remove stake from a node. |
stake claim | Claim unbonded stake. |
stake list | List your stake positions. |
stake coldkey | Show a coldkey's stake summary. |
stake delegate-add | Add delegated stake to a subnet. |
stake delegate-remove | Remove delegated subnet stake. |
stake delegate-swap | Swap delegated subnet stake. |
stake delegate-transfer | Transfer delegated subnet stake. |
stake delegate-donate | Donate delegated subnet stake. |
stake delegate | Show subnet delegated-stake info. |
stake list-delegate | List delegated-stake positions. |
stake node-delegate-add | Add delegated stake to a node. |
stake node-delegate-remove | Remove delegated node stake. |
stake node-delegate-swap | Swap delegated node stake. |
stake node-delegate-transfer | Transfer delegated node stake. |
stake node-delegate-donate | Donate delegated node stake. |
stake node-delegate | Show node delegated-stake info. |
stake swap-node-to-subnet | Move stake from a node to a subnet. |
stake swap-subnet-to-node | Move stake from a subnet to a node. |
stake swap-update | Update a pending stake swap. |
stake verify-proof | Verify a stake proof. |
stake verify | Verify stake state. |
Add stake
$ htcli stake add --subnet-id 1 --node-id 1 --amount 100 Submitting stake extrinsic… Staked 100 TENSOR on subnet 1, node 1.
htcli chain
Query the chain directly — network statistics, account info, balances, and blocks.
Subcommands
| Command | Description |
|---|---|
chain info | Show network info and global statistics. |
chain stats | Show detailed chain stats. |
chain cost | Show on-chain operation costs. |
chain block | Read a block. |
chain tx | Look up a transaction by hash. |
chain account | Look up account information and balance. |
Network info
$ htcli chain info Block 1284812 Validators 256 :: spec_version 142 Chain head synced.
Add --format json or --format csv to any query for scripting.
htcli consensus
Participate in consensus — submit proposals and attestations for the subnets you validate.
Subcommands
| Command | Description |
|---|---|
consensus propose | Submit a consensus proposal for a subnet. |
consensus attest | Submit an attestation for the current epoch. |
Submit a proposal
$ htcli consensus propose --wallet master-key --subnet 1 --data 0x123 Proposal submitted for subnet 1.
htcli governance
Set on-chain network parameters that govern how Hypertensor operates.
Subcommands
| Command | Description |
|---|---|
governance set-param | Set an on-chain network parameter (--wallet, --param, --value). |
Set a parameter
$ htcli governance set-param --wallet master-key --param max_subnets --value 64 Parameter update submitted.
htcli overwatch
Register and operate overwatch nodes that monitor network health and consensus.
Subcommands
| Command | Description |
|---|---|
overwatch check-qualification | Check whether a coldkey qualifies for overwatch. |
overwatch register | Register an overwatch node. |
overwatch remove | Remove an overwatch node. |
overwatch list | List overwatch nodes. |
overwatch info | Show overwatch node details. |
overwatch set-peer-id | Set the overwatch node peer id. |
overwatch add-stake | Add stake to an overwatch node. |
overwatch remove-stake | Remove stake from an overwatch node. |
Register an overwatch node
$ htcli overwatch register --coldkey master-key --hotkey master-hot --stake 1000 Overwatch node registered.
htcli validator
Register validators and manage their delegation settings, keys, and on-chain identity.
Subcommands
| Command | Description |
|---|---|
validator register | Register a validator and set its delegation. |
validator update-delegate-rate | Update a validator's delegate rate. |
validator update-delegate-account | Set or clear the delegate account and its rate. |
validator update-hotkey | Change a validator's hotkey. |
validator update-coldkey | Change a validator's coldkey. |
validator update-identity | Set a validator's on-chain identity metadata. |
Register a validator
$ htcli validator register --hotkey master-hot --delegate-rate 10 --coldkey master-key Validator registered :: validator_id 11
Register a validator first — the returned validator_id is what subnet nodes register under (htcli node register --validator-id <id> …, see node).
Key switches
| Command | Switches |
|---|---|
register | --hotkey, --delegate-rate, --delegate-account, --delegate-account-rate, --coldkey |
update-delegate-rate | --validator-id, --delegate-rate, --coldkey |
update-delegate-account | --validator-id, --delegate-account, --delegate-account-rate, --clear, --coldkey |
update-hotkey | --validator-id, --hotkey, --coldkey |
update-coldkey | --validator-id, --new-coldkey, --coldkey |
update-identity | --validator-id, --name, --url, --image, --discord, --x, --telegram, --github, --hugging-face, --description, --misc, --clear, --coldkey |
Hypertensor Overview
Hypertensor is a Substrate-based blockchain that coordinates decentralized AI through subnets, operators, staking, consensus, and governance.
Rather than a single monolithic model or a centralized API, Hypertensor organizes compute into subnets — independent networks each focused on a task such as coordination or inference. Operators run nodes that join subnets; stake secures participation and aligns incentives; an on-chain consensus mechanism scores work each epoch; and governance lets the network evolve.
htcli is the operator's interface to all of it. The pages in this section explain each concept; the Command Reference shows the commands that act on them.
Subnets
A subnet is an independent network of compute and services registered on Hypertensor, identified by a numeric netuid.
Each subnet defines its own validation parameters and emission share. Operators register models and set on-chain weights to express which work is valuable. Manage subnets with htcli subnet.
Nodes
A node is the process an operator runs to participate in a subnet — mining work or validating it.
Nodes broadcast a heartbeat, sync chain state, and accrue compute scores each epoch. Launch and monitor them with htcli node and htcli overwatch.
Staking & Delegation
Stake is the economic security behind participation; delegation lets holders back validators they trust.
Operators stake to their own hotkeys to register and validate; holders can delegate stake to validators and share in rewards. Compound yields accrue per epoch. Manage positions with htcli stake.
Consensus & Epochs
Work on Hypertensor is scored over fixed intervals called epochs, and rewards are distributed according to consensus.
At each epoch boundary the network reconciles validator weights and compute scores, then emits rewards proportional to measured contribution. Read live chain and epoch state with htcli chain.