InfoPearl (PRL) now uses FPPS payoutsPearl mining has moved from PPS to FPPS on NushyPool. The public pool port stays the same, while accepted Pearl work is credited more smoothly and is less dependent on pool block luck in that exact period.
Updated: 2026-06-15 18:59 UTCRead FPPS announcement
GPU Miner CUDA OpenCL Latest: 1.0.9

NushyPool Downloads

Download npminer packages for NushyPool and keep setup notes, commands, platform support, and future mining tools in one place.

NPMiner

Newest release packages

High-performance, multi-coin GPU miner with CUDA and OpenCL backends.

Latest GitHub release
npminer

Linux

1.0.9

npminer-linux-x86_64-v1.0.9.tar.gz

Standard Linux package.

3.4 MB 2026-06-13
SHA256 ba4105f982500f5c05f7c1c5f3ddb23699ae2d2231549e2cdcc62ec597752051
Download
npminer

mmpOS

1.0.9

npminer-mmpos-linux-x86_64-v1.0.9.tar.gz

Package for mmpOS.

3.4 MB 2026-06-13
SHA256 128b15697dace3284da6269af05a63f9adb9cb50ded1a65d5b47cf8333a6e32a
Download
npminer

HiveOS

1.0.9

npminer-v1.0.9.tar.gz

Package for HiveOS.

3.4 MB 2026-06-13
SHA256 a16793e37bf5bad334cebfe3705d18738d86cedf28fb708a6b23c8e6a4d2d74d
Download
npminer

Windows

1.0.9

npminer-windows-x86_64-v1.0.9.tar.gz

Standard Windows package.

3.5 MB 2026-06-13
SHA256 a72ab53fcf90000ef6e1635984b29365d1c2f6e05c3089425fc1696a6d309028
Download
Previous versions Older packages are kept for rollback and compatibility. Use the latest packages above for normal installs. 8 packages
npminer

Linux

1.0.8

npminer-linux-x86_64-v1.0.8.tar.gz

Standard Linux package.

3.3 MB 2026-05-20
SHA256 a2001dc68a447e7a34463ce614cc15eb9ba0affe4f1c9e20bcb8631e180e8f5c
Download
npminer

mmpOS

1.0.8

npminer-mmpos-linux-x86_64-v1.0.8.tar.gz

Package for mmpOS.

3.3 MB 2026-05-20
SHA256 17bfe5e2cdb1de1f0020dd3c62a2fc5740d88ffe5bb1aedb82cc1c782f866fa5
Download
npminer

HiveOS

1.0.8

npminer-v1.0.8.tar.gz

Package for HiveOS.

3.4 MB 2026-05-20
SHA256 9941d1b009aa58e943df70b452a2b886d559bba065c232d2f4b4704ef10b13bc
Download
npminer

Windows

1.0.8

npminer-windows-x86_64-v1.0.8.tar.gz

Standard Windows package.

3.4 MB 2026-05-20
SHA256 b972aa04128d91fac9b13c6bbd31db7c23a4ffef26385c904b80dfbf808857e7
Download
npminer

Linux

1.0.7

npminer-linux-x86_64-v1.0.7.tar.gz

Standard Linux package.

3.3 MB 2026-05-20
SHA256 05c7a1d4ae237de9e1577d9d07db029df6a081a5d324527ec40ce06e5f29d4fd
Download
npminer

mmpOS

1.0.7

npminer-mmpos-linux-x86_64-v1.0.7.tar.gz

Package for mmpOS.

3.4 MB 2026-05-20
SHA256 997e7c1874f219e0fb93c27adff6b23612486a1e8de2383ab89b8414924ddd6f
Download
npminer

HiveOS

1.0.7

npminer-v1.0.7.tar.gz

Package for HiveOS.

3.4 MB 2026-05-20
SHA256 09e77f0e0b1f57e77c8b5de0669da6f31e7ef0f4fe38bb52f8c4c14696b092a1
Download
npminer

