GoLang Miner management with restful control
- SEC-MED-3: Add CSRF protection middleware for browser requests - RESIL-MED-8: Add request timeout middleware (30s default) - API-MED-7: Add Cache-Control headers for appropriate endpoints - Update CORS to allow X-Requested-With header 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> |
||
|---|---|---|
| .claude | ||
| .github | ||
| .playwright-mcp | ||
| cmd | ||
| docs | ||
| miner | ||
| pkg | ||
| site-docs | ||
| ui | ||
| .coderabbit.yaml | ||
| .gitignore | ||
| .goreleaser.yaml | ||
| AGENTS.md | ||
| CHANGELOG.md | ||
| CLAUDE.md | ||
| CODE_OF_CONDUCT.md | ||
| CONTRIBUTORS.md | ||
| docker-compose.p2p.yml | ||
| Dockerfile.node | ||
| go.mod | ||
| go.sum | ||
| LICENSE | ||
| Makefile | ||
| mkdocs.yml | ||
| MKDOCS_SETUP.md | ||
| openapi-3.json | ||
| qodana.yaml | ||
| README.md | ||
Mining
A modern, modular cryptocurrency mining management platform with GPU support, RESTful API, and cross-platform desktop application.
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
│ └── desktop/ # Wails desktop app
├── pkg/mining/ # Core Go package
│ ├── mining.go # Interfaces and types
│ ├── manager.go # Miner lifecycle management
│ ├── service.go # RESTful API (Gin)
│ ├── xmrig.go # XMRig implementation
│ └── profile_manager.go # Profile persistence
├── miner/core/ # Modified XMRig with algorithm support
│ └── src/
│ ├── backend/opencl/ # OpenCL GPU kernels
│ ├── backend/cuda/ # CUDA GPU kernels
│ └── crypto/ # Algorithm implementations
└── ui/ # Angular 20+ web dashboard
└── src/app/
├── components/ # Reusable UI components
└── pages/ # Route pages
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
# Backend
make build # Build CLI binary
make test # Run tests with coverage
make dev # Start dev server on :9090
# Frontend
cd ui
npm install
npm run build # Build web component
npm test # Run unit tests (36 specs)
# Desktop
cd cmd/desktop/mining-desktop
wails3 build # Build native app
# Miner Core (GPU support)
cd miner/core
mkdir build && cd build
cmake .. -DWITH_OPENCL=ON -DWITH_CUDA=ON
make -j$(nproc)
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.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - 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.