PrimoLab Download

Documentation

Reference for the config format, CLI, URL schemes and API. ccminer users: it's a drop-in — it reads your existing ccminer config.

config.json

Single pool — the four fields you'll always set:

config.json — single pool
{
  "algo": "verus",
  "url":  "stratum+tcp://pool.verus.io:9998",
  "user": "YOUR_ADDRESS.worker1",
  "pass": "x",
  "threads": 8
}

Multi-pool failover — pools[] entries are tried in order when the pool above is unreachable. Top-level user/pass are defaults a pool entry can override:

config.json — failover
{
  "algo": "verus",
  "user": "YOUR_ADDRESS.worker1",
  "pass": "x",
  "pools": [
    { "name": "primary",  "url": "stratum+tcp://pool.verus.io:9998" },
    { "name": "backup",   "url": "stratum+ssl://backup.example.com:9999", "timeout": 60 },
    { "name": "disabled", "url": "stratum+tcp://old.example.com:9998", "disabled": true }
  ]
}

Precedence: CLI flags override config values. Run with ./primo -c config.json — or just ./primo: a config.json in the working directory is loaded automatically. Any long flag name is also a valid config key ("threads", "api-bind", "statsavg", …), and pools[] holds up to 8 entries.

CLI flags

Flag Meaning
-a <algo>Algorithm: verus, randomx, scrypt, sha256d
-o <url>Pool URL (stratum+tcp:// or stratum+ssl://)
-u <user>Username — usually wallet address + .worker
-p <pass>Password (often just x)
-O <user:pass>User and password in one flag
-t <n>Thread count (default: all cores)
-c <file>Load config.json (CLI flags override it)
-r <n> / -R <s>Retries per pool / seconds between retries
-T <s>Network timeout
-D / -P / -qDebug / protocol dump / quiet output
-N <n>Hashrate averaging window in samples (statsavg)
--cpu-affinity <mask>Restrict threads to a CPU bitmask (hex). Default: automatic per-core pinning
--cpu-priority <0-5>Mining thread priority 0–5, ccminer scale (default 0 = scheduler untouched)
--benchmarkBenchmark offline, no pool connection
-b / --api-bind <addr:port>Bind the monitoring API (default 127.0.0.1:4068)
-V / -hVersion / help

ccminer-compatible: same flags, same config format — drop-in, it reads your existing ccminer config.

URL schemes

Monitoring API

Read-only, ccminer-compatible, on port 4068 (localhost by default). Commands: summary, threads, pool, histo, hwinfo, meminfo, scanlog, help. Speaks the pipe-delimited ccminer protocol and WebSocket, so existing ccminer monitor apps work unchanged. In the APK, "Allow network monitoring" exposes it to your LAN; off means this device only.

query from another machine
$ echo summary | nc PHONE_IP 4068

Building from source

build
$ git clone https://github.com/PrimoLab/primo-arm-miner
$ cd primo-arm-miner
$ make        # clang
$ make test   # kernel self-checks

Requires an ARMv8 CPU with crypto extensions, clang, and the libcurl + libjansson dev headers — the only two runtime dependencies. Full internals documentation lives in the repo (docs/INTERNALS.md, PROVENANCE.md, NOTICE).