OpenJCockpit

Security considerations

OpenJCockpit’s repository ships a local development stack. It is designed to support governed AI software engineering, but the stack as shipped is not production-hardened, has not been independently security-assessed or certified, and must not be deployed to a shared, internet-facing or production environment without your own security assessment and hardening.

To report a vulnerability, follow the security policy (private GitHub vulnerability reporting, not public issues).

Local-only credentials and secrets

Every credential below is a publicly known, local-testing-only seed value. Never reuse any of them in CI, staging or production. Replace all of them in any shared environment.

What Where Notes
Keycloak master admin admin / admin docker-compose.yml Bootstrap admin.
Realm users tony, koen, ricky (Welkom01!), e2e (E2eRunner01!) infrastructure/keycloak/openjcockpit-realm.json, seed scripts Passwords are intentionally plaintext in the realm import. See Authentication.
LiteLLM master, salt, virtual, A2A and ai-control keys; admin UI ricky / Welkom01! .env.example, docker-compose.yml See LLM providers.
Keycloak service-client secrets (openjcockpit-a2a, openjcockpit-ai-control, openjcockpit-git-mcp) .env.example, docker-compose.yml  
SPEC_QUEUE_RUNNER_TOKEN_SECRET docker-compose.yml Public placeholder; set your own (at least 32 bytes) outside local use.
ENCRYPTION_SECRET / ENCRYPTION_SALT (ai-control-service) docker-compose.yml Encrypts stored Git credentials; the defaults are placeholders.
A2A_SERVICE_ENCRYPTION_SECRET / _SALT .env.example, docker-compose.yml Encrypts secrets of A2A services added in the dashboard. Changing them makes stored secrets unreadable.
Database users and passwords (PostgreSQL keycloak/keycloak, openjcockpit_app, embabel_app, litellm_app) docker-compose.yml, infrastructure/postgres/  
Mock marketplace API key dev-mock-marketplace-key infrastructure/mock-skills-marketplace/nginx.conf Opt-in overlay only.

Rotating LITELLM_SALT_KEY invalidates every credential already encrypted in LiteLLM’s database; see infrastructure/litellm/README.md.

High-impact local-development postures

Authorization model

Data sent to LLMs

Destructive operations

docker compose down -v deletes every named volume, including databases, the Keycloak realm, LiteLLM state, workflow definitions, both audit trails and Git workspaces. The repository’s operating rules require explicit permission before such a destructive volume action. See Runbooks.

Before any shared or production deployment

At a minimum:

  1. Replace every seeded credential, secret, salt and key, and remove seeded users.
  2. Remove the docker-socat Docker daemon proxy and choose an isolated job execution model.
  3. Put authentication in front of, or remove network reachability to, git-mcp-server, OPA and the LiteLLM admin UI. Serve embabel-agent-runtime and embabel-agent-service over HTTPS when they run on different hosts, and give their Keycloak clients real secrets.
  4. Replace the default OPA policy with your organization’s rules and decide on role-based authorization for workflow starts and approvals.
  5. Review LLM data flows against your data-protection requirements.
  6. Address the items in Known limitations.

This list is a starting point, not a complete hardening guide.