Windows

1.0.7

npminer-windows-x86_64-v1.0.7.tar.gz

Standard Windows package.

3.4 MB 2026-05-20
SHA256 b764df0166566298267426e564460345502d0d4ca71446dc952b56bb62980185
Download
Pearl Stratum Protocol V1 (Pool Integration Spec) Minimal Pearl Stratum JSON-RPC contract for pools that want to accept npminer. Spec

NPMiner uses newline-delimited JSON-RPC over stratum+tcp://host:port. For third-party Pearl pool support, implement the V1 plain-proof submit path first. The compact submit path is an optional NushyPool fast-path extension.

Caution

This is the initial version of the Pearl Stratum protocol used by npminer. We are open to improvements and pool feedback that can help standardize Pearl mining across compatible miners and pools.

1. Login

The miner may send mining.authorize without a prior mining.subscribe, so pools must not require subscribe. The first authorize parameter is pearl_address or pearl_address.worker.

{"id":1,"method":"mining.authorize","params":["prl1youraddress.worker1"]}
{"id":1,"result":true,"error":null}

2. Pool job

Send Pearl work with mining.notify and object params. header is 76 bytes encoded as 152 hex chars. target is required and is 32 bytes encoded as 64 hex chars. difficulty and height are optional metadata fields in V1, but production pools should include both.

{"id":null,"method":"mining.notify","params":{
  "job_id":"pearl-00004020abcd_53333",
  "header":"<152 hex chars>",
  "target":"<64 hex chars>",
  "height":4014280,
  "difficulty":53333
}}

2.1. Job fields

job_id: required; format: non-empty opaque string, unique among active jobs. NushyPool uses pearl-<header-prefix>_<difficulty>, for example pearl-00004020abcd_53333, so logs and stale-share handling show the job family and vardiff. Other pools may use any unique stable string; the miner only echoes it back in mining.submit.

header: required; format: 152 hex chars representing exactly 76 bytes. This is the Pearl incomplete block header without the nonce. It contains the block-header bytes used by the Pearl verifier, including version, previous block hash, merkle root, time, and nBits/compact network target in Pearl's expected wire byte order. Do not reinterpret it in the miner; send the exact bytes that will be used when validating the submitted plain proof.

target: required; format: 64 hex chars representing a 32-byte big-endian share target. This is the authoritative V1 share target. The pool and miner must treat a share as valid only if the Pearl proof result meets this target.

difficulty: optional; format: positive JSON number, preferably an integer. It is related to target by target = diff1_target / floor(difficulty), clamped to at least 1. It is included so the miner can report stats, effective hashrate, and vardiff state without reverse-calculating from target. It is optional because V1 share validation relies on the required target, but if sent it must match the advertised target.

height: optional; format: unsigned integer block/template height. It is not part of the Pearl hashing path and most Stratum protocols do not require miners to know it. It is included for diagnostics, stale-job analysis, block-candidate attribution, and easier pool/miner log correlation.

3. Plain-proof share submit

This is the required compatibility path. The pool validates plain_proof against the exact job header and target. hs is optional miner telemetry in hashes per second; it must not be used as proof validity.

{"id":2,"method":"mining.submit","params":{
  "job_id":"pearl-00004020abcd_53333",
  "plain_proof":"<base64 Pearl plain proof>",
  "hs":110000000000000,
  "lpm_shape":{"rows":256,"cols":256,"k":4096,"rank":256}
}}

3.1. Submit fields

job_id: required; format: exact string received in the corresponding mining.notify. The pool uses it to find the active job, reject stale shares, and validate the proof against the correct header and target.

plain_proof: required; format: base64-encoded Pearl plain proof. Pools decode it and validate it against the job header and share target.

hs: optional; format: positive JSON number representing miner-reported hashes per second. This is telemetry only and must not be used to decide whether a share is valid.

