Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.blindference.xyz/llms.txt

Use this file to discover all available pages before exploring further.

Quickstart

Get a Blindference node running and earning in under 5 minutes.

Prerequisites

  • Python 3.10 or higher
  • pip (Python package manager)
  • A terminal with internet access
  • No GPU required for mock inference

Step 1: Install

pip install blindference-node
For GPU-accelerated local inference (optional):
pip install "blindference-node[gpu]"

Step 2: Initialize

blindference-node init
This smart command checks your environment first:
  1. Detects env vars — if BLF_PRIVATE_KEY is set, auto-imports wallet (no prompt)
  2. Detects GPU — checks for NVIDIA GPU and vLLM availability
  3. Detects API keys — if GROQ_API_KEY or GOOGLE_API_KEY set, includes cloud models
  4. Prompts only what’s missing — wallet creation, password, API keys
  5. Saves configuration — writes ~/.blindference/config.json

Example Output

============================================================
  Blindference Node — Initialisation
============================================================

  → BLF_PRIVATE_KEY found in environment, importing wallet …
  Node address : 0xdDef3Cf5A4d0A6404Bc084D74de3E2c0d6147dA5

Detecting GPU …
  GPU          : NVIDIA GeForce RTX 4090
  VRAM         : 24.0 GiB
  Tier         : 0
  Models       : facebook/opt-125m

  Cloud API keys detected:
    • Groq   : ✓
    • Gemini : ✓

Running determinism self-test …
  Determinism self-test PASSED

Configuration saved to ~/.blindference/config.json

============================================================
  Initialisation complete!
  Address      : 0xdDef3Cf5A4d0A6404Bc084D74de3E2c0d6147dA5
  Tier         : 0
  Models       : facebook/opt-125m, groq:llama-3.3-70b-versatile, gemini:gemini-2.5-flash
  Attestation  : mock
  Cert expiry  : 604800
============================================================
  NEXT STEPS
  ──────────────────────────────────────────────────────────
  1. Set cloud API keys (if no GPU):
     echo 'GROQ_API_KEY=gsk_...' > ~/.blindference/.env
     echo 'GOOGLE_API_KEY=AI...' >> ~/.blindference/.env
  2. Run attestation:
     blindference-node attest --mock
  3. Start the node:
     blindference-node run
  ============================================================

Step 3: Attest Your Node

Before running, you must attest your node with the ICL:
# Interactive attestation (choose mock or TEE)
blindference-node attest

# Or skip interactive menu and use mock directly
blindference-node attest --mock

# Or with custom development key
blindference-node attest --mock --tee-key mydevkey

Interactive Attestation Flow

Attestation type:
  [1] Mock (development)
  [2] TEE / TPM (production)
Select [1]:
  • Option 1 (Mock): Uses weloveblindference key — fastest, no hardware needed
  • Option 2 (TEE): For production hardware attestation (SGX/TDX/TPM)

On-Chain Registration (Optional)

After ICL attestation, the CLI asks:
Do you want to register on-chain? [Y/n]:
  → Gas estimate : 487,231 units
  → Est. cost    : 0.000058 ETH
  → Send registration transaction? [Y/n]:
Mock/development tiers can skip this. Production tiers require it.

Example Output

============================================================
  Blindference Node — Attestation
============================================================
  Node address : 0xdDef3Cf5A4d0A6404Bc084D74de3E2c0d6147dA5
  Attestation  : mock (development)
  Challenge ID : 5c4f336c-0b17-478c-90dc-26c7378170c6
  Cert hash    : 0xc5ebc8e0bf4e4e12a623831a6fdd52d4
  Expiry       : 1779419149
  ICL tier     : 0
  Final tier   : 0

Attestation saved to ~/.blindference/config.json
============================================================
  Attestation complete!
============================================================

Step 4: Start the Daemon

blindference-node run
Enter your keystore password when prompted. The daemon starts three concurrent loops:
LoopFrequencyPurpose
ICL HeartbeatEvery 60sProves liveness to ICL (free REST call)
On-Chain HeartbeatEvery 10 daysProves liveness to NodeRegistry (gas tx)
Attestation WatchdogEvery 10minAuto-re-attests if certificate expires within 6h
Assignment PollerEvery 5sPolls ICL for pending inference jobs

Example Output

============================================================
  Blindference Node Daemon
============================================================
  Address : 0xdDef3Cf5A4d0A6404Bc084D74de3E2c0d6147dA5
  Tier    : 0
  Models  : facebook/opt-125m, groq:llama-3.3-70b-versatile, gemini:gemini-2.5-flash
  Cert    : expires in 604663s

[INFO] Daemon starting ...
[INFO] Heartbeat sent to ICL
[INFO] No assignments for last 60s
[INFO] Heartbeat sent to ICL
[INFO] Received 1 assignment(s)
[INFO] Spawning leader job 0xabc123...
[INFO] Job 0xabc123: starting as leader
[INFO] Job 0xabc123: claimed
[INFO] Downloaded prompt blob from IPFS
[INFO] Decrypted prompt key via CoFHE
[INFO] Running inference via Groq...
[INFO] Inference complete. Result hash: 0xdef456
[INFO] Storing output key for user...
[INFO] Submitting leader result to ICL
[INFO] Leader result accepted

Step 4: Verify

Check that your node is registered:
curl -s http://127.0.0.1:9000/v1/nodes/active | python3 -m json.tool
You should see your node address in the active nodes list.

Next Steps

Configuration

Customize node settings, models, and endpoints

Attestation

Learn about attestation tiers and hardware requirements