Read-only · Go · oat.ink

Fleet dashboard for ASIC miners

Compact table, filters, miner detail, and live charts built for a wall monitor with 20+ miners. Stable identity across DHCP, SQLite history that survives restarts, discover on your LAN, stay read-only.

  • Subnet discovery
  • Stable miner identity
  • Best / session share
  • Live metrics & charts
  • SQLite history
  • Docker Hub images
  • No write controls
hasherdash dashboard showing live hashrate chart, filters, and fleet table for Bitaxe and Nerdaxe miners
Live fleet view — filters, multi-series charts (including hashrate by type), and per-miner status at a glance.

Built for ops walls

See the whole fleet without logging into each miner. Designed for dark rooms and glanceable status.

Discover & poll

Scan CIDRs, ranges, or fixed IPs. Known miners stay in the fleet until TTL, re-polled on a configurable interval.

Stable identity

Track each box by distinctive hostname, then MAC, serial, or IP. DHCP address changes keep one row and continuous chart history.

Filter the noise

Search by IP, host, model, or serial. Narrow by brand, firmware, algo, status, hashrate, temps, power, chips, efficiency, and best / session share.

Live charts

Per-miner hashrate, temps, wattage, efficiency, chips, and best / session share — plus hashrate by type (avg/min/max). Gaps break lines instead of bridging outages. Windows from 4h to 7d.

SQLite history

Metric samples land in a local SQLite file so charts survive restarts. Departed miners stay on charts until retention ages them out (default 7 days).

Miner detail

Select a row for boards, fans, pools, and best / session share without leaving the dashboard. Chart legends prefer hostname labels over raw IDs.

Read-only by design

No restart, pool, or power controls in the UI. Safe to leave up on a shared monitor.

Simple deploy

Pull adamdecaf/hasherdash from Docker Hub (or build locally). Compose bind-mounts ./data so the metrics DB is at ./data/hasherdash.db.

Quick start

Docker is the fastest path. Published images: adamdecaf/hasherdash (tag 1.2.0 or latest). Host networking lets the container scan your LAN.

1

Start with Compose

mkdir -p data
# optional: MINER_SUBNET=192.168.1.0/24
docker compose up -d
# upgrade later: docker compose pull && docker compose up -d
2

Or pull and run

mkdir -p data
docker pull adamdecaf/hasherdash:1.2.0
docker run --rm --network host \
  -e MINER_SUBNET=192.168.1.0/24 \
  -e SQLITE_PATH=/app/data/hasherdash.db \
  -v "$PWD/data:/app/data" \
  adamdecaf/hasherdash:1.2.0
3

Open the UI

open http://localhost:8080
Config file instead of env
cp hasherdash.example.yaml hasherdash.yaml
# edit subnets under:
#   subnets:
#     - 192.168.1.0/24

mkdir -p data
docker run --rm --network host \
  -v "$PWD/hasherdash.yaml:/app/hasherdash.yaml:ro" \
  -v "$PWD/data:/app/data" \
  -e CONFIG_FILE=/app/hasherdash.yaml \
  -e SQLITE_PATH=/app/data/hasherdash.db \
  adamdecaf/hasherdash:1.2.0
Build from this checkout
mkdir -p data
docker compose up -d --build
# or: make docker && docker run … hasherdash:latest