Transactions

serve-axon

Publish this hotkey's axon endpoint (ip:port) for a subnet.

View as Markdown

Writes the connection info to chain storage so validators on the subnet know where to reach this miner or validator; it does not start any server — running the actual axon service is up to the caller. Signed by the hotkey, which must be registered on the subnet, and subject to the chain's serving rate limit (re-publishing too soon fails). Use serve_axon_tls if peers should verify a TLS certificate, and reset_axon to stop advertising the endpoint.

SignerPalletWraps
hotkeySubtensorModuleSubtensorModule.serve_axon

Parameters

ParameterTypeRequiredDescription
netuidintegeryesSubnet on which to publish the endpoint.
ipstringyesPublic IPv4 or IPv6 address of the endpoint, in standard dotted or colon notation.
portintegeryesTCP port the endpoint listens on.
protocolintegernoApplication protocol tag stored alongside the endpoint; its meaning is subnet-defined.
versionintegernoVersion number of the serving neuron's software, stored with the endpoint.

Address parameters (--hotkey, --coldkey, --dest, ...) accept a raw ss58 address, an address-book or proxy-book name, or a local wallet/hotkey name.

CLI

Preview with --dry-run (shows fee, effects, and policy result without submitting), then submit:

btcli tx serve-axon \
  --netuid <int> \
  --ip <value> \
  --port <int> --dry-run
btcli tx serve-axon \
  --netuid <int> \
  --ip <value> \
  --port <int> -w my_coldkey

Python

import bittensor as sub
from bittensor.wallet import Wallet

wallet = Wallet(name="my_coldkey", hotkey="my_hotkey")
intent = sub.ServeAxon(netuid=1, ip="...", port=0)

async with sub.Client("finney") as client:
    plan = await client.plan(intent, wallet)   # fee, effects, policy — no submission
    result = await client.execute(intent, wallet)
    if not result.success:
        print(result.error.code, result.error.remediation)

Or build it by op name, as an agent would:

await client.execute_tool("serve_axon", {...}, wallet)