Getting started / quickstart.md

Quickstart

make venvs                 # create .venv (bittensor) and .venv-fhe (concrete-ml), install cifra into both
make test                  # ruff + pytest (core unit tests; add -m fhe for concrete-ml tests)

make demo                  # optional: build a local task + optimize a recipe (no chain)

The full loop needs a chain (register on testnet/localnet first) and a published task repo. Config with no CLI flag (miner HF repo + token, task repo) goes in .env:

cp .env.example .env       # set CIFRA_HF_REPO / CIFRA_HF_TOKEN / CIFRA_TASK_REPO

--task is the HuggingFace repo the task was published to:

.venv/bin/cifra miner run     --netuid <N> --network test --wallet.name <w> --wallet.hotkey <h> \
                              --task <hf-task-repo>
.venv/bin/cifra validator run --netuid <N> --network test --wallet.name <w> --wallet.hotkey <h> \
                              --task <hf-task-repo>

The two-venv split

bittensor needs numpy 2.x; concrete-ml pins numpy 1.26.4 — they cannot share a venv. That split is also the security boundary: the validator's chain process never imports concrete-ml and never runs miner code; it shells into the isolated .venv-fhe evaluator. No module imports both bittensor and concrete-ml.