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.