{
  "schema": "https://reax.dev/miner.json",
  "schema_version": 1,
  "name": "REAX miner onboarding",
  "updated": "2026-10-05",
  "human_guide": "https://reax.dev/mine/",
  "status": {
    "launch_status": "launching_soon",
    "live": false,
    "network": "Bittensor mainnet (finney) at launch",
    "netuid": null,
    "netuid_note": "Not registered yet. The netuid is announced at launch; until then use the placeholder <NETUID>.",
    "release": "1.1.0rc1 (pre-release)",
    "code_public": false,
    "code_note": "Repository and container images are private until launch.",
    "practice": "Every wallet and registration step can be rehearsed on a local chain with test TAO; see steps[].practice and https://reax.dev/mine/#practice."
  },
  "agent_rules": [
    "Never ask for, read, store or transmit a recovery phrase, seed, private key or coldkey file.",
    "A human approves every payment (registration burn, transfers) in their own wallet.",
    "The GPU server holds only the hotkey file; never place a coldkey on it.",
    "Do not register on mainnet or spend TAO before the subnet is announced live and the human has confirmed the current burn cost.",
    "Make no statement about earnings or token value."
  ],
  "pools": [
    {
      "id": "s1-fast",
      "model": "Plumb-4B (System1 s1-fast)",
      "weights": {
        "repo": "crh225/plumb-4b",
        "revision": "55de037801a8a9b9de3db5c0e16cef86210c2186",
        "gated": false,
        "size_gb": 9
      },
      "licence": "Apache-2.0",
      "manifest_id": "ff6e01b983d48024",
      "commitment": "reax-s1/1:s1-fast:ff6e01b983d48024",
      "gpu": {
        "min_vram_gb": 24,
        "count": 1,
        "vendor": "NVIDIA",
        "measured": [
          "RTX 4090",
          "RTX PRO 6000 Blackwell",
          "H100 80GB"
        ],
        "unmeasured_note": "Other cards: run scripts/calibration_s1 before serving."
      },
      "sidecar_port": 8101,
      "throughput_decisions_per_s": {
        "RTX 4090": 30.4,
        "RTX PRO 6000 Blackwell": 55.6,
        "H100 80GB": 60.5
      },
      "planned_at_launch": true
    },
    {
      "id": "s1-pro",
      "model": "Surogate Rune 26B-A4B v3 (System1 s1-pro)",
      "weights": {
        "repo": "surogate/rune-26b-a4b-GGUF",
        "revision": "c6b360d47895bb77bdf3805a13ee5a5557ab1921",
        "gated": true,
        "gate_note": "Accept the Hugging Face gate with your own account; never mirror the weights.",
        "size_gb": 52
      },
      "licence": "Apache-2.0",
      "manifest_id": "5b11440bf57b5434",
      "commitment": "reax-s1/1:s1-pro:5b11440bf57b5434",
      "gpu": {
        "min_vram_gb": 80,
        "max_vram_gb": 96,
        "count": 1,
        "vendor": "NVIDIA",
        "measured": [
          "RTX PRO 6000 (96 GB)",
          "H100 80GB"
        ]
      },
      "sidecar_port": 8102,
      "planned_at_launch": false
    }
  ],
  "requirements": {
    "os": "Linux x86_64 (server)",
    "nvidia_driver": "supports CUDA 13 (R580 or newer)",
    "software": [
      "Docker Engine with compose plugin",
      "NVIDIA Container Toolkit",
      "Python 3.10+ for btcli (bittensor==11.1.0)",
      "huggingface_hub CLI (hf)"
    ],
    "cpu_cores": 4,
    "ram_gb": 32,
    "disk_gb": {
      "s1-fast": 20,
      "s1-pro": 80
    },
    "network": {
      "public_ip": true,
      "open_tcp_ports": [
        8091
      ],
      "never_publish_ports": [
        8101,
        8102,
        8000
      ],
      "ntp_required": true,
      "max_request_age_s": 10
    },
    "hosting_note": "Use a VM or bare-metal server where you control Docker and can open a port; container-only GPU rentals do not work."
  },
  "images": {
    "miner": "ghcr.io/fstandhartinger/reax-miner",
    "s1_fast_runtime": "ghcr.io/fstandhartinger/reax-s1-fast-runtime",
    "s1_pro_runtime": "ghcr.io/fstandhartinger/reax-s1-pro-runtime",
    "tag": null,
    "tag_note": "Private until launch; the release tag is announced at launch. The compose file can also build the images from the repository."
  },
  "repository": {
    "url": "https://github.com/fstandhartinger/reax-subnet",
    "public": false,
    "compose_file": "deploy/docker-compose.s1.yml",
    "env_template": "deploy/miner.env.example",
    "docs": [
      "docs/MINER.md",
      "docs/CONFIG.md",
      "docs/CALIBRATION.md"
    ]
  },
  "env": [
    {
      "name": "REAX_NETWORK",
      "required": true,
      "value": "finney",
      "note": "finney, test, or a ws:// endpoint"
    },
    {
      "name": "REAX_NETUID",
      "required": true,
      "value": "<NETUID>",
      "note": "announced at launch"
    },
    {
      "name": "REAX_WALLET_NAME",
      "required": true,
      "example": "reax"
    },
    {
      "name": "REAX_WALLET_HOTKEY",
      "required": true,
      "example": "miner1"
    },
    {
      "name": "REAX_EXTERNAL_IP",
      "required": true,
      "example": "203.0.113.7",
      "note": "public IP address, not a host name"
    },
    {
      "name": "REAX_EXTERNAL_PORT",
      "required": false,
      "default": 8091
    },
    {
      "name": "REAX_MINER_PORT",
      "required": false,
      "default": 8091
    },
    {
      "name": "REAX_MECHANISM",
      "set_by": "compose",
      "value": "s1"
    },
    {
      "name": "REAX_MODEL",
      "set_by": "compose",
      "value": "s1-fast"
    },
    {
      "name": "REAX_S1_FAST_RUNTIME_URL",
      "set_by": "compose",
      "value": "http://127.0.0.1:8101"
    },
    {
      "name": "REAX_RUNTIME_TOKEN_FILE",
      "set_by": "compose",
      "value": "/run/reax-runtime-token"
    },
    {
      "name": "REAX_PUBLISH_COMMITMENT",
      "set_by": "compose",
      "value": "1"
    },
    {
      "name": "REAX_UID / REAX_GID",
      "where": "shell when running docker compose",
      "value": "$(id -u) / $(id -g)"
    },
    {
      "name": "REAX_S1_FAST_WEIGHTS",
      "where": "shell when running docker compose",
      "example": "/srv/reax/plumb-4b"
    }
  ],
  "steps": [
    {
      "id": "server",
      "title": "Prepare the GPU server",
      "where": "gpu_server",
      "commands": [
        "nvidia-smi",
        "docker --version && docker compose version",
        "docker run --rm --gpus all nvidia/cuda:13.0.0-base-ubuntu24.04 nvidia-smi",
        "timedatectl | grep -i synchronized",
        "python3 -m venv ~/btcli-venv && ~/btcli-venv/bin/pip install \"bittensor==11.1.0\" \"typer<0.27.2\"",
        "alias btcli=~/btcli-venv/bin/btcli"
      ],
      "verify": "nvidia-smi shows CUDA Version 13.x or newer; the docker run prints the GPU; clock synchronized: yes; TCP 8091 open inbound. btcli wallet list runs without error (typer<0.27.2 pinned)."
    },
    {
      "id": "wallet",
      "title": "Create a coldkey wallet",
      "where": "human_laptop",
      "human_only": true,
      "options": [
        {
          "id": "talisman",
          "for": "beginners",
          "summary": "Install Talisman from talisman.xyz in Chrome, set a password, create a Polkadot account, write the recovery phrase on paper, copy the Bittensor-format address (starts with 5).",
          "guide": "https://reax.dev/wallet/#talisman"
        },
        {
          "id": "btcli",
          "for": "experienced",
          "summary": "btcli wallet create -w reax -H miner1 on a trusted machine that is not the GPU server.",
          "guide": "https://reax.dev/wallet/#btcli"
        }
      ]
    },
    {
      "id": "fund",
      "title": "Get TAO for the registration burn",
      "where": "human_laptop",
      "human_only": true,
      "summary": "Buy TAO on an exchange that serves your country; withdraw on the Bittensor/TAO network (never wrapped TAO) to the coldkey address; send a small test amount first.",
      "guide": "https://reax.dev/wallet/#buy"
    },
    {
      "id": "hotkey",
      "title": "Create the hotkey on the server",
      "where": "gpu_server",
      "commands": [
        "btcli wallet new-hotkey -w reax -H miner1",
        "btcli wallet list",
        "chmod 600 ~/.bittensor/wallets/reax/hotkeys/miner1"
      ],
      "verify": "btcli wallet list shows reax/miner1 with an address starting with 5; the hotkey mnemonic was written down by the human."
    },
    {
      "id": "register",
      "title": "Register the hotkey (pays the burn)",
      "where": "human laptop browser (reax.dev/register with Talisman) or a trusted machine with a btcli coldkey",
      "human_approval": true,
      "commands": [
        "btcli subnets burn-cost <NETUID>",
        "btcli tx burned-register --netuid <NETUID> -w reax -H miner1   # only with a local btcli coldkey; not with --signer extension"
      ],
      "verify": "btcli query uid --netuid <NETUID> --hotkey reax/miner1 prints a number.",
      "notes": [
        "The burn is not refundable.",
        "btcli 11.1.0 refuses --signer extension for burned-register (MEV shield required); use reax.dev/register for browser-wallet signing."
      ],
      "browser_wallet": {
        "url": "https://reax.dev/register/",
        "summary": "Connect Talisman, paste the hotkey address, check the fee, confirm, click Register hotkey, approve SubtensorModule.register_limit(netuid, hotkey, limit_price = shown price + 10 %) in Talisman.",
        "available": "mainnet at launch; practice mode against a local chain today",
        "tested": "2026-10-05, Talisman 3.10.1, local subtensor"
      }
    },
    {
      "id": "run",
      "title": "Run the s1-fast miner",
      "where": "gpu_server",
      "available": "at launch",
      "commands": [
        "git clone https://github.com/fstandhartinger/reax-subnet.git && cd reax-subnet",
        "python3 -m venv ~/hf-venv && ~/hf-venv/bin/pip install -U \"huggingface_hub[cli]\"",
        "~/hf-venv/bin/hf download crh225/plumb-4b --revision 55de037801a8a9b9de3db5c0e16cef86210c2186 --local-dir /srv/reax/plumb-4b",
        "mkdir -p deploy/secrets && openssl rand -hex 32 > deploy/secrets/runtime-token && chmod 0600 deploy/secrets/runtime-token",
        "cp deploy/miner.env.example deploy/miner.env  # set REAX_NETWORK, REAX_NETUID, REAX_WALLET_NAME, REAX_WALLET_HOTKEY, REAX_EXTERNAL_IP; remove REAX_MECHANISM/REAX_MODEL/REAX_DEVICE lines",
        "REAX_UID=$(id -u) REAX_GID=$(id -g) REAX_S1_FAST_WEIGHTS=/srv/reax/plumb-4b docker compose -f deploy/docker-compose.s1.yml up -d --build"
      ],
      "verify": "docker compose -f deploy/docker-compose.s1.yml ps shows both services running; the sidecar becomes healthy within about 10 minutes."
    },
    {
      "id": "verify",
      "title": "Check health and scoring",
      "where": "gpu_server",
      "commands": [
        "curl -s http://127.0.0.1:8091/health",
        "docker compose -f deploy/docker-compose.s1.yml logs -f miner",
        "btcli query metagraph --netuid <NETUID> --json | python3 -c 'import json,sys; d=json.load(sys.stdin); i=d[\"hotkeys\"].index(sys.argv[1]); print(\"uid\", i, \"incentive\", d[\"incentives\"][i])' <HOTKEY_ADDRESS>"
      ],
      "expect": {
        "health": {
          "protocol": "reax-s1/1",
          "version": "1.1.0rc1",
          "model": "s1-fast",
          "manifest_id": "ff6e01b983d48024"
        },
        "log_lines": [
          "published commitment reax-s1/1:s1-fast:ff6e01b983d48024",
          "miner uid <UID> listening on 0.0.0.0:8091",
          "metagraph block <N>: <n> neurons, <v> accepted validators; served ok=<k> ..."
        ],
        "served_ok_increases_within_minutes": 15
      }
    }
  ],
  "scoring": {
    "round_interval_s": 120,
    "items_per_round": 8,
    "verified_items": {
      "s1-fast": 8,
      "s1-pro": 3
    },
    "pass_threshold_mean_logit_distance": 0.2,
    "strike_threshold_mean": 0.5,
    "strike_threshold_item": 2.0,
    "round_score": "0.8 + 0.2 * speed when passed, 0 when failed, moving average reset to 0 on a strike",
    "latency_bounds_s": {
      "s1-fast": [
        0.5,
        8
      ],
      "s1-pro": [
        1,
        12
      ]
    },
    "ramp": "moving average of a perfect miner: about 0.34 after 4 rounds, 0.64 after 10, 0.93 after about 30 rounds (1 hour)",
    "missed_round": 0,
    "details": "https://reax.dev/verification/"
  },
  "economics": {
    "registration": "one-time burn, price floats with demand; read with btcli subnets burn-cost <NETUID>; not refundable",
    "rewards": "subnet alpha staked on the miner hotkey; amount depends on validator weights, number of miners and subnet settings",
    "outlook": "miner pay is expected to decrease over time (part of the miner emission directed to the subnet owner or recycled, depending on the chain; many admitted miners)",
    "api_relay": "allowed by the rules; not blocked",
    "promises": "none: no earnings, cost-coverage or token-value promise"
  },
  "troubleshooting": "https://reax.dev/miner-faq/#troubleshooting",
  "links": {
    "guide": "https://reax.dev/mine/",
    "wallet": "https://reax.dev/wallet/",
    "faq": "https://reax.dev/miner-faq/",
    "llms": "https://reax.dev/llms.txt",
    "llms_full": "https://reax.dev/llms-full.txt",
    "project": "https://reax.co/",
    "register": "https://reax.dev/register/"
  }
}
