CODI Security Guide

CODI is built for environments with strict security and compliance requirements. This guide summarises safeguards, configuration options, and operational recommendations.

1. Security Model

  1. Rules-first rendering – Only vetted templates generate Dockerfiles; LLM output cannot introduce arbitrary instructions.
  2. Air-gap enforcement – Outbound HTTP(S) requests are blocked by default via core.security.enforce_airgap_guard.
  3. Non-root containers – Both Slim and Complete images run as user codi (UID/GID 1000).
  4. Deterministic artefacts – Every optimisation persists inputs, outputs, metrics, and environment metadata for auditing.
  5. Policy allowlistspatterns/rules.yml enumerates instructions that require explicit rationale (e.g., curl, package managers).

2. Air-Gap Controls

Testing Air-Gap Configuration

AIRGAP_ALLOWLIST="testserver" python -m pytest tests/test_security.py

3. Container Hardening

Control Description
Non-root user Dockerfiles create codi user and switch away from root before running application code.
Minimal packages Slim image installs only runtime dependencies; Complete image adds compiler toolchain solely for llama.cpp build stage.
/work volume Host project mounted explicitly, preventing accidental context leakage.
Health checks Containers expose /healthz endpoints to integrate with orchestrators.

4. Template Safeguards

5. LLM Safety

6. Secrets Handling

7. Compliance Artifacts

8. Operational Recommendations

Area Guidance
Network Run containers within private subnets; expose ports via ingress with TLS termination.
Logging Forward logs to central system; redact project paths if needed.
Storage Store runs/ on encrypted volumes; set retention policies.
Access control Restrict who can run Complete container with adapters to prevent unauthorised model use.
Policy review Regularly audit patterns/rules.yml allowlists and CMD rewrites.

9. Incident Response

  1. Identify problematic run using timestamped directory.
  2. Review report.md, metrics.json, and environment.json for context.
  3. Check docker logs (containers) or CLI output for security warnings.
  4. If LLM involved, inspect llm_metrics.json to confirm adapter and ranking details.
  5. Reproduce issue in isolated environment before applying fixes.

10. Testing Security Controls