igneum/packaging/hive
igneum-labs df6598f41a HiveOS: rigs mine only until a Linux prover ships; IDENTITIES=auto by VRAM
README: a second paragraph under the title says the package carries igneumd, igneum-miner and
the two workers and no prover (make-hive-package.sh), so a HiveOS rig earns nothing from the 20%
proving share until a Linux prover build is published; the rig installer on rig-install (cf716a6,
packaging/linux/README.md) idles its prover unit in state setup for the same reason. A per-card
table (8, 12, 16, 24, 32 GB) from the app's rule in provedefault.rs and the proving agent's
measurements of 5 October 2026 (bench-log "proving v1": 13.9 GB prover alone on an empty shard,
28.3 GB on the full prototype shard, 15.6 GB and 16.75 GB mine-and-prove on one 5090, 30.0 GB
full shard beside the miner), marked before the v1-shard row.

IDENTITIES: the app's rule (detect.rs) is 8 vote keys for a card with 8 GiB or more, else 2.
h-config.sh now defaults to IDENTITIES=auto and resolves it per card from nvidia-smi
memory.total or /sys/class/drm/card<N>/device/mem_info_vram_total (amdgpu), 8 when neither
answers, writing IDENTITIES_GPU<N> keys into igneum.conf beside the IDENTITIES=8 fallback; a
number still overrides every card. h-run.sh reads IDENTITIES_GPU<N> first, else IDENTITIES.
The README and the h-config comment say the number.

selftest.sh: IDENTITIES=auto with no GPU tools (8, no per-card keys), the default being auto,
a stubbed nvidia-smi printing 6144 and 24576 (gpu0=2, gpu1=8), the numeric override, and h-run
taking IDENTITIES_GPU1=3 over the fallback. bash packaging/hive/selftest.sh on this Mac:

   auto with no GPU tools: IDENTITIES=8, no per-card keys ok
   default (no IDENTITIES line) is auto ok
   auto with nvidia-smi 6144/24576: gpu0=2, gpu1=8 ok
   numeric override keeps IDENTITIES=4 ok
== h-run.sh (fake GPUs: 2 NVIDIA, fake node, fake miner)
   dev fee lines in the main log: 4
   DEV_FEE=0 reached the miner as --dev-fee 0 ok
   gpu0 took the IDENTITIES=8 fallback ok
   gpu1 took IDENTITIES_GPU1=3 over the fallback ok
   NVIDIA cards got the cuda worker ok
   exit 42 restarted the miner and re-exported the pack ok
== h-stats.sh (sourced)
   stats JSON ok: hs [118500.0, 118500.0] temp [61, 58] ar [24, 0] bus [1, 2]
== self-test passed (scripts and stats shape; Hive itself is untested)

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-05 20:41:40 +00:00
..
.gitignore Miner dev fee: app switch and UI line, HiveOS package, Linux worker cross-build, docs and public text 2026-10-04 21:46:41 +00:00
h-config.sh HiveOS: rigs mine only until a Linux prover ships; IDENTITIES=auto by VRAM 2026-10-05 20:41:40 +00:00
h-manifest.conf Miner dev fee: app switch and UI line, HiveOS package, Linux worker cross-build, docs and public text 2026-10-04 21:46:41 +00:00
h-run.sh HiveOS: rigs mine only until a Linux prover ships; IDENTITIES=auto by VRAM 2026-10-05 20:41:40 +00:00
h-stats.sh Miner dev fee: app switch and UI line, HiveOS package, Linux worker cross-build, docs and public text 2026-10-04 21:46:41 +00:00
make-hive-package.sh Miner dev fee: app switch and UI line, HiveOS package, Linux worker cross-build, docs and public text 2026-10-04 21:46:41 +00:00
README.md HiveOS: rigs mine only until a Linux prover ships; IDENTITIES=auto by VRAM 2026-10-05 20:41:40 +00:00
selftest.sh HiveOS: rigs mine only until a Linux prover ships; IDENTITIES=auto by VRAM 2026-10-05 20:41:40 +00:00

Igneum Miner for HiveOS

The Igneum miner as a HiveOS custom miner: igneum-hive-<version>.tar.gz holds the Linux igneum-miner, igneumd, the two GPU workers (igneum-worker-cuda for NVIDIA, igneum-worker-opencl for AMD) and the four hooks Hive runs (h-manifest.conf, h-config.sh, h-run.sh, h-stats.sh). Built on 4 October 2026. Hive itself is untested: the scripts were self-tested with stub binaries (selftest.sh) and the binaries were cross-compiled on a Mac; the first real run on a Hive rig is still to come. Report what breaks.

A HiveOS rig mines only. The package (make-hive-package.sh) carries igneumd, igneum-miner and the two workers; no igneum-prove-host, no igneum-prove-export, no SP1 GPU server. So a rig on this package earns from the 80% lottery share and nothing from the 20% proving share until a Linux prover build is published. The Ubuntu rig installer (packaging/linux/README.md, branch rig-install, commit dd632c1) carries a prover unit that idles in state setup for the same reason; its per-card table is the fuller version of the one below. What each card could do once the prover ships, from the app's rule (app/igneum-app/src/provedefault.rs on proving-v1: 20 GB mines and proves on one card, 16 GB proves only with the miner paused, under 16 GB mines only) and from the proving agent's measurements of 5 October 2026, before the v1-shard row (docs/bench-log.md, "proving v1": jobs prover-cost-pc2-pv1b, chain-pc2-pv1c, memsweep-pc2-pv1, memminer-pc2-pv1, one RTX 5090):

