# ── Required ────────────────────────────────────────────────────────────────── # PostgreSQL connection string for activity-core application data. ACTCORE_DB_URL=postgresql+asyncpg://actcore:actcore@app-db:5432/actcore # ── Temporal ────────────────────────────────────────────────────────────────── # Temporal frontend gRPC address. TEMPORAL_HOST=temporal:7233 # Temporal namespace (must exist before workers start). TEMPORAL_NAMESPACE=default # ── NATS ────────────────────────────────────────────────────────────────────── # NATS server URL. JetStream must be enabled (-js flag). NATS_URL=nats://nats:4222 # ── Service integrations (gracefully degraded if unavailable) ───────────────── # State Hub — used by the state-hub context adapter. Binds {} on failure. STATE_HUB_URL=http://127.0.0.1:8000 # Consistency sweep engine is repo-manager (ACTIVITY-WP-0029). Default POST # still hits State Hub dual-run. Set REPO_MANAGER_URL or CONSISTENCY_SWEEP_URL # when repo-manager exposes the HTTP sweep. # REPO_MANAGER_URL= # CONSISTENCY_SWEEP_URL= # CONSISTENCY_SWEEP_PATH=/consistency/sweep/remote-all # Repo scoping — used by the repo-scoping context adapter. Binds {} on failure. REPO_SCOPING_URL=http://127.0.0.1:8020 # Issue Core — task emission backend. ISSUE_CORE_URL=http://127.0.0.1:8765 # Shared ingestion key — must match issue-core's ISSUE_CORE_API_KEY. ISSUE_CORE_API_KEY= # Sink type: 'rest' (POST to issue-core) or 'null' (discard, for dry-run). # state-hub (default, no Forgejo) | null (dry-run) | rest (issue-core opt-in) ISSUE_SINK_TYPE=state-hub # ── Ops run claim queue (ACTIVITY-WP-0026 / ACT-ADR-005) ─────────────────────── # Create claimable ops_run rows on emit_tasks (default true). Harness claims via # POST /ops-runs/claim — not issue-core / Forgejo. OPS_RUN_QUEUE_ENABLED=true # Default claim lease (seconds); heartbeat extends. OPS_RUN_LEASE_SECONDS=900 # Permanent fail after this many claims when fail+reopen is requested. OPS_RUN_MAX_ATTEMPTS=3 # Stuck open/claimed threshold for /ops/automations/status ops_runs.sla_hours OPS_RUN_SLA_HOURS=1 # Worker credential for claim/complete/fail (X-Worker-Token or Bearer). ACTIVITY_CORE_WORKER_TOKEN= # ── Activity definitions ─────────────────────────────────────────────────────── # Colon-separated paths to additional activity-definitions/ directories. # The local activity-definitions/ directory is always scanned. # Coulomb-loop kaizen engagement definitions (colon-separated for more roots). # Colon-separated roots; each must contain activity-definitions/ ACTIVITY_DEFINITION_DIRS=/home/worsch/coulomb-loop:/home/worsch/freedom-intelligence # ── Observability ───────────────────────────────────────────────────────────── # Prometheus metrics bind address (Temporal SDK metrics). PROMETHEUS_BIND_ADDR=0.0.0.0:9090 # ── Security (webhook receiver) ─────────────────────────────────────────────── # HMAC-SHA256 secret for Gitea webhook signature validation. WEBHOOK_SECRET_GITEA= # HMAC-SHA256 secret for GitHub webhook signature validation. WEBHOOK_SECRET_GITHUB= # ── Curator gate ────────────────────────────────────────────────────────────── # 'disabled': accepts active + pending event types (pending logged as warning). # 'required': only active event types accepted; pending events are discarded. ACTIVITY_CURATOR_GATE=disabled