Virtual ASIC miner simulator with a lightweight HTTP API.
Goals:
- Run many simulated miners in a single process
- Provide realistic-ish dynamics (hashrate ramp, thermal inertia, auto fan control, share/error behavior)
- Stay product-agnostic (no app-specific references)
docs/USAGE.md
If you use AxeBench/AxeLive and want each simulated miner to be discoverable as a device (/api/system/* on per-miner ports):
- enable
--publish-miners - see
docs/USAGE.md, section "AxeBench compatibility" for required fields and troubleshooting
- Create a venv and install:
python -m venv .venv
.\.venv\Scripts\python -m pip install -U pip
.\.venv\Scripts\pip install -e ".[api]"- Run an API server:
virtual-asic-miner serve --host 0.0.0.0 --port 8086 --count 3 --model bm1370_4chipIf you want each miner to look like a separate device, publish a device-style API on a unique port for each miner:
virtual-asic-miner serve --host 0.0.0.0 --port 8086 --count 3 --publish-miners --publish-start-port 8091To create a mixed-voltage fleet (5V and 12V), cycle models:
virtual-asic-miner serve --port 8086 --count 3 --models bm1370_1chip_5v,bm1366_6chip,bm1370_4chip --publish-miners --publish-start-port 8091The repo includes a React UI under ui/ (Vite).
Build it:
cd ui
npm install
npm run buildServe it:
virtual-asic-miner serve --ui --port 8086 --count 3 --publish-miners --publish-start-port 8091Open: http://127.0.0.1:8086/ui/
- Reference API:
GET /v1/miners,POST /v1/miners,GET /v1/miners/{id}/telemetry,PATCH /v1/miners/{id}/config - Optional compatibility API:
GET /api/system/info,PATCH /api/system,POST /api/system/restart - Publish mapping:
GET /v1/published