Card Once a Linux prover ships Measured on 5 October 2026
8 GB mines only the prover alone peaks at 13.9 GB on an empty shard
12 GB mines only the same 13.9 GB does not fit
16 GB proves only, with the miner paused mine-and-prove peaked at 15.6 GB on empty shards and 16.75 GB with chained aggregation
24 GB mines and proves 16.75 GB leaves 7 GB; the full prototype shard (28.3 GB with the card to itself) does not fit
32 GB mines and proves the full prototype shard beside the miner peaked at 30.0 GB

The v1-budget shard (about 7 M cycles) is unmeasured and may move these lines.

Flight Sheet

Field Value
Miner Custom
Installation URL https://<host>/igneum-hive-<version>.tar.gz (the archive from make-hive-package.sh, published on the download host)
Miner name igneum
Wallet and worker template 0x<40 hex>.%WORKER_NAME%: the payout address is an EVM address you hold the key for; the part after the dot labels this rig's keys
Pool URL grpc://<your node>:26610 (your own igneumd, solo mining), or local to run the bundled node on the rig
Pass empty
Extra config arguments DEV_FEE=1 IDENTITIES=auto WORKER=auto VOTE=1 (one per line also works); PEERS=a:26611,b:26611 for the bundled node; EXTRA="..." for more miner flags
IDENTITIES vote keys per card: 8 for a card with 8 GB or more, else 2 (IDENTITIES=auto applies that rule, per card, from nvidia-smi or the amdgpu sysfs; 8 when neither answers; a number overrides it for every card). The rule is the app's (app/igneum-app/src/detect.rs)

Solo mining: there is no pool. Each card mines block templates from the node and the block reward pays the wallet in the template (80% of each block to its finder, 20% to the proving pool; the protocol takes no fee for anyone).

The dev fee

The Igneum miner software takes a 1% dev fee the way every GPU miner does (lolMiner, T-Rex): one block template in 100 is requested with the dev payout address instead of yours. It is a counter, not a random draw, so it is exactly 1 in 100 and anyone can audit it from the source (igneum/miner/src/main.rs, "Software dev fee") or from the chain (igneum-miner payouts grpc://<node>:26610 lists blocks per payout address). DEV_FEE=0 in the extra config turns it off. The miner prints its own line at start, in each GPU's log:

dev fee 1% (1 block in 100) to 0x<address>; --dev-fee 0 turns it off

The protocol carries no fee: this is the software's, and any other miner client is welcome.

What the hooks do

Hook What
h-config.sh writes igneum.conf from the Flight Sheet (node URL, wallet, label, DEV_FEE, IDENTITIES, WORKER, VOTE, PEERS, EXTRA); resolves IDENTITIES=auto to IDENTITIES_GPU<N> keys by VRAM; refuses a wallet that is not 0x + 40 hex
h-run.sh starts the bundled node when the URL is local, waits for the node, exports the hourly program pack (igneum-miner export-pack), then one igneum-miner per GPU with its worker (--identities from IDENTITIES_GPU<N>, else IDENTITIES); restarts a miner that exits (exit 42 = program change without prepare support: the pack is re-exported first); per-GPU logs <log>.gpu<N>.log, merged into the main log
h-stats.sh per-GPU hash rate from each miner's last STATUS line (now=<MH/s>), accepted and rejected totals, dev-fee block count, temperatures and fans from Hive's gpu-stats (else nvidia-smi), uptime, version

Stats JSON (what Hive reads from $stats): hs (kH/s per GPU), hs_units (khs), temp, fan, uptime (s), ver, ar ([accepted, rejected]), algo (igneum), bus_numbers, plus dev_fee_blocks (ours). $khs is the total.

Requirements on the rig

  • NVIDIA: the driver (libcuda.so.1) and NVRTC (libnvrtc.so.12, from a CUDA 12 toolkit or the NVRTC redistributable on the library path). The worker compiles the hourly program at run time with NVRTC; without the library it says so and the miner retries. Hive images ship the driver; whether libnvrtc.so.12 is present depends on the image, untested.
  • AMD: an OpenCL ICD (libOpenCL.so.1 from ROCm or amdgpu-pro). The OpenCL worker compiles the program through the ICD.
  • The bundled node (local) keeps its chain data under the miner folder (data/); a devnet chain is small today.
  • Ports: the bundled node listens on 26611 (p2p) and answers RPC on 127.0.0.1:26610 only.

Building the package

infra/cross/build-linux.sh              # igneumd and igneum-miner for Linux (cargo-zigbuild), into infra/cross/out
infra/cross/build-workers-linux.sh      # the two workers (zig c++ and zig cc), into infra/cross/out-workers
packaging/hive/make-hive-package.sh     # the archive, sha256 and the Flight Sheet lines; NODE_OUT=infra/cross/out-v2 to pick a build
packaging/hive/selftest.sh              # bash -n, a stub package, the three hooks the way Hive runs them

Known gaps (4 October 2026)

  • Never run on Hive. The hook contract follows Hive's custom-miner README (archive name-version.tar.gz with the directory name/; h-config.sh and h-stats.sh are sourced; $khs and $stats), approximate until a rig confirms it.
  • GPU order: the CUDA device index is assumed to follow nvidia-smi order and Hive's gpu-stats arrays (NVIDIA first); a mixed NVIDIA and AMD rig may show temperatures against the wrong card.
  • Each card runs its own igneum-miner and node connection; the node's template RPC serves them all.
  • No prover in the package (the second paragraph above): the rig earns nothing from the proving share until a Linux prover build ships.