lpm_shape: optional; format: object with positive integer rows, cols, k, and rank. This is npminer diagnostic/compatibility metadata and is not required for lpminer/SRBMiner compatibility. Pools may ignore it. The decoded plain_proof remains authoritative.

3.2. Plain proof decoding and validation

Decode plain_proof from standard base64, then deserialize the bytes as the Pearl plain-proof structure. The current V1 proof payload contains m, n, k, noise_rank, an a matrix proof, and a bt matrix proof. Each matrix proof carries Merkle leaf data, leaf indices, total leaves, Merkle root, siblings, and selected row indices. Reject malformed base64, truncated data, trailing bytes, unexpected dimensions, or invalid row/proof layout.

Validation uses the exact 76-byte job header from mining.notify. Derive the Pearl LPM job key from that header, detect the compatible proof variant from the row-index pattern, extract the selected A rows and B columns from the Merkle proofs, derive the deterministic noise seeds from the job key and proof roots, add the deterministic noise, compute the jackpot dot-products, then hash the jackpot with BLAKE3 using the derived A-noise seed.

The resulting jackpot hash is the share hash. Accept the share only if that hash meets the advertised V1 share target. If your verifier API accepts share difficulty instead of target, pass the same pool difficulty that was used to build the advertised target. Do not use miner-reported hs or lpm_shape for validity decisions.

4. Optional compact submit

If a pool supports npminer compact shares, it can accept pearl.compact.v1. The pool reconstructs and validates the proof from the stored job, nonce, and profile. Unsupported pools should use plain-proof mode.

{"id":3,"method":"mining.submit","params":{
  "job_id":"pearl-00004020abcd_53333",
  "nonce":"0000000000000042",
  "hs":110000000000000,
  "pearl_protocol":"pearl.compact.v1",
  "profile":"zero_signal_256x256_v1"
}}

4.1. Compact submit fields

job_id: required; format: exact string received in the corresponding mining.notify. The pool uses it to find the stored job header and reject stale compact shares.

nonce: required; format: 16 hex chars representing an unsigned 64-bit nonce. The pool combines this nonce with the stored job header and compact profile to reconstruct the canonical Pearl plain proof or validate the compact share directly.

hs: optional; format: positive JSON number representing miner-reported hashes per second. This is telemetry only and must not be used to decide whether a compact share is valid.

pearl_protocol: required for compact submit; format: string pearl.compact.v1. It identifies the submit as the npminer compact extension instead of the V1 plain-proof submit path.

profile: required; format: compact profile string. The currently documented profile is zero_signal_256x256_v1. Pools should reject unknown profiles unless they can reconstruct and validate the exact same proof deterministically.

5. Share response

Return the same JSON-RPC id. Accepted shares use {"result":true,"error":null}. Rejected shares should use result:false or a JSON-RPC error object with a short reason such as stale, low difficulty, duplicate, or invalid proof.

What npminer Supports

  • 0% devfee on nushypool.com
    NushyPool users mine with no dev fee.
  • Stratum, gRPC, and Xelis RPC
    Use one consistent --url and --user flow.
  • Local stats API
    Expose read-only HTTP stats for HiveOS, mmpOS, and XMRig-compatible dashboards.
  • NVIDIA and AMD GPUs
    CUDA for NVIDIA, OpenCL for AMD cards.
  • Multi-GPU selection
    Use --devices with the GPU Index from --list-gpus.
  • Autotune cache
    Tuned launch settings are reused across restarts.
  • Opt-in auto-update
    Use --enable-autoupdate to securely install newer signed releases at startup.
  • Watchdog supervision
    Recovery-oriented worker startup and monitoring.

Algorithms

Coin Algo Backend
VecnomemhashCUDA / OpenCL
CryptixcryptixCUDA / OpenCL
HoosathoohashCUDA / OpenCL
XelisxelishashCUDA / OpenCL
CapStashcapstashCUDA / OpenCL
PearlpearlCUDA
Caution

