# {{project_name}} — environment
LEAFMESH_LICENSE_KEY=
OPENAI_API_KEY=
ANTHROPIC_API_KEY=
REDIS_HOST=localhost
REDIS_PORT=6379
REDIS_PASSWORD=
LEAFMESH_ENV_TOKEN=development

# ── Systems of record ────────────────────────────────────────────────
# DAY-0: the mesh runs end-to-end with NONE of these set — the deepened
# agents read the seeded dev store (agency/_shared/store.py). Set a URL
# only when you swap that agent's body for the live connector.
#
# Pure MCP connectors (unset → empty contract until wired):
WMS_MCP_URL=          # WMS — inventory_agent, returns_handler_agent
ERP_MCP_URL=          # ERP — replenishment_planner_agent
# PROD-swap targets for the store-grounded deepened agents (the body
# reads the seeded store until you wire these):
#   WMS_MCP_URL        — inventory_control_agent (get_cycle_count_results)
TMS_MCP_URL=          # TMS / rate API — carrier_selector_agent (PROD swap)
FLEET_API_MCP_URL=    # robot fleet API — humanoid_status_agent (PROD swap)

# ── Manager escalation targets ──
PAGER_WEBHOOK=                # webhook target (PagerDuty Events v2, ...)
SLACK_WAREHOUSE_CHANNEL=      # channel target's channel_id (the [warehouse] alert)

# Slack credentials below are fields of a `channels: {slack: {...}}` block
# (ChannelConfig). This template has no channels: block, so they are NOT
# auto-consumed — the escalation `channel` target only reads channel_id
# (SLACK_WAREHOUSE_CHANNEL). Add a channels: block to use them.
SLACK_BOT_TOKEN=
SLACK_SIGNING_SECRET=
