Get started

Install & self-host

Run the Inferix control plane on your own infrastructure. Same binary and config whether you use Docker locally, Compose in staging, or Kubernetes in production.

Requirements

  • Docker 24+ or a Kubernetes cluster (1.27+)
  • Persistent volume for config and TraceForge span store (optional Postgres)
  • Network reachability to owned model endpoints and any providers
  • Outbound HTTPS if you call external providers

Docker (single node)

docker pull ghcr.io/akshantvats/inferix:latest

docker run -d \
  --name inferix \
  --restart unless-stopped \
  -p 4000:4000 \
  -e INFERIX_MASTER_KEY=sk-replace-me \
  -e INFERIX_CONFIG=/etc/inferix/inferix.yaml \
  -v /opt/inferix/inferix.yaml:/etc/inferix/inferix.yaml:ro \
  -v /opt/inferix/data:/var/lib/inferix \
  ghcr.io/akshantvats/inferix:latest

Health check: GET http://<host>:4000/health. Ready when the process has loaded models and can accept completions.

Docker Compose

# docker-compose.yml
services:
  inferix:
    image: ghcr.io/akshantvats/inferix:latest
    ports:
      - "4000:4000"
    environment:
      INFERIX_MASTER_KEY: ${INFERIX_MASTER_KEY}
      INFERIX_CONFIG: /etc/inferix/inferix.yaml
      INFERIX_POSTGRES_URL: postgres://inferix:inferix@db:5432/inferix
    volumes:
      - ./inferix.yaml:/etc/inferix/inferix.yaml:ro
      - inferix-data:/var/lib/inferix
    depends_on:
      - db

  db:
    image: postgres:15
    environment:
      POSTGRES_USER: inferix
      POSTGRES_PASSWORD: inferix
      POSTGRES_DB: inferix
    volumes:
      - pgdata:/var/lib/postgresql/data

volumes:
  inferix-data:
  pgdata:
export INFERIX_MASTER_KEY=sk-replace-me
docker compose up -d
docker compose logs -f inferix

Kubernetes sketch

apiVersion: apps/v1
kind: Deployment
metadata:
  name: inferix
spec:
  replicas: 2
  selector:
    matchLabels:
      app: inferix
  template:
    metadata:
      labels:
        app: inferix
    spec:
      containers:
        - name: inferix
          image: ghcr.io/akshantvats/inferix:1.0.0
          ports:
            - containerPort: 4000
          env:
            - name: INFERIX_MASTER_KEY
              valueFrom:
                secretKeyRef:
                  name: inferix
                  key: master_key
            - name: INFERIX_CONFIG
              value: /etc/inferix/inferix.yaml
          volumeMounts:
            - name: config
              mountPath: /etc/inferix
              readOnly: true
          readinessProbe:
            httpGet:
              path: /health
              port: 4000
            initialDelaySeconds: 5
            periodSeconds: 10
      volumes:
        - name: config
          configMap:
            name: inferix-config
---
apiVersion: v1
kind: Service
metadata:
  name: inferix
spec:
  selector:
    app: inferix
  ports:
    - port: 4000
      targetPort: 4000

Put the ConfigMap contents from your inferix.yaml. Use a Secret for the master key and any provider credentials.

Environment variables

VariableRequiredDescription
INFERIX_MASTER_KEYYesBearer token for control-plane API and /v1
INFERIX_CONFIGNoPath to inferix.yaml (default /etc/inferix/inferix.yaml)
INFERIX_LISTENNoOverride listen address (default :4000)
INFERIX_POSTGRES_URLNoPostgres for TraceForge + DriftWatch state
INFERIX_LOG_LEVELNodebug | info | warn | error
INFERIX_OTLP_ENDPOINTNoExport TraceForge spans to an OTLP collector

Volumes and data

  • /etc/inferix — config (read-only mount recommended)
  • /var/lib/inferix — local span/metrics buffer if Postgres is unset
  • Postgres (optional) — durable TraceForge spans, DriftWatch windows, FineForge job history

Upgrades

Pin image tags in production. Rolling upgrade pattern:

# Compose
docker compose pull
docker compose up -d

# Kubernetes
kubectl set image deploy/inferix \
  inferix=ghcr.io/akshantvats/inferix:1.1.0
kubectl rollout status deploy/inferix

Config compatibility

Minor versions keep inferix.yaml forward-compatible. Review release notes on the suite repo before major bumps. Drain in-flight completions before killing pods if you disable connection draining at the Service.

Glossary for control plane, policy, drift, and promote.

Core concepts →