How to Start Mining
This is the practical path from an empty machine to a running miner: install the client, create a wallet, choose a Neuronet, register on chain, start serving work, and confirm it is being verified. Every step below has a command you actually run. For the mechanism behind the work, read Mining in AETRON and Proof of Intelligence.
The reference client is aetron-miner. It supervises a background daemon and an execution runner, and it provisions the runner's PyTorch environment itself through aetron-miner env install, so there is no Docker to run and no Python environment to assemble by hand. The client is closed source, but the protocol is not: a custom client written against the public protocol documentation is a full participant.
Before You Start
You need three things to mine:
- Hardware that fits a task. AETRON verifies work across NVIDIA, AMD, Apple Silicon, and CPU, so you are not tied to one GPU brand. What matters is that your machine clears the Neuronet's minimum Pulse score and can run the task's canonical model at its declared precision. See Heterogeneous Mining.
- A small amount of AET. Registration burns a fee. The base miner registration cost in the runtime is 0.1 AET. The fee is recycled into the emission pool rather than held as a deposit, so treat it as a one time cost, not a refundable stake.
- A wallet you control. Your hotkey signs the work you submit and receives emission, so keep its keys backed up. See Wallets and Keys.
Step 1: Install the Client
Install the binary for your platform, then confirm it runs:
aetron-miner --help
Platform packages, checksums, and build requirements are on the Installation page. Run the binary with no arguments in a terminal and it opens an interactive TUI instead of printing help. Everything the TUI does is also available as a subcommand, which is what this guide uses.
Then build the runner's compute environment, which is where PyTorch and the rest of the ML stack come from:
aetron-miner env install
aetron-miner env status
The profile is picked from your hardware and the versions are pinned, so there is nothing to choose here. env status should report a green self-test before you go further.
Step 2: Create a Configuration
The setup wizard writes ~/.aetron-miner/config.toml:
aetron-miner init
It asks for the Neuronet id you intend to join, the path to your model weights, an optional GPU usage limit, a cache directory and size cap, and which network to connect to. You can rerun init later or edit the file directly. The full field reference is on the Configuration page.
Step 3: Create a Wallet
Generate a new hotkey keystore, or import an existing seed phrase:
aetron-miner wallet generate --name miner-hotkey
# or, to reuse an existing account:
aetron-miner wallet import-seed --name miner-hotkey
aetron-miner wallet info
wallet info prints the SS58 address and whether the keystore is locked. Fund that address with enough AET to cover the registration fee and transaction fees, then unlock it so the daemon can sign:
aetron-miner wallet unlock
The unlocked copy lives in the daemon's memory and is dropped when the daemon stops, so you unlock again after a restart. Your coldkey stays in your own wallet software and is never given to the miner.
Step 4: Choose a Neuronet
Browse the on chain registry and inspect candidates:
aetron-miner neuronets list
aetron-miner neuronets show 3
The list shows each Neuronet's tasks, privacy mode, economics, and whether your measured Pulse score clears the task's minimum. Three things decide whether the work pays off:
- Match the task to your hardware. Running below the declared canonical settings means your results will not verify, so pick a task your machine can serve at full precision.
- Look for real demand and capacity. Work beyond a Neuronet's staked capacity pays nothing, so a well staked Neuronet with real traffic beats a quiet one. See Staking.
- Read the access rules. Public Neuronets let you join on your own once you qualify. A private Neuronet running in Confidential (TEE) mode admits miners only by Owner invitation. See Neuronet Configuration.
Step 5: Fetch the Model
The task declares a canonical model, and your results are checked against other miners running exactly that model. Download it into the local cache with the on chain hash as an integrity gate:
aetron-miner models download --from https://your-mirror/models/<hash> --model-hash <hash>
aetron-miner models list
aetron-miner models verify <hash-prefix> --full
With --model-hash set, the manifest's Merkle root must match the on chain value or the download is rejected, which is what stops a poisoned mirror from handing you the wrong weights. verify --full re hashes every file and is worth running after a disk problem.
Step 6: Register On Chain
Registration needs the daemon running, since the daemon holds the key and submits the extrinsic:
aetron-miner daemon start
aetron-miner neuronets register 3 0
The arguments are the Neuronet id and the task id inside it, which defaults to 0. Registration burns AET (burned_register, call 10) and, when bond enforcement is on, reserves collateral on top. There is no free path and nothing to choose between.
The burn price is an EMA that doubles under a burst of registrations and decays back toward the 0.1 AET base over time, so registering in a quiet moment costs less. There are no UID slots and no cap on miners per Neuronet, so joining never evicts anyone. On success the daemon writes the Neuronet and task ids into your config.
If your coldkey lives in a separate wallet, do not put its seed on the mining host. neuronets register-prepare prints the parameters for the extrinsic, you sign it from your cold wallet in Polkadot.js or Talisman, and the daemon supplies the proof that it controls the hotkey:
aetron-miner neuronets register-prepare 3 0 --coldkey 5Dt...
Step 7: Start Mining
One command starts the daemon and the engine event loop:
aetron-miner start
Confirm it is alive and working:
aetron-miner status
aetron-miner logs
status reports the daemon PID and uptime, the network, the detected GPU and memory, your hardware tier and backend, and the number of jobs completed. A jobs counter that climbs means requests are reaching you. aetron-miner engine status prints the event loop snapshot on its own, and logs tails ~/.aetron-miner/daemon.log.
To pause without losing your registration, or to shut down cleanly (both wait for the current job to finish):
aetron-miner engine pause
aetron-miner engine resume
aetron-miner stop
What Is Actually Running
Once the engine is up, your machine has two jobs, and both feed your rewards.
As an executor, it serves requests and records a compact validation artifact next to each answer: the key internal states of the computation, the seed, and the model identity. Artifacts are batched into a Merkle tree, and only roots go on chain.
As a verifier, it replays a sample of other miners' work when the protocol assigns it. Replay is partial and cheap, and the comparison runs either bit exactly within one hardware class or within a calibrated tolerance across architectures. The protocol reduces reward in proportion to assigned verifications a miner skipped, so verification duty is part of earning rather than an extra.
Pulse sits underneath both. It is a periodic memory hard challenge proving you have real hardware rather than a machine that only forwards requests, and it decides which tasks you qualify for at all.
Keeping Your Rewards Full
The penalty ladder is graded, and most of it is recoverable:
- Missing assigned verification or going offline reduces rewards and, if it drags on, leads to a temporary ban.
- Producing work that fails verification, or falsely accusing an honest miner, leads to a temporary ban first and a permanent ban on a repeat.
- Reputation falls with failed verifications and missed duties, and that directly reduces what you earn. Some penalties fade with time, while fraud flags are permanent.
A temporary ban keeps your identity and membership and lifts on its own, so recovering from downtime does not push you out for good. Watch your replay pass rate and uptime, not only the rewards number, since those are what protect the rewards.
Running More Than One
Nothing limits you to a single Neuronet, and spreading across several reduces exposure to one Neuronet's traffic drying up. Each has its own task and canonical settings, so make sure your machine can serve every one you join. Splitting capacity means less of it for each, so add Neuronets when you have headroom rather than by stretching one machine thin.
Where to Go Next
- Installation: platform packages, checksums, and build requirements.
- CLI Reference: every subcommand and flag.
- Configuration: every field in
config.toml. - Troubleshooting: registration failures, Pulse timeouts, model cache problems.
- Peer to Peer: how requests reach your miner.