chore: remove obsolete files and add Solidity build artifacts to .gitignore - Add ignore patterns for Solidity build artifacts (typechain-types, artifacts, cache) - Remove unused exchange mock API server (api/exchange_mock_api.py) - Remove obsolete client-web README placeholder - Remove deprecated marketplace-ui HTML implementation ```
4.0 KiB
4.0 KiB
Miner Node – Task Breakdown
Status (2026-01-24)
- Stage 1: ✅ IMPLEMENTED - Core miner package (
apps/miner-node/src/aitbc_miner/) provides registration, heartbeat, polling, and result submission flows with CLI/Python runners. Basic telemetry and tests exist. - Host GPU Miner: ✅ DEPLOYED - Real GPU miner (
gpu_miner_host.py) running on host with RTX 4060 Ti, Ollama integration, and systemd service. Successfully processes jobs and generates receipts with payment amounts.
Recent Updates (2026-01-24)
Host GPU Miner Deployment
- ✅ Deployed real GPU miner on host with NVIDIA RTX 4060 Ti (16GB)
- ✅ Integrated Ollama for LLM inference across 13+ models
- ✅ Configured systemd service (
aitbc-host-gpu-miner.service) - ✅ Fixed miner ID configuration (REDACTED_MINER_KEY)
- ✅ Enhanced logging with flush handlers for systemd journal visibility
- ✅ Verified end-to-end workflow: job polling → Ollama inference → result submission → receipt generation
Performance Metrics
- Processing time: ~11-25 seconds per inference job
- GPU utilization: 7-20% during processing
- Token processing: 200+ tokens per job
- Payment calculation: 11.846 gpu_seconds @ 0.02 AITBC = 0.23692 AITBC
- Receipt signature: Ed25519 cryptographic signing
Integration Points
- Coordinator API: http://127.0.0.1:18000 (via Incus proxy)
- Miner ID: REDACTED_MINER_KEY
- Heartbeat interval: 15 seconds
- Job polling: 3-second intervals
- Result submission: JSON with metrics and execution details
Stage 1 (MVP) - COMPLETED
-
Package Skeleton
- ✅ Create Python package
aitbc_minerwith modules:main.py,config.py,agent.py,probe.py,queue.py,runners/cli.py,runners/python.py,util/{fs.py, limits.py, log.py}. - ✅ Add
pyproject.tomlorrequirements.txtlisting httpx, pydantic, pyyaml, psutil, uvloop (optional).
- ✅ Create Python package
-
Configuration & Loading
- ✅ Implement YAML config parser supporting environment overrides (auth token, coordinator URL, heartbeat intervals, resource limits).
- ✅ Provide
.env.exampleor sampleconfig.yamlinapps/miner-node/.
-
Capability Probe
- ✅ Collect CPU cores, memory, disk space, GPU info (nvidia-smi), runner availability.
- ✅ Send capability payload to coordinator upon registration.
-
Agent Control Loop
- ✅ Implement async tasks for registration, heartbeat with backoff, job pulling/acking, job execution, result upload.
- ✅ Manage workspace directories under
/var/lib/aitbc/miner/jobs/<job-id>/with state persistence for crash recovery.
-
Runners
- ✅ CLI runner validating commands against allowlist definitions (
/etc/aitbc/miner/allowlist.d/). - ✅ Python runner importing trusted modules from configured paths.
- ✅ Enforce resource limits (nice, ionice, ulimit) and capture logs/metrics.
- ✅ CLI runner validating commands against allowlist definitions (
-
Result Handling
- ✅ Implement artifact upload via multipart requests and finalize job state with coordinator.
- ✅ Support failure reporting with detailed error codes (E_DENY, E_OOM, E_TIMEOUT, etc.).
-
Telemetry & Health
- ✅ Emit structured JSON logs; optionally expose
/healthzendpoint. - ✅ Track metrics: running jobs, queue length, VRAM free, CPU load.
- ✅ Emit structured JSON logs; optionally expose
-
Testing
- ✅ Provide unit tests for config loader, allowlist validator, capability probe.
- ✅ Add integration test hitting
mock_coordinator.pyfrom bootstrap docs.
Implementation Status
- Location:
apps/miner-node/src/aitbc_miner/ - Features: Registration, heartbeat, job polling, result submission
- Runners: CLI and Python runners with allowlist validation
- Resource Management: CPU, memory, disk, GPU monitoring
- Deployment: Ready for deployment with coordinator integration
Stage 2+ - IN PROGRESS
- 🔄 Implement multi-slot scheduling (GPU vs CPU) with cgroup integration.
- 🔄 Add Redis-backed queue for job retries and persistent metrics export.
- 🔄 Support secure secret handling (tmpfs, hardware tokens) and network egress policies.