Open Beta Archipelag.io is in open beta until June 2026. All credits and earnings are virtual. Read the announcement →

Native ML Runtimes

Run ONNX, GGUF, and Diffusers models natively on your Island without Docker containers

Native ML Runtimes

Islands can execute ML models natively — without Docker — using built-in runtimes for ONNX, GGUF (llama.cpp), and Stable Diffusion (candle). This eliminates container overhead and enables hardware-aware model preloading at startup.

Overview

RuntimeModelsUse CasesFeature Flag
GGUF (llama.cpp)Mistral, Llama, Qwen, GPT-OSSLLM chat, code generation--features gguf
ONNX (ort)DistilBERT, YOLO, Whisper, BLIPClassification, detection, ASR, embeddings--features onnx
Diffusers (candle)Stable Diffusion, FLUX, Wan2Image generation, video generation--features diffusers
Containers still work
Native runtimes are optional. If a runtime isn't compiled in, the Island falls back to executing the Cargo as a Docker container (the default behavior). You can mix native and container execution on the same Island.

Building with ML Support

The pre-built Island binary includes all runtimes. If building from source:

# All runtimes
cargo build --release --features all-runtimes

# Individual runtimes
cargo build --release --features gguf
cargo build --release --features onnx
cargo build --release --features "onnx,gguf"

# System dependencies (Linux)
sudo apt-get install cmake libclang-dev  # Required for GGUF

The all-runtimes feature enables onnx, gguf, and diffusers together.

Model Resolution — hf:// URIs

All native runtimes download models from HuggingFace using the hf:// URI scheme:

URI FormatBehavior
hf://TheBloke/Mistral-7B-Instruct-v0.2-GGUFAuto-discovers the model file via HuggingFace Hub API
hf://TheBloke/Mistral-7B-Instruct-v0.2-GGUF:mistral-7b.Q4_K_M.ggufDownloads a specific file

Auto-Discovery Priority

When no filename is specified, the Island queries the HuggingFace API and picks the best file:

  1. GGUF files — prefers Q4_K_M quantization, then Q4_K_S, Q5_K_M, Q8_0
  2. ONNX filesmodel.onnx or onnx/model.onnx
  3. Safetensorsmodel.safetensors (for diffusers/transformers)
  4. PyTorchpytorch_model.bin (legacy fallback)

Model Cache

Downloaded models are cached at ~/.island/model-cache/. The cache uses LRU eviction when max_cache_gb is exceeded (default: 20 GB).

[model_cache]
max_cache_gb = 50         # Increase for Islands hosting many models
cache_dir = "/data/models" # Optional: custom cache directory

Models are verified with SHA256 hashes when the Cargo specifies one. The cache persists across restarts — a cached model is never re-downloaded.

Startup Preloading

At startup, the Island automatically selects and downloads a starter set of models based on detected hardware:

HardwareRAMGPUAuto-preloaded Models
Tiny≤2 GBNone (WASM only)
Small2–8 GBQwen3.5-0.8B (600 MB)
Medium8–16 GB+ Mistral-7B (4.4 GB), DistilBERT sentiment, MiniLM embeddings
GPU8+ GB2+ GB VRAM+ Whisper Base, YOLOv8 detection
Large16+ GB8+ GB VRAM+ FLUX.1-schnell (image generation)
XL24+ GB24+ GB VRAM+ Qwen3.5-27B

Preloading runs in the background — the Island accepts jobs immediately while models download.

Configuration

[preload]
enabled = true    # Set to false to skip preloading

# Override auto-selection with specific models:
# models = [
#   "hf://TheBloke/Mistral-7B-Instruct-v0.2-GGUF",
#   "hf://openai/whisper-base"
# ]

When models is empty (default), the Island auto-selects based on the hardware tier table above. When explicit models are listed, only those are preloaded.

On-demand downloading
If a job arrives for a model that isn't preloaded, the Island downloads it on the fly. The first request for that model will be slower (download time), but all subsequent requests use the cached version.

GGUF Runtime (LLM Inference)

The GGUF runtime uses llama.cpp via Rust bindings to run large language models natively.

Supported Models

