igneum/infra/cloud-devnet/node/igneum-miner.service
igneum-labs d8dc8c6ba3 infra: cloud devnet (20 nodes), rented GPU bench and seed node scripts; plans for both
infra/cloud-devnet: hcloud (doctl variant) create, builder-VM provision from a git-archive source tarball,
systemd units for igneumd --devnet-suffix with a sparse --addpeer mesh and a CPU trickle miner per node,
stdlib wRPC client, experiments (latency, partition, hop, collect, observer hookup), README with the command
sequence and the Hetzner API prices of 3 Oct 2026.
infra/gpu-bench: RunPod image recipes (CUDA 12.8, ROCm), bundle, run.sh (vectors gate, 10-min raw, sweep,
inline shortcut ratio, nvcc/NVRTC/OpenCL recompile timings, results row, intake upload), bench-log template.
infra/seed-nodes: create-seed (persistent IPv4, firewall), provision on the VM, health check, addPeer from the
Mac over grpcurl, seeds.txt; igneum-seed-1 created at 188.245.5.161 (Hetzner cx23, fsn1).
docs/plans/cloud-devnet.md and docs/plans/seed-nodes.md.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-03 22:01:50 +00:00

24 lines
946 B
Desktop File

[Unit]
Description=Igneum CPU trickle miner (igneum-miner, real lottery hash, votes with this node's key)
After=igneumd.service
Requires=igneumd.service
[Service]
Type=simple
User=igneum
Group=igneum
EnvironmentFile=/etc/igneum/node.env
# positional: <grpc url> <threads> <seconds> <vote-key-label>. The label is the node name, so each node has its own
# BLS vote key and its own payout address (--payout-label), deterministic across restarts.
# 1e9 seconds = never stop on its own. MINER_THREADS=0 is handled by hop.sh (it stops the unit instead).
ExecStart=/bin/sh -c 'exec /opt/igneum/bin/igneum-miner mine grpc://127.0.0.1:26610 "$MINER_THREADS" 1000000000 "$NODE_NAME" --engine igneum-pow --payout-label "$NODE_NAME" --label "$NODE_NAME" --status-secs "$MINER_STATUS_SECS"'
Restart=always
RestartSec=15
Nice=10
MemoryMax=1200M
StandardOutput=journal
StandardError=journal
SyslogIdentifier=igneum-miner
[Install]
WantedBy=multi-user.target