ClawdMiner: I Turned a Dead Bitcoin Lottery Miner Into a Claude Usage Pet That Plays an RPG Off My Real Compute
Table of Contents
- The night Gemini iterated away from the answer
- The crack: one photo of the back of the board
- What I built on top
- v1: a MicroPython dashboard
- v2: a full C++ dual-core rewrite
- Two screens, and every number is real
- Screen 1: CLAUDE USAGE
- Screen 2: CLAWD: CRYPTO DUNGEON
- The honest twist: yes it mines Bitcoin, no it will never pay off
- Want to build your own?
- What it is now
ClawdMiner: I Turned a Dead Bitcoin Lottery Miner Into a Claude Usage Pet That Plays an RPG Off My Real Compute
It started with a dead screen.
I had one of those cheap yellow ESP32-S3 boards with a tiny 1.9" screen, the kind sold as a novelty Bitcoin "lottery miner." Cute idea, useless economics (more on that later). The screen was just black. Backlight clearly on, but nothing on it. I wanted it alive before I decided what to do with it.
So I did the obvious 2026 thing: I asked an AI to bring it up.

The night Gemini iterated away from the answer
I handed the problem to Google's Gemini (the Antigravity agent) first. It went hard. It ran all night. It burned through my Gemini quota. It wrote something like fifty test scripts, cycling through SPI pin combinations, driver init sequences, rotations, color orders. By morning it was stuck exactly where it started: "backlight on, screen black." A confident, tireless failure.
Then I gave the same board to Claude Code, and here is where it gets interesting, because Claude did NOT just start guessing pins too.
Claude read Gemini's leftovers. All fifty scripts, plus Gemini's own conversation log from the night before. And buried in that pile it found the actual story:
Gemini had succeeded. Once. Early in the night, one of its scripts had drawn the text "PPCVOTE" to the screen. It worked. But Gemini misattributed that success to the wrong SPI pin set, then spent the rest of the night faithfully reproducing the WRONG pins, overwriting its own working result over and over, iterating further and further away from the answer it had already found.
That is the whole failure mode in one sentence: an agent that misattributes its own success will confirm the wrong hypothesis and grind away from the truth, all night, at full speed.
The crack: one photo of the back of the board
Claude did not solve it by trying harder. It solved it by asking for evidence.
I took a photo of the BACK of the board, the side with the header pins and their silkscreen labels. Claude reasoned by elimination: any GPIO that is broken out to the user header cannot be one of the pins wired internally to the display. Whatever the screen uses, it has to live among the GPIOs that are NOT on the header. That narrowed it to ten candidate pins. Cross-referenced against a T-Display-S3 clone pinout, the pieces fell into place.
The verdict: it is an ST7789 driver, and the pins are SCLK=12, MOSI=13, CS=10, DC=11, RST=1, backlight=14.
First attempt after that: the screen lit up.
What I built on top
Once the screen was alive, "just light it up" was not enough. The board sits on my desk. I wanted it to DO something, all day, off things that are actually real.
v1: a MicroPython dashboard
The board is tiny and cannot compute my Claude Code usage on its own, so I split the job. A small PC-side service reads my local Claude Code usage with the open-source ccusage tool, and POSTs a little JSON blob to the board over WiFi every ~15 seconds. The board just renders. Simple, and it got the whole loop working end to end.
v2: a full C++ dual-core rewrite
Then I rewrote the whole thing in C++ on PlatformIO with the Arduino framework, driving the ST7789 through Arduino_GFX, with a hand-rolled PSRAM framebuffer that is a pixel-faithful port of the MicroPython renderer. FreeRTOS splits the two cores cleanly:
- Core 1: REAL Bitcoin solo-lottery mining. A stratum-v1 client plus a double-SHA256 nonce grind, around 20 KH/s, grounded in the open-source NerdMiner_v2 (credit where it is due, that project is the reference for the mining core).
- Core 0: WiFi, the PC-push receiver, the display, and the RPG.
A lot of the firmware was generated by multi-agent Claude Code workflows: parallel design, then architecture, then module generation, then adversarial review, and finally I integrated it and tested it on real hardware. The dead-screen debugging was the human-in-the-loop part; the framebuffer grind was where the agents earned their keep.
Two screens, and every number is real
A short tap on the single button flips between them.
Screen 1: CLAUDE USAGE
Claude-branded, warm dark background, coral/clay accents, cream numerals. The centerpiece is a burn-rate gauge whose mascot is Clawd, a coral crab, EATING money. Faster dollar-per-hour burn makes him chomp faster, with denser dollar bills flying into his mouth. Around him: this-5h-window / this-week / Fable-5 token counts, current window spend, and live CPU / GPU / RAM / VRAM bars.
Screen 2: CLAWD: CRYPTO DUNGEON
A retro RPG idle auto-battler. Clawd is an evolving crab/lobster hero grinding a crypto dungeon, and the point is that every stat maps to something real:

