Skip to main content

Local Setup Guide

This is the canonical local startup guide for Decision Engine.

Prerequisites

  • Docker 20+
  • Docker Compose v2+
  • Git 2+
Required for source runs:
  • Rust 1.85+
  • PostgreSQL or MySQL
  • Redis
  • just — required for PostgreSQL source runs (just migrate-pg); MySQL can use diesel migration run directly

Runtime Tracks

Decision Engine supports two local tracks:
  1. Published-image track — pull existing images.
  2. Local-build track — build images or binaries from the current source tree.
Default tags used in this repo:
  • DECISION_ENGINE_TAG=v1.4
  • GROOVY_RUNNER_TAG=v1.4

Docker Compose Profiles

You must pass at least one profile.

Core runtime profiles

Dashboard profiles

Optional profiles

Fastest Bring-Up

One-Command Local Dev

For local source-run development with the full PostgreSQL analytics stack:
For the full end-to-end regression gate owned by the Cypress branch:
That command runs:
  • source-run validation through oneclick.sh
  • Docker Compose validation through dashboard-postgres-local
  • the full Cypress API/UI/docs smoke contract against both modes
Mode-specific entrypoints:
This flow:
  • starts PostgreSQL, Redis, Kafka, ClickHouse, and the analytics init jobs with Docker Compose
  • waits for infra health
  • runs PostgreSQL migrations
  • starts the API locally with cargo run --no-default-features --features postgres
  • starts the dashboard locally with Vite on http://localhost:5173/
By default, Ctrl+C stops the local API/dashboard processes and any infra services that oneclick.sh started itself. To keep infra running after exit:

API Only

API + Dashboard + Docs

With Monitoring

Make Targets

Common wrappers:

Analytics Bootstrap

The Kafka to ClickHouse analytics path is bootstrapped automatically.
  • Kafka topics are created by kafka-init
  • ClickHouse loads analytics SQL from clickhouse/scripts/ on first boot
  • analytics data is stored in the named Docker volume clickhouse-data
  • normal restarts keep analytics history intact
If you need a clean analytics rebuild, use:
That removes the ClickHouse analytics volume and recreates the Kafka + ClickHouse analytics stack.

Source Build And Run

PostgreSQL

MySQL

Docker Builds Without Compose

Example container run:

Helm

Chart location: helm-charts/
Use helm dependency update, not helm dependency build — the committed Chart.lock digest can drift out of sync with Chart.yaml, and build fails hard on any mismatch (Error: the lock file (Chart.lock) is out of sync with the dependencies file). update re-resolves and re-fetches the postgresql, mysql, and redis subcharts from the Bitnami repo unconditionally. For image overrides, use image.repository, image.version, and image.pullPolicy. Verify with helm install --dry-run or helm template before applying to a cluster.

Verification

Expected response:
Dashboard profiles also expose:
  • Dashboard: http://localhost:8081/dashboard/
  • Docs: http://localhost:8081/introduction
  • API examples: http://localhost:8081/api-refs/api-ref
Monitoring profile also exposes:
  • Prometheus: http://localhost:9090
  • Grafana: http://localhost:3000

Troubleshooting

Recreate a profile with clean volumes

Inspect migration jobs

Inspect analytics infrastructure

Check the ClickHouse schema directly:

Common Next Files To Inspect

  • docker-compose.yaml
  • config/docker-configuration.toml
  • src/config.rs
  • src/app.rs