Skip to content

Configuration

All runtime configuration is defined in docker/docker-compose.yml and can be overridden via environment variables or a docker/.env file.


Environment Variables

# LLM and embedding models
OLLAMA_MODEL=smollm2:135m
OLLAMA_EMBED_MODEL=nomic-embed-text

# Test harness defaults
TARGET_QUERY="What is the refund policy?"
PAYLOAD_CATEGORY=override
TOPIC="company policies"

# Optional overrides
SYSTEM_PROMPT_FILE=           # Path to custom system prompt
COVER_TEXT_FILE=              # Path to cover text file
HEMLOCK_VERSION=latest        # hemlock binary version for harness

Service Ports

Port Service Container
8000 ChromaDB chromadb
11434 Ollama Host process
8100 LangChain langchain-rag
8101 LlamaIndex llamaindex-rag
8102 Unstructured unstructured-rag
8103 Haystack haystack-rag
8104 ColPALI colpali-rag

Docker Resources

Resource Value
Network hemlock-net (bridge)
Volume chromadb-data (persistent)
Images Built from docker/<service>/Dockerfile
ChromaDB image chromadb/chroma:0.6.3

Container Connection Details

Pipeline containers connect to shared services using:

# ChromaDB (via Docker network name)
CHROMADB_HOST: chromadb
CHROMADB_PORT: "8000"

# Ollama (via host gateway)
OLLAMA_HOST: http://host.docker.internal:11434

Overriding Configuration

Create a .env file in the docker/ directory:

# docker/.env
OLLAMA_MODEL=llama3.2:3b
OLLAMA_EMBED_MODEL=nomic-embed-text
TARGET_QUERY="What is the company vacation policy?"

Then restart the stack:

docker compose down
docker compose up -d

Updating models

After changing OLLAMA_MODEL or OLLAMA_EMBED_MODEL, make sure to pull the new model on the host first: ollama pull <model-name>


Verification

Check that all services are healthy:

# Container status
docker compose ps

# Pipeline health
for port in 8100 8101 8102 8103 8104; do
  curl -sf "http://localhost:${port}/health" | jq .
done

# Ollama models
curl http://localhost:11434/api/tags | jq '.models[].name'

Next Steps


Legacy: inventory.sh

The original Proxmox deployment stored all configuration in lab-scripts/lib/inventory.sh, including VM identity (VMID=260, IP=172.16.50.50), service versions, and port assignments. This file is still available for bare-metal deployments.