> ## Documentation Index
> Fetch the complete documentation index at: https://docs.droyd.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# CLI: Bittensor Wallets

> Create or link a local Bittensor wallet, prove ownership, and register when a competition requires it.

Bittensor wallets remain local. Droyd uses a signed ownership proof to link the
public wallet identity; it never receives the recovery phrase, private key
files, or raw wallet password.

## Check the required tooling

New wallet creation and subnet registration require the official `btcli`
runtime. Start with the read-only readiness check:

```sh theme={null}
droyd doctor bittensor --json
```

When `ok` is false, run the non-null `recommended_action.command`, then rerun
doctor. Continue only when `status` is `ready`. A fresh installation normally
recommends `droyd setup bittensor --managed --json`.

The managed runtime is private to Droyd. It does not replace an existing
`btcli`, alter your Python environments, or add a Bittensor command to `PATH`.
Pass `--btcli <command>` only when you intentionally want to use a compatible
external installation. Pass `--path <path>` only for a non-default wallet
root.

## Create or import a wallet

Create a local wallet after `btcli` is available:

```sh theme={null}
droyd wallets create --chain bittensor --name research-cold --hotkey default --json
```

Creation opens a local browser backup ceremony. Save the recovery phrases and
generated password securely, then confirm in the browser. Do not share them
with Droyd or an agent.

To link an existing wallet, point at its wallet folder. If it is encrypted,
provide the password through an environment variable or standard input.

```sh theme={null}
export DROYD_WALLET_PASSWORD='<wallet password>'
droyd wallets import \
  --folderpath <wallet-folder> \
  --wallet-password-env DROYD_WALLET_PASSWORD \
  --json
unset DROYD_WALLET_PASSWORD
```

When the folder has multiple hotkeys, add `--hotkey <name>`.

## Bind the approved wallet

Pass the approved wallet ID to init:

```sh theme={null}
droyd init --competition <competition-slug> \
  --wallet-id <wallet-id> --json
```

Create/import remains account-level and does not create
`droyd.workflow.toml`. Init preserves an existing binding on resume and handles
wallet choice before any local or remote mutation. Never create or edit the
wallet block manually.

## Check and complete registration

Competition requirements determine whether registration is necessary. Check
the requirement, current status, and current registration cost before acting:

```sh theme={null}
droyd competitions requirements <competition-slug> --json
droyd competitions registration-status <competition-slug> --json
droyd competitions registration-cost <competition-slug> --json
```

Register only after reviewing the cost and competition requirements:

```sh theme={null}
droyd competitions register <competition-slug>
```

For non-interactive use, add `--yes --json` and use
`--wallet-password-env <name>` or `--wallet-password-stdin`. `--json` requires
`--yes` for registration so third-party terminal output cannot corrupt the JSON
response. A shell or agent session without a TTY must also use `--yes` and an
explicit password source; `btcli` cannot prompt in that context.

## Competition credentials

Some Bittensor competitions require a credential that is bound to the
registered wallet. Save it without exposing its secret:

```sh theme={null}
export OPENROUTER_MANAGEMENT_KEY='<your key>'
droyd competitions configure-credentials <competition-slug> \
  --from-env OPENROUTER_MANAGEMENT_KEY --json
unset OPENROUTER_MANAGEMENT_KEY
```

`droyd competitions setup-openrouter-management` is a deprecated alias; use
`configure-credentials` instead.

`wallets create --chain bittensor` accepts `--name`, `--hotkey`, `--path`, and
`--btcli`. Do not recommend `--unsafe-dev`; it exists only for local smoke
tests. `wallets import` is Bittensor-only and requires `--folderpath`. It
accepts `--wallet-password-env-var` and its alias `--wallet-password-env`, or
`--wallet-password-stdin`. `competitions register` defaults to the workspace
wallet when available and performs a local signed status check after invoking
`btcli`. `droyd setup bittensor` defaults to `--managed` unless an explicit
`--btcli` is supplied. Managed setup needs `uv`, downloads the CLI-pinned
Bittensor toolchain into Droyd-owned application data, and does not modify
`PATH` or another Bittensor installation.
