Grassroots Technology & Design

Tech from
the ground up.

Custom firmware. Hand-built infrastructure. Visual interfaces for hardware that was never supposed to have one. We build with what exists — and we make it look like it matters.

Read the Manifesto ↓

  • Fix before replace
  • Open before closed
  • Local before cloud
  • Understand before use
  • Design is not decoration
  • Share what you grow

Technology doesn't have to come shrink-wrapped. The most powerful tools in computing history were built by people in kitchens and spare rooms — not boardrooms. That lineage is alive.

Undergroundroots is a document of that work. DIY hardware. Self-hosted infrastructure. Repurposed machines given new purpose. Solar-powered nodes humming in the dark.

We believe in the mycelium model — a distributed network with no single point of failure, where knowledge travels freely between nodes, and where every organism benefits the whole.

And the work should look like it was cared about. A firmware dashboard on a 320×170 display deserves the same design attention as a consumer product. An ASIC controller should have a UI worth staring at while it hashes.

You don't need a data centre. You need time, curiosity, and a willingness to get your hands dirty.


Recent Dispatches

All entries →
ASIC / Firmware

ZombieOS — Wringing Every Last Hash from a Retired S9

A single-board Antminer S9 with 63 BM1387 chips, a custom Braiins OS overlay, and per-chip voltage autotuning. Stage 4 complete at 7.942 V, 29 iterations, 0 slow chips. Then we rebuilt the entire UI from scratch.

ESP32 / Cluster

ClusterAxe — One Master, Eight Slaves, No Router Required

ESP-NOW peer mesh over a NerdQAxe++ master and up to 8 ZombieOS BitAxe slaves. Self-healing registration, nonce-space partitioning, auto-calibrating job intervals, and the fixes it took to keep all 8 nodes alive at once.

Go / Stratum

GoVault — Building a Solo Mining Server From the Ground Up

A full Stratum V1 server in Go — desktop app, headless edge node, and admin panel in one repo. Solo mode talks directly to your own node. Proxy mode relays to an upstream pool with per-miner pass-through. VarDiff, share validation, SQLite history, six UI themes. No pool operator. No fees.


[ project photo ]
640 × 480

ZombieOS

Target Antminer S9
Chips 63 × BM1387
Tune Voltage 7.942 V
Slow Chips 0 / 63

A custom firmware overlay on Braiins OS Legacy for a single-board S9. Per-chip voltage autotuning across 29 iterations landed at 7.942 V with every chip passing Stage 4 verification. Paired with a fully custom web UI — Vault-Tec themed, WebGL globe, live autotuner pipeline visualiser, and a bioluminescent glow that pulses when hashing. No cloud. No vendor lock-in. Just a recycled ASIC doing real work.

View on GitHub ↗

Tools of the Trade

The hardware, software, and philosophy we actually use. No sponsorships. No affiliate links.

🔵 Go 1.26 GoVault, FirePool2, edge nodes — fast binaries, no runtime
ESP-IDF 5.5.1 ClusterAxe + NerdAxe firmware — ESP32-S3 bare metal
🪙 BM1370 / BM1387 SHA-256d ASICs — GT board (ClusterAxe) and S9 (ZombieOS)
🐘 PostgreSQL Partitioned shares table, 5 materialized views, PgBouncer pool
🕸️ WireGuard Private mesh — main ↔ EU ↔ North ↔ fracpool, 15s keepalive
🐧 Ubuntu / Debian Three VPS nodes + two home servers, all headless
📡 ESP-NOW Cluster mesh — master broadcasts jobs to 8 slaves, no router needed
🌙 Braiins OS OpenWrt base for ZombieOS S9 — per-chip voltage autotune
🖥️ Wails v2 + Svelte GoVault desktop app — Go backend, Svelte UI, WebView2 shell
🌐 LVGL 8 / 9 NerdAxe display UI — embedded graphics on SPI panels
🌑 Lua ZombieOS CGI layer — stats + control scripts on OpenWrt
🔴 Redis + Nginx FirePool cache layer + reverse proxy across all 3 servers
🐍 Python 3.14 Deploy scripts, DB tooling, pexpect SSH relay to miners
🔷 C# / .NET Miningcore — custom fork powering the FirePool backend
🔗 Git + GitHub Every project version-controlled — ZombieOS, ClusterAxe, GoVault
🌍 WebGL Raw GLSL in ZombieOS dashboard globe — no library, 4 shader programs

Every Layer, Designed

The work spans firmware, web, desktop, and embedded displays — but the design thread runs through all of it. From a 128×64 OLED to a full WebGL globe built in raw GLSL, every interface gets the same care as the hardware underneath it.

Embedded UI

LVGL on SPI panels. Custom Vault-Tec image themes for NerdAxe and ClusterAxe displays. Big-endian RGB565 image pipelines. Interfaces designed for a screen smaller than a business card — and taken just as seriously.

  • NerdQAxe++ custom LVGL theme
  • ClusterAxe mining screen + EMA charts
  • CYD wireless BitAxe display

Web & Desktop

Full-stack pool dashboards with Pip-Boy config generators. A six-theme desktop mining app in Svelte and Go. A WebGL globe with Phong shading, atmosphere rim glow, and live signal arcs — written without a single graphics library.

  • FirePool — Vault-Tec pool dashboard (3 servers)
  • GoVault — 6-theme desktop app (Wails + Svelte)
  • ZombieOS — phosphor boot, WebGL globe, autotuner pipeline

IoT + Firmware

If it has a chip, it can have a personality. Custom firmware for Antminer S9 boards, ESP32-S3 cluster nodes, NerdAxe miners, and anything else with a UART and a power rail. The vendor UI is always a starting point, never the destination.

  • ZombieOS S9 — Braiins OS overlay + full custom web UI
  • ClusterAxe — ESP-NOW cluster firmware + Angular tuner
  • NerdAxe_Cluster — master/slave stratum firmware
"The interface is not a skin over the machine. It is the machine, from the user's perspective — and that perspective deserves to be beautiful."