axiom-cli 0.1.13

TruthLinked command-line interface for accounts, cells, validators, governance, MCP, and SDK workflows.
# Axiom CLI

Command-line interface for [TruthLinked](https://truthlinked.org) — a post-quantum L1 blockchain with the Axiom VM, Accord oracle, and ML-DSA-65 identity.

Covers accounts, transfers, staking, governance, cells, tokens, NFTs, MCP agents, name registry, URL oracle, and SDK workflows.

## Install

```bash
cargo install axiom-cli
```

Or build from source:

```bash
git clone https://github.com/truth-linked/truthlinked
cargo build --release -p axiom-cli
# binary: target/release/axiom
```

## Configuration

```bash
# Set default RPC
axiom config --set-rpc https://testnet.truthlinked.org

# Set default keyfile
axiom config --set-keyfile ~/.truthlinked/default.keys

# Show current config
axiom config
```

Global flags (apply to every command):

| Flag | Description |
|------|-------------|
| `--rpc <url>` | RPC endpoint |
| `--network <local\|testnet\|mainnet>` | Network preset |
| `--json` / `-j` | Machine-readable JSON output |
| `--yes` / `-y` | Skip confirmation prompts |
| `--timeout <secs>` | RPC timeout (default: 30) |
| `--retries <n>` | RPC retry count (default: 2) |

Environment variables:
- `TRUTHLINKED_RPC=<url>` — overrides `--rpc`
- `TLKD_FAUCET_URL=<url>` — overrides faucet endpoint

## Keys

```bash
# Generate new keypair + BIP-39 mnemonic backup
axiom account-create
axiom account-create --output ~/.truthlinked/mykey.keys --encrypt

# Restore from mnemonic
axiom import-mnemonic

# Derive account ID from keyfile
axiom account-id --from ~/.truthlinked/default.keys

# Show key details
axiom key-info --from ~/.truthlinked/default.keys

# Rotate account key
axiom rotate-key --from <keyfile> --new-pubkey <hex>
```

## Chain Queries

```bash
axiom chain-info
axiom network-info
axiom token-info
axiom validators
axiom mempool
axiom status --from <keyfile>
axiom balance <account_id>
axiom balance-by-pubkey <pubkey_hex>
axiom tx <tx_hash>
axiom resolve <name.tl>
```

## Transfers

```bash
# Send TLKD by account ID, pubkey, or .tl name
axiom send native --from <keyfile> <recipient> <amount>
axiom send native --from <keyfile> alice.tl 100

# Batch transfer
axiom batch-transfer --from <keyfile> --recipients <id1,id2,id3> --amounts <10,20,30>
```

## Faucet (Testnet)

```bash
axiom faucet
axiom faucet --amount 5000
```

- **Limit:** 12,000 TLKD per claim
- **Cooldown:** 72 hours per address
- **Endpoint:** `https://faucet.truthlinked.org`

## Staking

```bash
# Register validator and bond in one step
axiom validator-setup --from <keyfile> --amount <tlkd>

# Individual steps
axiom bond --from <keyfile> --amount <tlkd>
axiom stake --from <keyfile> --amount <tlkd>       # alias for bond
axiom unbond --from <keyfile> --amount <tlkd>
axiom withdraw --from <keyfile>
axiom unjail --from <keyfile>

# Time-locked staking
axiom staked-tlkd-lock --from <keyfile> --amount <tlkd> --duration <days>
axiom staked-tlkd-extend --from <keyfile> --lock-id <id> --duration <days>
axiom staked-tlkd-unlock --from <keyfile> --lock-id <id>

# Delegation
axiom delegate-add --from <keyfile> --delegate <account_id>
axiom delegate-remove --from <keyfile> --delegate <account_id>
axiom stake-for --from <keyfile> --validator <account_id> --amount <tlkd>
axiom unstake-for --from <keyfile> --validator <account_id> --amount <tlkd>
axiom withdraw-for --from <keyfile> --validator <account_id>
axiom unjail-for --from <keyfile> --validator <account_id>
```

## Compute Escrow

```bash
axiom deposit-compute --from <keyfile> --amount <tlkd>
axiom withdraw-compute --from <keyfile> --amount <tlkd>
```

## Cells (Smart Contracts)

Cells are TruthLinked's programmable units — compiled to Axiom bytecode, deployed on-chain.

```bash
# Deploy a compiled cell
axiom deploy-cell --from <keyfile> --bytecode ./counter.axiom --manifest ./counter.manifest.json

# Deploy a token cell
axiom deploy-token --from <keyfile> --bytecode ./token.axiom --manifest ./token.manifest.json

# Call a cell
axiom call-cell --from <keyfile> --cell <cell_id> --calldata <hex>

# Composable call chain
axiom call-chain --from <keyfile> --cells <id1,id2> --calldata <hex>

# Upgrade
axiom upgrade-cell --from <keyfile> --cell <cell_id> --bytecode ./v2.axiom

# Lifecycle
axiom accept-ownership --from <keyfile> --cell <cell_id>
axiom make-immutable --from <keyfile> --cell <cell_id>
axiom close-cell --from <keyfile> --cell <cell_id>
axiom upgrade-visibility --from <keyfile> --cell <cell_id> --tier <public|private>

# Inspect
axiom cell-info <cell_id>
```

## SDK Workflow (`.cell` Language)

```bash
# New project
axiom sdk-new my-cell
cd my-cell

# Build
axiom sdk-build

# Deploy
axiom sdk-deploy --from <keyfile>
```

Manual build steps:

```bash
axiom build --source ./my_cell.cell --output ./my_cell.axiom
axiom manifest-init --bytecode ./my_cell.axiom
axiom manifest-verify --bytecode ./my_cell.axiom --manifest ./my_cell.manifest.json
axiom manifest-hash --manifest ./my_cell.manifest.json
axiom deploy-cell --from <keyfile> --bytecode ./my_cell.axiom --manifest ./my_cell.manifest.json
```

## NFTs

```bash
axiom nft mint --from <keyfile> --name <name> --metadata-uri <uri>
axiom nft send --from <keyfile> --nft <nft_id> --to <recipient>
axiom nft burn --from <keyfile> --nft <nft_id>
axiom nft approve --from <keyfile> --nft <nft_id> --operator <account_id>
```

## Name Registry (`.tl` Names)

```bash
axiom propose-name --from <keyfile> --name alice --cell <cell_id>
axiom vote-name --from <keyfile> --proposal <id> --approve
axiom renew-name --from <keyfile> --name alice
axiom transfer-name --from <keyfile> --name alice --to <account_id>
axiom resolve alice.tl
```

## URL Oracle (Accord)

```bash
# Propose a URL pattern for on-chain HTTP access
axiom propose-url --from <keyfile> --pattern "https://api.example.com/*"
axiom vote-url --from <keyfile> --proposal <id> --approve
axiom report-malicious-url --from <keyfile> --url <approved_url>
```

## Treasury Governance

```bash
axiom treasury-propose-spend --from <keyfile> --recipient <id> --amount <tlkd> --memo "reason"
axiom treasury-vote-spend --from <keyfile> --proposal <id> --approve
axiom treasury-execute-spend --from <keyfile> --proposal <id>
axiom treasury-proposal-info <proposal_id>
```

## Cell Governance (Validators)

```bash
axiom propose-cell-upgrade --from <keyfile> --cell <id> --bytecode ./v2.axiom
axiom propose-cell-ownership-transfer --from <keyfile> --cell <id> --to <account_id>
axiom propose-cell-make-immutable --from <keyfile> --cell <id>
axiom vote-cell-proposal --from <keyfile> --proposal <id> --approve
axiom execute-cell-proposal --from <keyfile> --proposal <id>
axiom list-cell-proposals
axiom propose-token-authority --from <keyfile> --cell <id> --new-authority <account_id>
axiom vote-token-authority --from <keyfile> --proposal <id> --approve
```

## MCP Agents

```bash
axiom mcp register-tool --from <keyfile> --name <name> --schema <path>
axiom mcp register-agent --from <keyfile> --policy <path>
axiom mcp tool-call --from <keyfile> --tool <tool_id> --args <json>
```

## Validator Bootstrap

```bash
# Generate genesis snippet
axiom validator-init --from <keyfile> --allocation 100000
```

---

**Network:** https://testnet.truthlinked.org  
**Explorer:** https://explorer.truthlinked.org  
**Faucet:** https://faucet.truthlinked.org  
**Repository:** https://github.com/truth-linked/truthlinked  
**Version:** 0.1.13