Integrations

Ways into and out of other systems — credentials plus how to use them.

How a duty uses one

By name, never by pasted secret. A step says {"integration": "notifications", "to": "ben"} and the runner resolves it at the moment it fires — so what this box can reach is decided here, once, and every duty inherits exactly that and no more. A code step that names a door is handed $INTEGRATION_BASE_URL and $INTEGRATION_SECRET for that one door and nothing else.