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).
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.
docker-socat). The stack exposes the host’s Docker daemon without TLS on
the internal Compose network (port 2375, not published to the host), so ai-control-service can
start workflow containers. Every container in that network effectively has full control over the
host. Local development only; consider Docker-in-Docker or Kubernetes jobs in production.git-mcp-server has no authentication of its own. It is not published on the host and is only
reachable through LiteLLM with keys that are explicitly granted the server. Anything that can reach
it on the Compose network can use it.4100) authenticates against LiteLLM’s own credential store, not Keycloak:
a second authentication surface.8181 in the local stack, and its default policy is permissive. See
Policy enforcement.embabel-agent-service and ai-control-service include
exception messages in HTTP error responses to authenticated callers. See
Approval gates.logging.level.com.embabel.agent: DEBUG can log prompt
content; use INFO in production.SKILLS_MARKETPLACE_ALLOW_PRIVATE_EGRESS must never be set in any
deployed environment. See Skills Hub.frontend/e2e/README.md.openjcockpit-admin role (spec queue
auto-merge setting). Any authenticated user can start workflows and decide approval gates, which can
write to customer repositories through agent runs.openjcockpit-ai-control may issue git-workspace tickets, and only openjcockpit-git-mcp may fetch
workspace credentials).openjcockpit-agent-service may run agents or request drafts on
embabel-agent-runtime (/internal/v1/**), and only openjcockpit-agent-runtime may read tenant bindings,
run scopes and tool-call decisions from embabel-agent-service (/internal/agent-runtime/v1/**). Both
check the token’s azp and fail closed; the runtime denies a tool call when no policy decision can be
obtained. LLM credentials live only in the runtime. See Agent runtime.tenant_id=local).best/cheapest aliases and embeddings go to OpenAI.turn_off_message_logging,
redact_messages_in_exceptions).pii-protection guardrail checks LLM input and output for configured PII patterns; it is not a
data-loss-prevention guarantee.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.
At a minimum:
docker-socat Docker daemon proxy and choose an isolated job execution model.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.This list is a starting point, not a complete hardening guide.