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:
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¶
- Architecture — System overview
- Deployment — How configuration is used during startup
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.