Any GGUF-format model works. The Archipelag.io Cargo catalog includes:

  • Qwen3.5 family (0.8B, 4B, 9B, 27B, 35B-A3B MoE)
  • Mistral 7B Instruct v0.2
  • Llama 3.1 8B Instruct
  • GPT-OSS 20B
  • GLM-5, MiniMax-M2.5, Nanbeige4.1-3B

How It Works

  1. The coordinator dispatches a job with runtime_type: "llmcpp" and model_url: "hf://..."
  2. The Island downloads the GGUF file (or uses the cached version)
  3. llama.cpp loads the model and creates an inference session
  4. Tokens stream back to the user in real-time via NATS

Input Format

{
  "prompt": "Explain quantum computing in simple terms",
  "max_tokens": 512
}

Or OpenAI-compatible chat format:

{
  "messages": [
    {"role": "system", "content": "You are a helpful assistant."},
    {"role": "user", "content": "What is quantum computing?"}
  ],
  "max_tokens": 512
}

Configuration

The model’s model_context_size and model_temperature are set per-Cargo in the coordinator. The Island applies temperature, top-p, and repetition penalty sampling.

ONNX Runtime (ML Inference)

The ONNX runtime uses ONNX Runtime for cross-platform ML inference.

Supported Task Types

TaskInputOutputExample Cargos
text-classification{"text": "..."}{"label": "POSITIVE", "score": 0.95}Sentiment, toxicity detection
feature-extraction{"text": "..."}{"embedding": [...], "dimensions": 384}MiniLM, BGE, Jina embeddings
object-detection{"image": "<base64>"}{"detections": [...]}YOLOv8
image-segmentation{"image": "<base64>"}{"num_classes": 21}YOLOv8-Seg, U2-Net
question-answering{"question": "...", "context": "..."}{"answer": "...", "score": 3.2}DistilBERT QA
automatic-speech-recognitionAudio inputText transcriptionWhisper, Voxtral
text-to-speech{"text": "..."}Audio outputKokoro, Chatterbox
image-to-text{"image": "<base64>"}{"text": "..."}BLIP captioning, OCR

Text tasks automatically download tokenizer.json from the same HuggingFace repo as the model.

Diffusers Runtime (Image & Video Generation)

The diffusers runtime uses candle for Stable Diffusion and similar pipelines.

Supported Models

  • Stable Diffusion 1.5, 3.5 Large
  • FLUX.1 dev and schnell
  • Z-Image-Turbo, Qwen-Image
  • Video: Wan2.1-T2V, HunyuanVideo, CogVideoX

How It Works

  1. Downloads model components from HuggingFace (tokenizer, CLIP, VAE, UNet)
  2. Encodes text prompt via CLIP
  3. Runs the diffusion loop with classifier-free guidance
  4. Decodes latents to image via VAE
  5. Returns base64-encoded PNG

Input Format

{
  "prompt": "A sunset over mountains, oil painting style",
  "negative_prompt": "blurry, low quality",
  "num_steps": 20,
  "guidance_scale": 7.5,
  "width": 512,
  "height": 512,
  "seed": 42
}

Progress events stream during generation (step 1/20, step 2/20, …).

GPU recommended
Diffusers models are compute-intensive. While they work on CPU, image generation takes several minutes without a GPU. With a GPU (8+ GB VRAM), generation takes 5–30 seconds depending on resolution and step count.

Heartbeat & Placement

The Island advertises its supported runtimes in every heartbeat:

{
  "supported_runtimes": ["container", "wasm", "llmcpp", "onnx", "diffusers"],
  "gpu_model": "NVIDIA RTX 4090",
  "gpu_vram_mb": 24576,
  "ram_mb": 32768
}

The coordinator uses this information during job placement — an ONNX job will only be dispatched to an Island that reports "onnx" in its supported_runtimes. If no capable Island is online, the job waits in the queue.

Next Steps

{% card(title="Island Setup Guide", href="/getting-started/for-hosts/") %} Install and configure the Island software on your machine.

Cargo Catalog

Browse the full catalog of available Cargos across all runtime types.

Publishing Guide

Learn how to create and publish your own Cargos.

{% end %}