Air-Gapped Deployment

What you'll accomplish: Deploy Hoziron in environments without internet access using local models (Ollama or vLLM) and offline package transfer.

Overview

Air-gapped deployments use local inference servers instead of cloud LLM providers. Packages are transferred via archive files rather than registry downloads.

Local models with Ollama

[default_model]
provider = "ollama"
model_id = "llama3.1:70b"

[providers.ollama]
base_url = "http://ollama.internal:11434"
enabled = true

# Disable cloud providers
[providers.anthropic]
enabled = false

[providers.openai]
enabled = false

Start Ollama with OLLAMA_HOST=0.0.0.0 ollama serve if Hoziron connects from a different host or container.

Local models with vLLM

[default_model]
provider = "openai"
model_id = "meta-llama/Llama-3.1-70B-Instruct"

[providers.openai]
base_url = "http://vllm.internal:8000/v1"
api_key_env = "VLLM_API_KEY"  # vLLM accepts any non-empty key
enabled = true

vLLM exposes an OpenAI-compatible API, so Hoziron treats it as an OpenAI provider with a custom base URL.

Docker networking for local models

When running both Hoziron and the inference server in containers:

services:
  hoziron:
    image: ghcr.io/hozironos/hoziron:latest
    depends_on:
      - ollama
    # ...

  ollama:
    image: ollama/ollama:latest
    ports:
      - "11434:11434"

In config.toml, reference the service name:

[providers.ollama]
base_url = "http://ollama:11434"
enabled = true

Offline package transfer

Transfer packages without network access:

# On connected machine: export a package
hoziron catalog export claims-intake --output claims-intake.tar

# Transfer the .tar file to air-gapped environment
# (USB drive, SCP over internal network, etc.)

# On air-gapped machine: import
hoziron catalog import ./claims-intake.tar

The import verifies the content hash locally — no network required.

Offline collection transfer

For larger deployments, export entire collections:

# Export all packages in a collection
hoziron collection export insurance-starter --output insurance-starter.tar

# Import on air-gapped machine
hoziron catalog import ./insurance-starter.tar

Checklist

  • Local inference server running and accessible
  • Cloud providers disabled in config
  • All required packages transferred and imported
  • Health check passes: hoziron health
  • Test an agent with a local model: hoziron chat

Next steps


Related: