Open-Source Crypto Mining GUI for M3 / M4 / M5 Macs

shiftingeden1 pts1 comments

GitHub - shiftingeden/kawpow-mac: Native Swift+Metal KawPow miner for Apple Silicon (M1-M5+). Clean replacement for thinminerpro. · GitHub

/" data-turbo-transient="true" />

Skip to content

Search or jump to...

Search code, repositories, users, issues, pull requests...

-->

Search

Clear

Search syntax tips

Provide feedback

--><br>We read every piece of feedback, and take your input very seriously.

Include my email address so I can be contacted

Cancel

Submit feedback

Saved searches

Use saved searches to filter your results more quickly

-->

Name

Query

To see all available qualifiers, see our documentation.

Cancel

Create saved search

Sign in

/;ref_cta:Sign up;ref_loc:header logged out"}"<br>Sign up

Appearance settings

Resetting focus

You signed in with another tab or window. Reload to refresh your session.<br>You signed out in another tab or window. Reload to refresh your session.<br>You switched accounts on another tab or window. Reload to refresh your session.

Dismiss alert

{{ message }}

shiftingeden

kawpow-mac

Public

Notifications<br>You must be signed in to change notification settings

Fork

Star

main

BranchesTags

Go to file

CodeOpen more actions menu

Folders and files<br>NameNameLast commit message<br>Last commit date<br>Latest commit

History<br>18 Commits<br>18 Commits

Sources/kawpow-mac

Sources/kawpow-mac

promo

promo

.gitignore

.gitignore

BUGS_AND_FIXES.md

BUGS_AND_FIXES.md

Package.swift

Package.swift

README.md

README.md

config.json

config.json

View all files

Repository files navigation

kawpow-mac

A native KawPow miner for Apple Silicon Macs (M1 through M5+), written in Swift + Metal.

Why

thinminerpro — the closed-source binary used by Unmineable-Mac — does not submit shares on M3+<br>Apple Silicon. The Metal kernel works, but the closed Swift host orchestration is broken on<br>newer chips. This is a clean rewrite using the verified kernel + the public KawPow spec.

Status

✅ Working — accepts shares against unMineable's KawPow pool on<br>modern Apple Silicon (verified on M5 MacBook Air, 2026-05-25). First<br>open-source KawPow miner known to do this on M3+ chips.

M0: kernel verified working on M5 (extracted + tested standalone)

M1: project skeleton + stratum client

M2: target conversion + submit wire format

M3: KawPow per-epoch RANDOM_MATH + DATA_LOADS generator

M4: DAG generation (light cache + 5.5 GB DAG GPU fill in ~30s on M5)

M5: mining loop integration (PSO cache, atomic results, ~2.7 MH/s)

M6: spec-compliant against Ravencoin's official progpow_hash test vectors

M7: live on unmineable — first accepted share at jobId 3d56a,<br>pool replied {"id":3,"result":true,"error":null} ✅

Bugs found and fixed along the way

Full chronicle in BUGS_AND_FIXES.md. Five real<br>algorithm bugs were uncovered between M5 and M6:

Race condition writing results[] from multiple GPU threads (atomic guard added)

PROGPOW Fisher-Yates shuffle ordered sequentially instead of interleaved per spec

Math-op source generation used two rnd() calls when spec uses one (with distinct-source enforcement)

PROGPOW_DAG_ELEMENTS was 4× too small — kernel only addressed the first 1/4 of the DAG

DAG generation used 256 parent-folding rounds; Ravencoin's KawPow spec uses 512 — every DAG item we computed differed from spec, which is why the pool always replied "Invalid share"

Diagnostic harnesses available

Command<br>Purpose

kawpow-mac verify-vectors<br>Run Ravencoin's official ProgPoW test vectors. Passes.

kawpow-mac kernel-vs-cpu<br>Bitwise compare Metal kernel and CPU light-eval

kawpow-mac dag-crosscheck<br>Cross-check GPU DAG fill against CPU spec

kawpow-mac dump-ops<br>Print our generated RANDOM_MATH/DATA_LOADS source

KAWPOW_FORCED_TARGET=…<br>Override kernel target to fast-find shares (for pool format diagnostics)

Build

swift build -c release<br>.build/release/kawpow-mac

Requires macOS 13+ and an Apple Silicon Mac.

Testing it yourself

Two paths: just the miner binary (fast, explicit pool replies in the<br>terminal), or the full Unmineable-Mac app (slower, real end-user UX).

A. Standalone miner — quickest end-to-end test

git clone https://github.com/shiftingeden/kawpow-mac.git<br>cd kawpow-mac<br>swift build -c release

Verify the spec-compliant algorithm against Ravencoin's official test<br>vectors (under 5s, no network needed):

./.build/release/kawpow-mac verify-vectors

You should see all four ✓ lines (mix + final for block 0 and<br>block 49). If any ✗, something is broken in your toolchain — open<br>an issue.

Bitwise CPU↔Metal kernel cross-check (catches Metal driver oddities,<br>~10s including DAG build):

./.build/release/kawpow-mac kernel-vs-cpu

You should see ✓ AGREE — CPU and kernel produce the same mix_hash.

Now actually mine for ~5 min. Drop a config.json next to the binary<br>with your own unMineable worker string (COIN:ADDRESS.WORKER#REFERRAL):

config.json cat > config.json 'EOF'<br>"user": "LTC:YOUR_LTC_ADDRESS_HERE.yourworker",<br>"chosenURL": "kp.unmineable.com",<br>"chosenPort": 3333,<br>"deviceNumber": 0,<br>"intensity":...

kawpow kernel spec swift build source

Related Articles