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. Discover on your LAN, poll continuously, stay read-only.

  • Subnet discovery
  • Live metrics & charts
  • SQLite history
  • Docker one-liner
  • 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, 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.

Filter the noise

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

Live charts

Canvas charts for hashrate, temp, ASIC/VR temp, wattage, efficiency, and chips — with window presets from 4h to 7d.

SQLite history

Metric samples land in a local SQLite file so charts survive restarts. Retention is configurable (default 7 days).

Miner detail

Select a row for boards, fans, and pools without leaving the dashboard.

Read-only by design

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

Simple deploy

Single Docker image with asic-rs FFI baked in, or run locally with a sibling FFI build. Compose bind-mounts ./data so the metrics DB is at ./data/hasherdash.db.

Quick start

Docker is the fastest path. Host networking lets the container scan your LAN.

1

Start with Compose

mkdir -p data
docker compose up -d --build
2

Or plain Docker

make docker && mkdir -p data
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" \
  hasherdash:latest
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 \
  hasherdash:latest