# {{project_name}} — environment
LEAFMESH_LICENSE_KEY=
OPENAI_API_KEY=
ANTHROPIC_API_KEY=
REDIS_HOST=localhost
REDIS_PORT=6379
REDIS_PASSWORD=
# n8n workflow in front of your PSA / HRIS (Kantata, Workday,
# SuccessFactors…) — serves forecast / utilisation / skills modes
PSA_WEBHOOK_URL=
PSA_WEBHOOK_TOKEN=
# MCP server exposing bench / opportunities / skills as tools for
# candidate_screening_agent. Uncomment its `mcp:` block in config.yaml AFTER
# setting the URL (the SDK rejects an empty-URL http mcp at load). DEV: the
# dev-store tools in agency/tools.py serve screening day-0.
PSA_MCP_URL=
PSA_MCP_TOKEN=
# n8n workflow in front of your PSA / BI weekly bench report
BENCH_REPORT_WEBHOOK_URL=
BENCH_REPORT_WEBHOOK_TOKEN=
# n8n workflow that WRITES the human-approved staffing assignment to your
# PSA (person → project → dates → allocation%). Consumed by
# agency/allocation_booker_agent.py — inert until set; DEV records the
# booking in agency/_shared/store.py so the approve → book chain runs day-0.
PSA_BOOKING_WEBHOOK_URL=
PSA_BOOKING_WEBHOOK_TOKEN=
# Manager SUPERVISOR escalation webhook (PagerDuty or other) — inert while empty.
PAGER_WEBHOOK=
# Where human-gate notifications are POSTed IF you switch the human members to
# `human_interface: webhook`. Optional (they ship as `default` / shared inbox).
HITL_OUTBOUND_URL=
# Local SQLite ledger that mints + stores the per-survey ESAT salt
# (consumed by agency/esat_survey_agent.py). Optional — defaults to
# ./logs/esat_anonymisation.db. The salt never enters mesh state.
ESAT_LEDGER_DB=
LEAFMESH_ENV_TOKEN=development
