-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path.env.production.example
More file actions
45 lines (34 loc) · 3.45 KB
/
Copy path.env.production.example
File metadata and controls
45 lines (34 loc) · 3.45 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# Production profile — fail-closed hardening delta of .env.example.
# Every value here read by src/talent_ops/config.py (Settings). Prod deploys MUST
# load these; the dev defaults in config.py are deliberately fail-OPEN.
# Replace all <PLACEHOLDER> values with real per-environment secrets/URLs.
APP_ENV=production # non-dev profile marker
LOG_LEVEL=INFO # keep structured logs on
# --- Identity: reject unauthenticated callers ------------------------------
REQUIRE_AUTHENTICATED_IDENTITY=true # fail-closed: no verified OIDC identity => reject (never trust request-body tenant/role)
OIDC_ISSUER_URL=https://auth.prod.example.com/realms/talent-ops # trusted token issuer (config default is None = unverified)
OIDC_AUDIENCE=talent-ops-agent # audience the agent must be the intended recipient of
# --- Policy: OPA must be reachable and deny on failure ---------------------
OPA_URL=https://opa.prod.example.internal:8181 # when UNSET config treats OPA as a no-op ALLOW; must point at a real PDP
OPA_FAIL_CLOSED=true # OPA unreachable/errored => deny, never allow-through
# --- Egress: deny-all unless explicitly allow-listed -----------------------
EGRESS_ALLOWED_HOSTS=llm-gateway.prod.example.internal # empty set = deny-all; list only the sanctioned gateway host(s), comma-separated
# --- Workload identity: no dev default secret ------------------------------
WORKLOAD_IDENTITY_SECRET=<REPLACE_WITH_PROD_WORKLOAD_SECRET> # config default 'local-development-only' must never ship to prod
# --- LLM gateway: required + governed ---------------------------------------
LLM_REQUIRED=true # fail-closed: refuse to run if the governed LLM path is unavailable (no silent stub)
LLM_GATEWAY_URL=https://llm-gateway.prod.example.internal/v1 # route all model calls through the governed gateway (config default None)
LLM_MODEL=governed-primary # pinned governed model alias
# --- Durable resumption: Postgres checkpointer ------------------------------
CHECKPOINT_DATABASE_URL=postgresql://agent:<REPLACE>@checkpoint.prod.example.internal:5432/agent # durable checkpoints so runs resume after crash (config default None = ephemeral)
# --- Evaluation always-on signals ------------------------------------------
JUDGE_SAMPLE_RATE=0.2 # sample 20% of trajectories through the async judge (0 = judging effectively off)
CANARY_INTERVAL_SECONDS=300 # run negative canaries every 5 min (0 = canaries disabled)
# --- Kill switch: configurable per incident ---------------------------------
KILL_SWITCH_TOOLS= # comma-separated tool names to hard-disable; populate during an incident (empty = none disabled)
# --- Rate limiting ----------------------------------------------------------
RATE_LIMIT_MAX_CALLS=60 # per-window call ceiling
RATE_LIMIT_WINDOW_SECONDS=60 # rate-limit window length
# --- Observability ----------------------------------------------------------
OTEL_EXPORT_ENABLED=true # export spans/metrics in prod (config default False)
OTEL_EXPORTER_OTLP_ENDPOINT=https://otel-collector.prod.example.internal:4318/v1/traces # collector endpoint