Snider/Mining

GoLang Miner management with restful control

★ 1Forks 0CGitHub ↗Compare

README

Mining

CI Release Go Version Angular GoDoc Go Report Card codecov License: EUPL-1.2 Platform Docs

A modern, modular cryptocurrency mining management platform with GPU support, RESTful API, and cross-platform desktop application.

Mining Dashboard

Features

Supported Algorithms

Algorithm Coin CPU GPU (OpenCL) GPU (CUDA)
RandomX Monero (XMR) ✅ ✅ ✅
KawPow Ravencoin (RVN) ❌ ✅ ✅
ETChash Ethereum Classic (ETC) ❌ ✅ ✅
ProgPowZ Zano (ZANO) ❌ ✅ ✅
Blake3 Decred (DCR) ✅ ✅ ✅
CryptoNight Various ✅ ✅ ✅

Core Capabilities

  • Multi-Algorithm Mining: Support for CPU and GPU mining across multiple algorithms
  • Dual Mining: Run CPU and GPU mining simultaneously with separate pools
  • Profile Management: Save and switch between mining configurations
  • Real-time Monitoring: Live hashrate, shares, and performance metrics
  • RESTful API: Full control via HTTP endpoints with Swagger documentation
  • Web Dashboard: Embeddable Angular web component for any application
  • Desktop Application: Native cross-platform app built with Wails v3
  • Mobile Responsive: Touch-friendly UI with drawer navigation
  • Simulation Mode: Test the UI without real mining hardware

Why Mining Platform?

Feature Mining Platform NiceHash HiveOS Manual XMRig
Open Source ✅ ❌ ❌ ✅
No Fees ✅ ❌ (2%+) ❌ ($3/mo) ✅
Multi-Algorithm ✅ ✅ ✅ ❌
GUI Dashboard ✅ ✅ ✅ ❌
Profile Management ✅ ❌ ✅ ❌
Dual Mining ✅ ❌ ✅ ❌
Desktop App ✅ ❌ ❌ ❌
Embeddable Component ✅ ❌ ❌ ❌
Self-Hosted ✅ ❌ ❌ ✅
Simulation Mode ✅ ❌ ❌ ❌

Mining Software

Manages installation and configuration of:

  • XMRig - High-performance CPU/GPU miner (RandomX, CryptoNight)
  • T-Rex - NVIDIA GPU miner (KawPow, Ethash, and more)
  • lolMiner - AMD/NVIDIA GPU miner (Ethash, Beam, Equihash)
  • TT-Miner - NVIDIA GPU miner (Ethash, KawPow, Autolykos2)

Quick Start

Docker (Fastest)

# Run with Docker - no dependencies required
docker run -p 9090:9090 ghcr.io/snider/mining:latest

# Access the dashboard at http://localhost:9090

CLI

# Install
go install github.com/Snider/Mining/cmd/mining@latest

# Start the API server
miner-ctrl serve --host localhost --port 9090

# Or use the interactive shell
miner-ctrl serve

Web Component

<script type="module" src="./mbe-mining-dashboard.js"></script>
<snider-mining api-base-url="http://localhost:9090/api/v1/mining"></snider-mining>

Desktop Application

Download pre-built binaries from Releases or build from source:

cd cmd/desktop/mining-desktop
wails3 build

Architecture

Mining/
├── cmd/
│   ├── mining/              # CLI application (miner-ctrl)
│   └── desktop/             # Wails desktop app
├── pkg/mining/              # Core Go package
│   ├── mining.go            # Interfaces and types
│   ├── manager.go           # Miner lifecycle management
│   ├── service.go           # RESTful API (Gin)
│   └── profile_manager.go   # Profile persistence
├── miner/                   # Standalone C++ mining tools
│   ├── core/                # CPU/GPU miner binary
│   ├── proxy/               # Stratum proxy for farms
│   ├── cuda/                # CUDA plugin for NVIDIA
│   └── README.md            # Miner documentation
└── ui/                      # Angular 20+ web dashboard
    └── src/app/
        ├── components/      # Reusable UI components
        └── pages/           # Route pages

Standalone Miner Tools

The miner/ directory contains standalone C++ mining programs that can be used independently without the GUI:

# Build miner binaries
make build-miner

# Or build individually
make build-miner-core   # CPU/GPU miner
make build-miner-proxy  # Stratum proxy

# Run directly
./miner/core/build/miner -o pool.example.com:3333 -u WALLET -p x
./miner/proxy/build/miner-proxy -o pool.example.com:3333 -b 0.0.0.0:3333

Pre-built binaries are available from Releases. See miner/README.md for full documentation.

API Reference

Base path: /api/v1/mining

Method Endpoint Description
GET /info System info and installed miners
GET /miners List running miners
POST /miners/:name Start a miner
DELETE /miners/:name Stop a miner
GET /miners/:name/stats Get miner statistics
GET /profiles List saved profiles
POST /profiles Create a profile
PUT /profiles/:id Update a profile
DELETE /profiles/:id Delete a profile
POST /miners/:name/install Install miner software

Swagger UI: http://localhost:9090/api/v1/mining/swagger/index.html

Development

Prerequisites

  • Go 1.24+
  • Node.js 20+ (for UI development)
  • CMake 3.21+ (for miner core)
  • OpenCL SDK (for GPU support)

Build Commands

# Go Backend
make build              # Build CLI binary
make test               # Run all tests (Go + C++)
make dev                # Start dev server on :9090

# Miner (C++ Binaries)
make build-miner        # Build miner and proxy
make build-miner-all    # Build and package to dist/miner/

# Frontend
cd ui
npm install
npm run build           # Build web component
npm test                # Run unit tests

# Desktop
cd cmd/desktop/mining-desktop
wails3 build            # Build native app

Configuration

Mining profiles are stored in ~/.config/lethean-desktop/mining_profiles.json

Example profile:

{
  "id": "uuid",
  "name": "My XMR Mining",
  "minerType": "xmrig",
  "config": {
    "pool": "stratum+tcp://pool.supportxmr.com:3333",
    "wallet": "YOUR_WALLET_ADDRESS",
    "algo": "rx/0"
  }
}

Contributing

We welcome contributions! Please read our Code of Conduct and Contributing Guidelines first.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

See CONTRIBUTORS.md for the list of contributors.

License

This project is licensed under the EUPL-1.2 License - see the LICENSE file for details.

Acknowledgments

  • XMRig - High performance miner
  • Wails - Desktop application framework
  • Angular - Web framework
  • Gin - HTTP web framework
  • Cobra - CLI framework

Contributors

Snidergoogle-labs-jules[bot]dependabot[bot]Copilot

Issues