MILFORD_CONFIG. The default is milford.config.yaml.
Environment variables
${NAME} inside any string is replaced from the environment, so the file holds no secrets. The server refuses to start and lists every variable that is not set.
Keys
object[]
List of
{ file, id? }. file is a flow JSON path relative to the config file. id overrides the id inside the file.object[]
List of channels. Each needs
id, type (slack, telegram or webhook) and flow. Slack and Telegram channels also need an allow list. Webhook channels need a secret.object[]
Other MCP servers that
mcp nodes can call over Streamable HTTP. Each has id, url and optional headers.object
The MCP server (
milford-mcp). Keys: expose (flow ids exposed as tools, empty by default), transport (stdio or http, default stdio), host (default 0.0.0.0), port (default 8090), auth.tokens (required for http beyond localhost).number
default:"8080"
Listen port.
string[]
default:"[]"
Accepted bearer tokens. With none configured, the API is open and the server logs a warning.
number
default:"60000"
Per-run timeout in milliseconds. The timeout aborts every in-flight
fetch and provider call of the run.number
default:"64"
Runs allowed at once, across the API, the MCP server and the channels. Further runs are rejected: the API answers
503 with Retry-After: 1, an MCP tool returns an error result, a webhook answers 503, and a chat channel replies “Busy, try again shortly.”number
default:"600000"
How long a successful run is kept for
Idempotency-Key replays. See enterprise integration.number
default:"1000000"
Largest accepted request body. Larger requests get
413.Validation at startup
The server compiles every flow before it listens. It reports unknown providers, providers that lack a needed capability, invalid node configs, cycles and unknown node types, and exits without serving.Logging and shutdown
The server writes one JSON line to stdout for each finished run, with the flow id,ok, runId and duration in milliseconds. On SIGTERM or SIGINT it stops accepting connections and lets in-flight runs finish. It exits after 10 seconds even if a run is still going.
JSON Schema
The package@milfordai/config ships the JSON Schema of the config file as milford.config.schema.json. Point your editor’s YAML language server at it for completion. See installation.