| ## My TurboVision Miner (local workspace) | |
| This folder is **your miner package** (code + weights) that will be uploaded to your Hugging Face model repo and deployed to Chutes. | |
| ### What you edit | |
| - **`miner.py`**: your main engine (frame batch → boxes + keypoints) | |
| - **`chute_config.yml`**: hardware + pip installs for your Chutes runtime | |
| - **Model files**: put your weights/checkpoints in this folder too (e.g. `*.pt`, `*.onnx`, `*.safetensors`) | |
| ### The contract (must match) | |
| Your `miner.py` must contain: | |
| - `class Miner` | |
| - `__init__(self, path_hf_repo: Path)` to load weights from this folder | |
| - `predict_batch(self, batch_images, offset, n_keypoints) -> list[TVFrameResult]` | |
| Each returned `TVFrameResult` must include: | |
| - `frame_id: int` | |
| - `boxes: list[{x1,y1,x2,y2,cls_id,conf}]` | |
| - `keypoints: list[(x,y)]` of length `n_keypoints` (pad missing with `(0,0)`) | |
| ### Deploy (from the turbovision repo root) | |
| 1) Ensure `.env` has your keys: | |
| - `HUGGINGFACE_USERNAME`, `HUGGINGFACE_API_KEY` | |
| - `CHUTES_USERNAME`, `CHUTES_API_KEY` | |
| - (optional for on-chain) `BITTENSOR_WALLET_COLD`, `BITTENSOR_WALLET_HOT` | |
| 2) Upload + deploy + (optionally) commit on-chain: | |
| ```bash | |
| cd /home/pudge/Desktop/Score/turbovision | |
| source .venv/bin/activate | |
| sv -vv push --model-path /home/pudge/Desktop/Score/turbovision/my_miner_repo | |
| ``` | |
| ### First smoke test (after deploy) | |
| Hit your Chutes `/health` and `/predict` endpoints (you’ll get the chute slug in deploy logs). | |