Pearl support is experimental. Optimal performance is currently available only on NVIDIA Ampere / RTX 30-series GPUs; support for other GPU architectures is coming soon.

Use latest GPU drivers for best stability and hashrate.

Devfee

NushyPool endpoints marked 0% are fee-exempt. CapStash currently uses the listed devfee until a miner-side exemption is released. When mining on other compatible pools, or when solo mining directly to your own node, npminer applies the built-in devfee shown below.

Coin Algorithm Other Stratum Pools Solo Direct Node NushyPool
CapStash capstash 2% 2% via rpc:// 0%
Pearl pearl 2% 0%
Vecno memhash 1% 1% via grpc:// 0%
Hoosat hoohash 1% 1% via grpc:// 0%
Cryptix cryptix 1% 1% via grpc:// 0%
Xelis xelishash 1% 1% via rpc:// 0%

For XelisHash, direct-node solo mining uses the Xelis JSON-RPC endpoint, for example rpc://ADDRESS:PORT. Vecno, Hoosat, and Cryptix direct-node examples use grpc://ADDRESS:PORT.

Pool Mining Examples

Vecno PPS/Solo pool
./npminer -a memhash -o stratum+tcp://POOL:PORT -u vecno:YOUR_WALLET -w worker1
Hoosat PPS/Solo pool
./npminer -a hoohash -o stratum+tcp://POOL:PORT -u hoosat:YOUR_WALLET -w worker1
Cryptix PPS/Solo pool
./npminer -a cryptix -o stratum+tcp://nushypool.com:40003 -u cryptix:YOUR_WALLET -w worker1
XelisHash PPS/Solo pool
./npminer -a xelishash -o stratum+tcp://nushypool.com:40008 -u xel:YOUR_WALLET -w worker1
CapStash PPS on NushyPool
./npminer -a capstash -o stratum+tcp://nushypool.com:40011 -u cap:cap1YOUR_WALLET -w worker1
List GPUs
./npminer --list-gpus
Select GPUs
./npminer -a memhash -o grpc://POOL:PORT -u vecno:YOUR_WALLET -d 0,2

Solo Direct-Node Examples

Vecno gRPC
./npminer -a memhash -o grpc://127.0.0.1:7110 -u vecno:YOUR_WALLET
Hoosat gRPC
./npminer -a hoohash -o grpc://127.0.0.1:42420 -u hoosat:YOUR_WALLET
Cryptix gRPC
./npminer -a cryptix -o grpc://127.0.0.1:19201 -u cryptix:YOUR_WALLET
XelisHash RPC
./npminer -a xelishash -o rpc://127.0.0.1:8080 -u xel:YOUR_WALLET
CapStash RPC
./npminer -a capstash -o rpc://127.0.0.1:8332 -u cap1qYOUR_WALLET --rpc-user RPC_USER --rpc-pass RPC_PASSWORD

Use grpc:// for Vecno-style direct-node mining. Use rpc://host:port[/json_rpc] for XelisHash direct-node mining. --devices uses the GPU Index printed by --list-gpus, not the Bus ID.

CapStash: Solo mining CapStash directly to your own node uses rpc://host:port. Add --rpc-user and --rpc-pass if your node requires RPC authentication. For NushyPool Solo, use stratum+tcp://nushypool.com:45011 instead.

API Reference

npminer exposes a read-only local HTTP API for HiveOS, mmpOS, and XMRig-compatible monitoring tools. Standalone runs keep the API off until you enable it; HiveOS and mmpOS packages enable localhost by default.

Enable the API

Use --api-port to start the API on localhost. The default mining OS port is 42330, and --api-disable always wins.

./npminer -a memhash -o stratum+tcp://nushypool.com:50010 -u vecno:YOUR_WALLET -w Hashvilly --api-port 42330
XMRig-compatible flags