- Lifetime tokens = character LEVEL, across 6 evolution tiers (Egg, all the way up to Cyber Ascendant).
- Claude dollar-per-hour burn = ATTACK power.
- Live mining hashrate = MANA.
- A real mining SHARE = a CRITICAL hit plus loot.
- Clearing a foe = descend a floor (depth climbs, foes rotate).
- Finding an actual Bitcoin BLOCK = a LEGENDARY full-screen boss-kill takeover.
- Long-press the button = an ULTIMATE nuke.

It plays itself, off my real usage and my real mining. Nothing on that screen is a fake progress bar. It is a face for my idle compute.
Here is what it actually looks like running:
The honest twist: yes it mines Bitcoin, no it will never pay off
This is the part I refuse to fudge.
This board mines real Bitcoin, solo, into the real network. And it will effectively never find a block. It grinds around 20 KH/s (software SHA256; with hardware SHA it could reach roughly 56 to 78 KH/s, and I may do that later) against a network sitting near 700 EH/s. The odds of ever hitting a block are astronomically, comically tiny, "not in many lifetimes" tiny.
So why run it? Because the ticket costs almost nothing. The board sips about half a watt. It is a near-free lottery ticket, and its real job is to give idle compute a face and sit on my desk as a pet. The value is the dashboard and the pet, not profit. I am not going to tell you this earns money, because it does not.
(I also looked at mining on my PC's RTX 3060 Ti and rejected it. After electricity, GPU mining here is net-negative. Not worth it, so I did not do it.)
One more honest note, on the dollar figures. The Claude usage dollars on Screen 1 are "API-equivalent" value: what that usage WOULD cost at pay-per-use API pricing. On a flat subscription I do not actually pay those numbers. So when the crab is furiously eating hundreds of "dollars" an hour, nobody is actually spending hundreds of dollars an hour. It is a way to visualize how much work the assistant is doing, priced as if I were paying per call.
Want to build your own?
The whole thing is open source at github.com/ppcvote/ClawdMiner (MIT). Firmware, the PC pusher, wiring, and flash steps are all in there.
One honest caveat first: these cheap yellow boards are no-name clones, and the same model from a different batch can be wired to different pins (which is the whole reason this post exists). So "follow along" means use my method to find YOUR board's pins, not copy my numbers. If your screen comes up black too, the repo includes the way to find them.
To buy a board: search "ESP32-S3 NerdMiner", "ESP32-S3 1.9 lottery miner yellow", or "T-Display-S3 clone". They show up on AliExpress, Shopee, Taobao, usually for a few dollars. Look for a yellow PCB, an ESP32-S3-WROOM-1, a 1.9" color screen, a single USB-C, and two buttons.
To build it: git clone the repo, follow the README to erase the factory firmware with esptool and pio run -t upload, fill in secrets.h (your WiFi and your own Bitcoin mainnet address), then install ccusage and run the pusher on your PC. All of it is documented.
And if you got this far and thought "that is a lot, and I am not sure I can": that is fine, I can do it for you. I will source a board, flash it, set up your WiFi and wallet address, and ship it, or we can talk custom. Just order or reach out through ultralab.tw.
What it is now
A retired novelty is now three things at once: a live Claude Code usage dashboard, a self-playing crypto dungeon that runs on my real numbers, and an honest, almost-free Bitcoin lottery ticket that doubles as a desk pet.
The stack, for anyone who wants to build one:
- ESP32-S3-WROOM-1 (16MB flash, 8MB PSRAM)
- ST7789 1.9" 170x320, landscape
- PlatformIO + Arduino framework, Arduino_GFX, FreeRTOS dual-core
ccusagefor the usage data, pushed from the PC over WiFi- NerdMiner_v2 as the mining-core reference
- MIT licensed
If you take one thing from this, take the debugging lesson, not the crab. A night of tireless brute-force lost to a single photo of physical evidence. And an AI that misattributes its own success can iterate itself all the way away from an answer it already had. Sometimes the smartest move is not another script. It is turning the board over and looking at the back.