Skip to main content

Local development

Atlas runs locally with Docker Compose. The frontend and backend can also run on the host against the compose-managed data services for a faster edit loop.

Prerequisites

  • Docker + Docker Compose
  • Node.js ≥ 18 (frontend)
  • Python 3.11+ (backend, if running on host)
  • A populated .env (copy from .env.example)

Bring up the stack

cp .env.example .env # then fill in secrets (see Configuration)
docker compose up -d # full stack
docker compose ps # verify services are healthy
docker compose logs -f osint-api

docker-compose.dev.yml provides a lighter/dev-oriented overlay; the base docker-compose.yml brings up the full set of services (API, UI, Postgres, Neo4j, Redis, MinIO, Keycloak, Temporal, Langfuse).

Run the frontend on the host

cd frontend
npm install
npm run dev # Vite dev server, proxies /api and /realms

The Vite dev server proxies /api to the backend and /realms, /resources to Keycloak so auth stays same-origin. The HMR client port is configurable via VITE_HMR_CLIENT_PORT when running behind Docker port mapping. See Frontend architecture.

Migrations

Flyway runs automatically when the stack starts. To inspect or re-run:

docker compose logs flyway # see migration output
docker compose run --rm flyway info # current schema version & pending

Migrations live in migrations/ (130+ versioned scripts). The active ontology is published into ontology_schema_versions by a companion migration and checked for drift in CI.

Verifying the system is up

curl -s localhost:${API_PORT:-8000}/health # liveness
curl -s localhost:${API_PORT:-8000}/health/ready # readiness (deps initialised)

Open the supporting UIs:

UIDefault
Atlas Consolethe configured UI_PORT
Temporal UIthe temporal-ui service
Keycloak adminKEYCLOAK_PORT
LangfuseLANGFUSE_PORT
MinIO consolethe MinIO console port
Pre-flight

Before running tests or starting servers, check whether instances are already running so you don't start duplicates. Always run test suites in the background.

Tests

# Backend (pytest)
pytest -q # see pytest.ini

# Frontend (Vitest)
cd frontend && npm run test

See Reference → Environment variables for the full .env surface and Configuration for what each group controls.