Tutorial

Setting Up a Miner

Download, configure, and register a miner node to contribute compute to the Elis network.

Hosted Elis AI: use Downloads and set BACKEND_URL=https://api.tryelisai.com. Self-hosted / on-prem / dedicated-only: point BACKEND_URL at your own API origin (for example http://localhost:8000) and use an organization registration token from the target cluster. Never put a path like /api on the URL — only the scheme + host (and port if needed).
1

Generate a registration token (optional)

Open the Miners page in the dashboard and click Add Miner. Copy the registration token if you want this worker reserved to your account before you paste the pairing key. You can still enroll without it; the token only helps prevent someone else from validating the same pairing key first.

Miners page with the add miner flow
2

Download the miner package

Go to Downloads and choose the Linux Docker image tarball or the Windows zip. The Windows package includes app.py, run.bat, and.env.template when shipped from this product build.

Downloads page with miner options
3

Configure environment variables

Copy .env.template to .env and set at least:

  • BACKEND_URL — API origin: https://api.tryelisai.com for production, or your self-hosted base URL.
  • MINER_BACKENDopenai, ollama, or stub.
  • MODEL_NAME — must match a model in the Elis catalog (unsupported names are rejected at enroll).
  • OPENAI_API_KEY — required when MINER_BACKEND=openai (your key; used only on your machine).
  • OPENAI_BASE_URL — optional; for OpenAI-compatible gateways.
  • OLLAMA_HOST — when using Ollama (default http://localhost:11434).
  • MINER_REGISTRATION_TOKEN — optional; from the Add Miner modal.
  • MINER_CALLBACK_URL — optional; public URL of this miner (e.g. https://your-host:8080) if the Elis backend can reach you for HTTP dispatch.
  • WORKER_ID — friendly name (defaults to hostname).
  • MINER_STATE_DIR — optional path to persist miner id + pairing key (Docker image defaults to /var/lib/elis-miner — use a volume).
  • PORT — listen port (default 8080).

OPENAI_MODEL is a legacy alias; prefer MODEL_NAME.

MINER_ENROLLMENT_SECRET is a server-side operator secret on the Elis backend. As an external miner operator you do not set it in your .env; use MINER_REGISTRATION_TOKEN from your account when you want a reservation.

Option A — Ollama (Local Models)

Ollama runs open-weight models locally — your data never leaves your machine.

1. Install Ollama

Download from ollama.com/download (macOS, Linux, Windows), then verify:

ollama --version
curl http://localhost:11434    # "Ollama is running"

2. Pull a model

# Pick one that fits your GPU VRAM
ollama pull llama3.1:8b        # ~5 GB
ollama pull deepseek-r1:14b    # ~9 GB
ollama pull phi4-mini           # ~2.5 GB
ollama pull qwen2.5:0.5b        # ~0.5 GB

ollama list                    # confirm it appears

3. Set your .env

MINER_BACKEND=ollama
MODEL_NAME=llama3.1:8b         # must match ollama list AND the Elis catalog
OLLAMA_HOST=http://localhost:11434

Docker? Use OLLAMA_HOST=http://host.docker.internal:11434 on macOS/Windows, or --network host on Linux.

Browse all supported models at ollama.com/library.

Option B — OpenAI API (Cloud Models)

No local GPU required. Get an API key from platform.openai.com.

MINER_BACKEND=openai
MODEL_NAME=gpt-5-mini          # must match the Elis catalog
OPENAI_API_KEY=sk-...           # your key — stays on your machine

# Optional: OpenAI-compatible proxy (Azure OpenAI, LiteLLM, etc.)
# OPENAI_BASE_URL=https://my-proxy.example.com/v1

Reasoning-class models (gpt-5.x, o-series) automatically use the reasoning parameter instead of temperature.

Environment variable configuration
4

Start the miner

Windows: double-click run.bat. It creates a virtual environment and installs dependencies on first run.

Linux / Docker: load the image, publish port 8080, and persist state (recommended):

docker load < elis-miner-linux-x86_64.tar.gz

docker run -d --name elis-miner \
  --env-file .env \
  -p 8080:8080 \
  -v elis-miner-state:/var/lib/elis-miner \
  elis-miner:latest

Add --gpus all when your stack supports NVIDIA Container Toolkit and you run GPU-backed models.

On startup the miner enrolls, validates MODEL_NAME, prints a pairing key, and opens a WebSocket to the backend for heartbeats and jobs. Until you paste that key in the dashboard, the miner stays in an awaiting-validation state and will not receive paid traffic.

Miner startup log showing registration
5

Validate pairing in the dashboard

Return to Miners, find the pending worker, and paste the printed pairing key into the validation field. After validation, the miner appears in your list with model, status, and heartbeat — see Managing Miners.

Miner visible in miners list
Tip:Use a volume (or host directory) for /var/lib/elis-miner in Docker so the same miner identity survives upgrades and restarts. For more context, see the Miners section in Documentation.