> ## 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 your first Blindference node running in 5 minutes

# 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

```bash theme={null}
pip install blindference-node
```

For GPU-accelerated local inference (optional):

```bash theme={null}
pip install "blindference-node[gpu]"
```

## Step 2: Initialize

```bash theme={null}
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:

```bash theme={null}
# 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

```bash theme={null}
blindference-node run
```

Enter your keystore password when prompted. The daemon starts three concurrent loops:

| Loop                 | Frequency     | Purpose                                          |
| -------------------- | ------------- | ------------------------------------------------ |
| ICL Heartbeat        | Every 60s     | Proves liveness to ICL (free REST call)          |
| On-Chain Heartbeat   | Every 10 days | Proves liveness to NodeRegistry (gas tx)         |
| Attestation Watchdog | Every 10min   | Auto-re-attests if certificate expires within 6h |
| Assignment Poller    | Every 5s      | Polls 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:

```bash theme={null}
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

<CardGroup cols={2}>
  <Card title="Configuration" icon="gear" href="/compute/configuration">
    Customize node settings, models, and endpoints
  </Card>

  <Card title="Attestation" icon="shield" href="/compute/attestation">
    Learn about attestation tiers and hardware requirements
  </Card>
</CardGroup>
