https://github.com/block/proto-fleet
Proto Fleet. Mining management software. Evolved.
https://github.com/block/proto-fleet
Last synced: 8 days ago
JSON representation
Proto Fleet. Mining management software. Evolved.
- Host: GitHub
- URL: https://github.com/block/proto-fleet
- Owner: block
- License: apache-2.0
- Created: 2026-03-26T12:34:13.000Z (2 months ago)
- Default Branch: main
- Last Pushed: 2026-05-25T19:23:09.000Z (9 days ago)
- Last Synced: 2026-05-25T21:24:36.960Z (9 days ago)
- Language: TypeScript
- Homepage: https://docs.proto.xyz
- Size: 6.23 MB
- Stars: 28
- Watchers: 0
- Forks: 6
- Open Issues: 73
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
- Codeowners: CODEOWNERS
- Security: SECURITY.md
- Governance: GOVERNANCE.md
- Agents: AGENTS.md
Awesome Lists containing this project
README
Proto Fleet
Mining management software. Evolved.
No fees. No training. Full control.
Open source fleet management for bitcoin miners.
**Proto Fleet** is open-source fleet management software for bitcoin miners. It helps operators pair devices, monitor telemetry, and manage mining infrastructure without giving up control. Built with React and TypeScript clients, Go services, Connect RPC, Protocol Buffers, and TimescaleDB. For architecture details, see [docs/architecture.md](docs/architecture.md).
## Install
Proto Fleet deploys into Docker on Linux and macOS, or into WSL2 on Windows.
### Linux and macOS
Requires Docker and Docker Compose. On macOS (and Windows via Docker Desktop), enable host networking under **Settings → Resources → Network → Enable host networking**. See [deployment-files/README.md](deployment-files/README.md) for the full prerequisites.
#### Latest Version
```bash
bash <(curl -fsSL https://fleet.proto.xyz/install.sh)
```
#### Specific Version
```bash
bash <(curl -fsSL https://fleet.proto.xyz/install.sh) v0.1.0
```
#### Uninstall
```bash
bash <(curl -fsSL https://fleet.proto.xyz/uninstall.sh)
```
If Proto Fleet was installed in a non-default location, pass it explicitly:
```bash
bash <(curl -fsSL https://fleet.proto.xyz/uninstall.sh) --deployment-path /path/to/install/root
```
### Windows
Requires Windows 10 (build 19041 or newer) or Windows 11 (x64), local Administrator access, and virtualization enabled in BIOS/UEFI. Docker Desktop is **not** required — the installer enables WSL2, installs an Ubuntu distro and Docker Engine inside it, and deploys Proto Fleet at `~/proto-fleet` within the distro.
`installer.exe` is not standalone. It resolves the deployment payload from files packaged alongside it in the release bundle, so you need to download and extract the full bundle before running it. Windows is supported on x64 only.
1. Go to the [latest release](https://github.com/block/proto-fleet/releases/latest) and download `proto-fleet--amd64.tar.gz`.
2. Extract the archive. From PowerShell:
```powershell
tar -xzf proto-fleet--amd64.tar.gz
```
Or right-click the file in File Explorer and choose **Extract All**.
3. Open the extracted `deployment\install\` folder and double-click `installer.exe`.
The installer self-elevates via UAC. If it has to enable Windows features for WSL, it may prompt for a reboot and then resume automatically.
#### Uninstall
Run `uninstall.exe` from the `deployment\install\` folder of the bundle you extracted during install. If you no longer have it, re-download and extract the latest release bundle and use the `uninstall.exe` inside it.
For Windows installer/uninstaller build and test details, see [`deployment-files/windows/README.md`](deployment-files/windows/README.md).
## Supported Hardware
Per-device feature support.
- **✅** — supported and tested.
- **❌** — not supported.
- **🟡** — supported by [asic-rs](https://github.com/256foundation/asic-rs), but not yet tested on this combination.
ManufacturerProtoMicroBTBitmainCanaanBitaxeNerdAxeePICAuradine
Model lineRigWhatsMinerAntminerAvalonMinerBitAxeNerdAxeePICAuradine
FirmwareProtoOSStockStockVNishePICBraiins OSLuxOSMarathonStockAxeOSStockStockStock
Telemetry✅✅✅✅✅✅✅🟡✅🟡🟡🟡🟡
Reboot✅✅✅✅✅✅🟡🟡🟡🟡🟡🟡🟡
Pause/Resume✅✅✅✅✅✅🟡🟡🟡🟡🟡🟡🟡
Edit Pools✅✅✅✅🟡✅🟡🟡🟡🟡🟡🟡🟡
FW Update✅❌✅❌🟡❌❌❌❌❌❌❌❌
Power Mode✅✅✅✅🟡❌🟡🟡🟡🟡🟡🟡🟡
Cooling Mode✅❌❌❌🟡❌❌❌❌❌❌❌❌
Update Password✅❌✅❌❌❌❌❌❌❌❌❌❌
Download Logs✅❌✅❌❌❌❌❌❌❌❌❌❌
Blink LED✅✅✅✅✅✅🟡🟡🟡🟡🟡🟡🟡
## Powered by asic-rs
Multi-manufacturer miner support in Proto Fleet is built on top of [asic-rs](https://github.com/256foundation/asic-rs), a Rust library from the [256 Foundation](https://github.com/256foundation) that abstracts discovery, monitoring, and control across ASIC miner vendors and firmwares. It is the reason the 🟡 cells above exist at all: every new vendor or firmware that asic-rs learns to speak is one that Proto Fleet can drive with no extra plugin work.
If you work on miner firmware or operate a heterogeneous fleet, go give them a star. Upstream contributions to asic-rs flow straight back into Proto Fleet via the [`plugin/asicrs/`](plugin/asicrs/) plugin.
## Local Development
### Prerequisites
- Docker and Docker Compose
- [Hermit](https://cashapp.github.io/hermit/) (recommended) — activates the full toolchain. For a manual tool setup, see [CONTRIBUTING.md](CONTRIBUTING.md).
### Initial Setup
```bash
source ./bin/activate-hermit
just setup
```
To install Git hooks after your toolchain is ready:
```bash
just install-hooks
```
For `lefthook` and Ruff hook prerequisites and `go.work` guidance, see [CONTRIBUTING.md](CONTRIBUTING.md).
### Start Development
```bash
just dev
```
This starts the Go backend with Docker Compose and the Vite dev server for ProtoFleet at http://localhost:5173.
#### LAN access
The Go backend is already reachable on your LAN at `http://:4000` because the container publishes `4000:4000` and binds to `0.0.0.0`. The Vite dev server, however, binds to localhost (loopback) by default.
To expose the client to other devices on your network (e.g. test the UI from a phone), **don't run `just dev`** — it would start the default localhost-bound Vite server. Start the backend and the LAN-bound client separately instead:
```bash
# Terminal 1 — backend only
cd server && just dev
# Terminal 2 — client bound to all interfaces
cd client && npx vite --mode protoFleet --host 0.0.0.0
```
Then browse to `http://:5173/` from any device on the same network. If you run the second command alongside `just dev`, Vite will detect that 5173 is busy and fall back to 5174 while the original localhost-only instance keeps holding 5173, so LAN access still fails.
Only do this on networks you trust. The dev server serves unminified source and proxies requests to your backend, so anyone reachable on the network can hit both. On macOS, you may also see a firewall prompt the first time Node binds to `0.0.0.0`.
### Protocol Buffer Code Generation
After modifying definitions in `proto/`, regenerate generated clients and server code:
```bash
just gen
```
## Contributing
See [CONTRIBUTING.md](CONTRIBUTING.md) for development workflows and contribution guidelines. Project standards and community expectations are documented in [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md), [GOVERNANCE.md](GOVERNANCE.md), and [SECURITY.md](SECURITY.md).
## License
This project is licensed under the Apache 2.0 License. See the [LICENSE](LICENSE) file for details.