Skip to content

Latest commit

Β 

History

History
128 lines (103 loc) Β· 5.61 KB

File metadata and controls

128 lines (103 loc) Β· 5.61 KB

agcli β€” Rust CLI + SDK for Bittensor

CI

Fast, safe Rust toolkit for the Bittensor network. Wallets, staking, transfers, subnets, weights, metagraph queries, Dynamic TAO, monitoring, and more.

Install

cargo install --git https://github.com/unconst/agcli

Quick Examples

# Check balance
agcli balance --address 5Gx...

# List subnets as JSON
agcli --output json subnet list

# Stake TAO with slippage protection
agcli stake add --amount 10 --netuid 1 --max-slippage 2.0 --password p --yes

# Atomic commit-reveal weights
agcli weights commit-reveal --netuid 1 --weights "0:100,1:200" --wait

# Live subnet monitoring (JSON streaming)
agcli subnet monitor --netuid 97 --json

# Local development β€” zero cost, instant feedback
agcli localnet scaffold

Every command supports --output json|csv, --yes (skip prompts), --batch (hard-error mode), and --dry-run (preview). Full non-interactive operation for AI agents.

Documentation

Resource Description
docs/why-agcli.md Why agcli? Comparison with btcli and the Bittensor Python SDK
docs/llm.txt Agent/LLM reference β€” quick-ref card + full command reference
docs/commands/ Per-command deep dives β€” on-chain behavior, pallet refs, storage keys, events, errors
docs/tutorials/ Step-by-step guides: getting started, staking, validator, subnet builder, agent automation
docs/faq.md Beyond agcli β€” miners, Yuma math, picking subnets, validator↔miner protocols, subnet codebases
docs/hyperparameters.md Complete reference for all ~32 sudo-settable subnet hyperparameters β€” what each does, defaults, interactions
docs/philosophy.md Subnet design philosophy, incentive patterns, trust model

SDK Usage

[dependencies]
agcli = { git = "https://github.com/unconst/agcli", default-features = false, features = ["sdk-only"] }
use agcli::{Client, Wallet, Balance};

#[tokio::main]
async fn main() -> anyhow::Result<()> {
    let client = Client::connect("wss://entrypoint-finney.opentensor.ai:443").await?;
    let balance = client.get_balance_ss58("5Gx...").await?;
    let subnets = client.get_all_subnets().await?;
    let metagraph = client.get_metagraph(1.into()).await?;
    Ok(())
}

Architecture

agcli/
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ main.rs              # CLI entry point
β”‚   β”œβ”€β”€ lib.rs               # SDK re-exports (Client, Wallet, Balance, Config)
β”‚   β”œβ”€β”€ config.rs            # Persistent config (~/.agcli/config.toml)
β”‚   β”œβ”€β”€ error.rs             # Error classification + exit codes
β”‚   β”œβ”€β”€ events.rs            # Real-time block/event subscription
β”‚   β”œβ”€β”€ live.rs              # Live polling with delta tracking
β”‚   β”œβ”€β”€ chain/
β”‚   β”‚   β”œβ”€β”€ mod.rs           # Client: connection, retry, 40+ queries + extrinsics
β”‚   β”‚   β”œβ”€β”€ queries.rs       # Chain query methods
β”‚   β”‚   β”œβ”€β”€ extrinsics.rs    # Transaction builders
β”‚   β”‚   └── rpc_types.rs     # Type conversions
β”‚   β”œβ”€β”€ cli/
β”‚   β”‚   β”œβ”€β”€ mod.rs           # Clap parser: 20 command groups, 90+ subcommands
β”‚   β”‚   β”œβ”€β”€ commands.rs      # Main dispatcher
β”‚   β”‚   β”œβ”€β”€ helpers.rs       # Shared CLI helpers
β”‚   β”‚   β”œβ”€β”€ subnet_cmds.rs   # Subnet operations
β”‚   β”‚   β”œβ”€β”€ view_cmds.rs     # View/query handlers
β”‚   β”‚   β”œβ”€β”€ stake_cmds.rs    # Staking operations
β”‚   β”‚   β”œβ”€β”€ weights_cmds.rs  # Weight setting + commit-reveal
β”‚   β”‚   β”œβ”€β”€ wallet_cmds.rs   # Wallet management
β”‚   β”‚   β”œβ”€β”€ block_cmds.rs    # Block explorer
β”‚   β”‚   β”œβ”€β”€ network_cmds.rs  # Network queries + commitment commands
β”‚   β”‚   β”œβ”€β”€ localnet_cmds.rs # Local chain lifecycle + scaffold
β”‚   β”‚   β”œβ”€β”€ admin_cmds.rs    # AdminUtils sudo hyperparam setters
β”‚   β”‚   └── system_cmds.rs   # Config, proxy, delegate, identity
β”‚   β”œβ”€β”€ localnet.rs           # SDK: Docker chain start/stop/status/reset/logs
β”‚   β”œβ”€β”€ admin.rs              # SDK: 13 AdminUtils functions + raw_admin_call
β”‚   β”œβ”€β”€ scaffold.rs           # SDK: Declarative test environment orchestration
β”‚   β”œβ”€β”€ wallet/              # Key management (Python wallet compat)
β”‚   β”œβ”€β”€ types/               # Balance, NeuronInfo, SubnetInfo, etc.
β”‚   β”œβ”€β”€ queries/             # Cache layer (Moka + disk)
β”‚   β”œβ”€β”€ extrinsics/          # Weight hashing, MEV shield
β”‚   └── utils/               # Explain, format, POW solver
β”œβ”€β”€ docs/
β”‚   β”œβ”€β”€ llm.txt              # Agent-optimized reference
β”‚   β”œβ”€β”€ commands/             # 24 per-command docs
β”‚   └── tutorials/            # 5 step-by-step guides
β”œβ”€β”€ examples/
β”‚   └── scaffold.toml         # Example scaffold configuration
β”œβ”€β”€ tests/                    # 7 integration test files
β”œβ”€β”€ build.rs                  # Compile-time chain metadata fetch
└── Cargo.toml

Building

Requires Rust 1.75+ and network access (fetches chain metadata at build time):

git clone https://github.com/unconst/agcli && cd agcli && cargo build --release

License

MIT