Existing dashboards can use the --http-enabled, --http-host, --http-port, and --http-access-token aliases. The npminer v1 API is read-only; --http-no-restricted is accepted as a no-op.

./npminer -a xelishash -o stratum+tcp://nushypool.com:40008 -u xel:YOUR_WALLET -w Hashvilly --http-enabled --http-port 42330
Security defaults

The API binds to 127.0.0.1 by default. Binding to another address requires --api-token, and clients must send Authorization: Bearer TOKEN.

Option Description
--api-port <PORT>Starts the local HTTP stats API on the selected port.
--api-bind <ADDR>Bind address for the API listener. The default is localhost.
--api-token <TOKEN>Bearer token used to protect API responses. Required for non-local binds.
--api-disableDisables the API, including when a mining OS package would normally enable it.
--api-worker-id <ID>Overrides the worker ID shown in API responses.
--api-id <ID>Overrides the miner instance ID shown in API responses.
--http-enabled, --http-host, --http-port, --http-access-tokenXMRig-compatible aliases for monitoring software that already knows miner HTTP flags.
--http-no-restrictedAccepted for CLI compatibility. npminer does not expose write or control endpoints in v1.
Endpoint Response
/npminer/v1/healthSmall health response with uptime, algorithm, and snapshot status.
/npminer/v1/statsFull native npminer stats, including total hashrate, per-device telemetry, shares, difficulty, mode, URL, and snapshot age.
/npminer/v1/hiveosHiveOS-shaped stats JSON for mining OS integrations.
/npminer/v1/mmposmmpOS-shaped stats JSON for mining OS integrations.
/2/summary, /XMRig-style summary response for common monitoring dashboards.
/2/backendsXMRig-style backend and per-GPU thread response.
/1/summary, /1/threadsCompatibility aliases for older XMRig-style clients.
Query examples
curl http://127.0.0.1:42330/npminer/v1/stats
curl http://127.0.0.1:42330/2/summary
curl -H "Authorization: Bearer YOUR_TOKEN" http://127.0.0.1:42330/npminer/v1/stats

Command Reference

Output from npminer -h.

npminer version
NushyPool Miner is high performance GPU miner

USAGE:
    npminer [OPTIONS]

