Run the complete OpenJCockpit stack locally with Docker Compose, log in to the AI Orchestration Dashboard and run your first agent workflow.
Local development stack. Everything below starts a local, single-machine development environment with seeded, publicly known credentials. It is not a production deployment. Read Security considerations before exposing any part of it beyond your own machine.
| Requirement | Why | Notes |
|---|---|---|
| Docker with Docker Compose | Runs the stack (Keycloak, PostgreSQL, LiteLLM, OPA, the Java services and the dashboard). | Docker Desktop on macOS/Windows; Docker Engine on Linux (see the Linux warning in LLM providers). |
| Ollama on the host machine | Serves the default/coding LLM for every agent. Ollama is not part of the Compose stack. | Run ollama pull qwen3.6:27b before starting, and keep the daemon running while the stack is up. This is a large model; make sure your machine can run it. |
| An OpenAI API key | OPENAI_API_KEY is mandatory to boot the stack. The best/cheapest LLM aliases and embeddings remain OpenAI-hosted. |
Put it in .env. |
| Free host ports | 4000 (dashboard), 4100 (LiteLLM), 8080 (Keycloak), 8091 (embabel-agent-service), 9080 (ai-control-service), 8181 (OPA). |
|
| A Git repository and a GitHub token (optional for a first look) | Needed to run workflows against a real project repository. | See Git integration and the token scopes in Spec queue. |
For building and testing from source (JDK 25, Maven 3.9+, Node.js 22) see Local development.
cp .env.example .env
# edit .env and add your OPENAI_API_KEY
docker compose up --build
All other variables in .env.example are commented out and have working local defaults. The
helper script ./scripts/stack-start.sh does the same build-and-start (idempotent) and also supports
--infra-only and --with-local-marketplace; run it with --help for details.
On every docker compose up, one-shot seed containers prepare the local environment:
Keycloak realm roles, local users and the dedicated e2e user, the LiteLLM virtual keys, and the
Keycloak service clients used between services (local-seed). They are idempotent.
Health is not readiness for inference.
/actuator/healthreportsUPeven when Ollama is unreachable. The first sign of a missing model is an LLM call failing at run time. See Troubleshooting.
| URL | What |
|---|---|
| http://localhost:4000 | AI Orchestration Dashboard |
| http://localhost:8080/admin | Keycloak admin console |
| http://localhost:4100 | LiteLLM gateway admin UI (separate, non-Keycloak login) |
The app sends you automatically to the custom OpenJCockpit login page of Keycloak. After a valid
login, you are redirected to the landing hub. Log in with one of the seeded local users (for
example tony / Welkom01!, who also has the openjcockpit-admin role). All seeded users and
passwords are listed in Authentication. They are local-only credentials.
The repository’s documentation site has an illustrated tutorial (“Tutorial: your first project and workflow run”). In short:
.specify folder on its base
branch, the dashboard offers the spec-init flow, which pushes a starter template branch for review.
See Spec-driven development.What each default workflow does, and what it does not do, is described in Agents and workflows.
First workflow container run. Git-workspace jobs use the
eclipse-temurin:25-jrecontainer image, which is not pulled automatically. If a job fails to start its container, rundocker pull eclipse-temurin:25-jreonce.
| Command | Effect |
|---|---|
docker compose stop / docker compose start, or ./scripts/stack-stop.sh |
Stops and starts containers. All state is preserved. |
docker compose down (without -v) |
Removes containers. Named volumes (Keycloak, databases, LiteLLM, workflow definitions, workspaces) are preserved. |
./scripts/stack-clean-start.sh |
Scoped reset of only the workflow and workflow-group seed data, then re-imports the default workflows. Asks for typed confirmation. |
docker compose down -v |
Destructive. Deletes all named volumes: the Keycloak realm, all databases, LiteLLM keys and usage history, workflow definitions and audit trails, and Git workspaces. Use it only deliberately. See Re-importing the realm. |