InitRunner

Docker

Run InitRunner in a container without installing Python or managing dependencies. Images ship with the dashboard, all model providers, ingestion, and safety extras pre-installed.

Images

Official images are published to both registries:

RegistryImage
GitHub Container Registryghcr.io/vladkesler/initrunner:latest
Docker Hubvladkesler/initrunner:latest

Both are identical — use whichever your environment prefers.

Quick Start

One-shot prompt

docker run --rm -e OPENAI_API_KEY \
  -v ./roles:/roles \
  ghcr.io/vladkesler/initrunner:latest \
  run /roles/my-agent.yaml -p "Hello"

Interactive chat

docker run --rm -it -e OPENAI_API_KEY \
  -v ./roles:/roles \
  ghcr.io/vladkesler/initrunner:latest \
  run /roles/my-agent.yaml -i

Web dashboard

docker run -d -e OPENAI_API_KEY \
  -v ./roles:/roles \
  -v initrunner-data:/data \
  -p 8420:8420 \
  ghcr.io/vladkesler/initrunner:latest \
  ui --role-dir /roles

Open http://localhost:8420 to access the dashboard.

Docker Compose

Create a docker-compose.yml:

services:
  initrunner:
    # GHCR (default) — or use vladkesler/initrunner:latest (Docker Hub)
    image: ghcr.io/vladkesler/initrunner:latest
    # build: .   # uncomment to build from source
    ports:
      - "8420:8420"   # Web dashboard
      - "8000:8000"   # API server
    volumes:
      - ./roles:/roles
      - initrunner-data:/data
    environment:
      - OPENAI_API_KEY=${OPENAI_API_KEY:-}
      - ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY:-}
      - GOOGLE_API_KEY=${GOOGLE_API_KEY:-}
    restart: unless-stopped
    command: ["ui", "--role-dir", "/roles"]

volumes:
  initrunner-data:

Start the stack:

docker compose up -d

Building Locally

Build the image from the repository root:

docker build -t initrunner .
docker run --rm initrunner --version

Customizing extras

The default image includes dashboard, ingest, all-models, and safety. Override with a build arg:

docker build --build-arg EXTRAS="dashboard,anthropic" -t initrunner-custom .

Environment Variables

Pass API keys and configuration as environment variables:

VariableDescription
OPENAI_API_KEYOpenAI API key
ANTHROPIC_API_KEYAnthropic API key
GOOGLE_API_KEYGoogle API key
INITRUNNER_HOMEData directory inside the container (defaults to /data)

Volumes

Container PathPurpose
/rolesMount your role YAML files here
/dataPersistent state — sessions, memory, vector indexes

Ports

PortService
8000API server (initrunner serve)
8420Web dashboard (initrunner ui)

Ollama Integration

If Ollama runs on the host machine, the container cannot reach localhost. Use the Docker host gateway address in your role YAML:

spec:
  model:
    provider: ollama
    base_url: http://host.docker.internal:11434/v1

On this page