OPTIONS:
    -a, --algo <ALGO>                                      Mining algorithm to use (supported: memhash, hoohash, cryptix, xelishash, capstash)
        --api-bind <API_BIND>                              HTTP stats API bind address [default: 127.0.0.1] [aliases: http-host]
        --api-disable                                      Disable the HTTP stats API even when a mining OS integration enables it
        --api-id <API_ID>                                  Custom instance ID reported by the HTTP stats API
        --api-port <API_PORT>                              Enable the local HTTP stats API on this port [aliases: http-port]
        --api-token <API_TOKEN>                            Bearer token for HTTP stats API access; required when binding outside localhost [aliases: http-access-token]
        --api-worker-id <API_WORKER_ID>                    Custom worker ID reported by the HTTP stats API
        --cuda-device <CUDA_DEVICE>                        Comma separated list with CUDA GPUs to use (example: --cuda-device 2,3 or --cuda-device=2,3) [default: all]
        --cuda-disable                                     Disable CUDA workers
        --cuda-lock-core-clocks <CUDA_LOCK_CORE_CLOCKS>    Lock core clocks eg: ,1200, [default: 0]
        --cuda-lock-mem-clocks <CUDA_LOCK_MEM_CLOCKS>      Lock mem clocks eg: ,810, [default: 0]
        --cuda-no-blocking-sync                            Actively wait for result. Higher CPU usage, but less red blocks. Can have lower workload.
        --cuda-nonce-gen <CUDA_NONCE_GEN>                  The random method used to generate nonces. Options: (i) xoshiro (ii) lean [default: lean] [default: lean]
        --cuda-power-limits <CUDA_POWER_LIMITS>            Lock power limits eg: ,150, [default: 0]
        --cuda-workload <CUDA_WORKLOAD>                    Ratio of nonces to GPU possible parallel run for CUDA, optionally comma-separated per device [default: 128] [default: 128]
        --cuda-workload-absolute                           The values given by workload are not ratio, but absolute number of nonces [default: false]
    -d, --devices <DEVICES>                                Comma separated GPU Index values from --list-gpus, not Bus ID [default: all] [aliases: device]
        --enable-autoupdate                                Automatically download and restart into a newer npminer release when one is available
    -h, --help                                             Print help information
        --http-enabled                                     Enable the HTTP stats API using the default API port
        --http-no-restricted                               Accepted for XMRig CLI compatibility; npminer v1 API remains read-only
        --list-gpus                                        List detected GPUs and exit
        --mine-when-not-synced                             Mine even when node says it is not synced
    -o, --url <URL>                                        Mining server URL for stratum, grpc, or RPC (e.g. stratum+tcp://host:port, grpc://host:port, rpc://host:port)
        --opencl-amd-disable                               Disables AMD mining (does not override opencl-enable)
        --opencl-device <OPENCL_DEVICE>                    Comma separated list with OpenCL GPUs to use on a specific platform
        --opencl-no-amd-binary                             Disable fetching of precompiled AMD kernel (if exists)
        --opencl-nonce-gen <OPENCL_NONCE_GEN>              The random method used to generate nonces. Options: (i) xoshiro (ii) lean [default: lean]
        --opencl-platform <OPENCL_PLATFORM>                Which OpenCL platform to use (limited to one per executable)
        --opencl-workload <OPENCL_WORKLOAD>                Ratio of nonces to GPU possible parallel run for OpenCL [default: 128] [default: 128]
        --opencl-workload-absolute                         The values given by workload are not ratio, but absolute number of nonces in OpenCL [default: false]
    -p, --pass <PASS>                                      Standard stratum mining CLI worker password (stratum only)
        --reset-autotune                                   Delete cached autotune/JIT state and force fresh autotuning before startup
        --rpc-pass <RPC_PASS>                              RPC password for direct-node solo mining when the node requires authentication
        --rpc-user <RPC_USER>                              RPC username for direct-node solo mining when the node requires authentication
        --testnet                                          Use testnet for solo grpc mining
    -u, --user <USER>                                      Mining wallet/address for stratum, grpc, or RPC (for example vecno:... or vecno:....worker)
    -v, --version                                          Print version information
    -w, --worker <WORKER>                                  Standard stratum mining CLI worker name (stratum only)

Examples:
  npminer --algo memhash --url stratum+tcp://pool:50010 --user vecno:... --worker Hashvilly
  npminer --algo hoohash --url grpc://127.0.0.1:7110 --user hoosat:...
  npminer --algo cryptix --url stratum+tcp://nushypool.com:40003 --user cryptix:... --worker Hashvilly
  npminer --algo xelishash --url stratum+tcp://nushypool.com:40008 --user xel:... --worker Hashvilly
  npminer --algo xelishash --url rpc://127.0.0.1:8080 --user xel:...
  npminer --algo capstash --url stratum+tcp://nushypool.com:40011 --user cap:cap1... --worker Hashvilly
  npminer --algo capstash --url rpc://127.0.0.1:8332 --user cap:cap1... --rpc-user RPC_USER --rpc-pass RPC_PASSWORD
  npminer --algo xelishash --url stratum+tcp://nushypool.com:40008 --user xel:... --worker Hashvilly --api-port 42330
  npminer --algo xelishash --url stratum+tcp://nushypool.com:40008 --user xel:... --worker Hashvilly --http-enabled

HTTP API examples:
  curl http://127.0.0.1:42330/npminer/v1/stats
  curl http://127.0.0.1:42330/2/summary
  curl http://127.0.0.1:42330/2/backends