How an automatic router breaks terms by accident
In Agent Swarm a router picks a model endpoint for every agent request, from my own GPUs or from hosted providers, and some providers' terms forbid automated, unattended back-end use of their models. In an automatic router that rule is easy to break by accident.
I made provider terms a routing constraint in code, so compliance does not depend on whoever configures the next endpoint. The rule separates foreground use for a person from automated back-end use, because the terms draw that line.
How the router narrows
The router works over an endpoint pool that is a view joining the GPU inference nodes with the registered provider bridges, so each endpoint exists in one place and there is no second registry to fall out of sync. A request carries its role, foreground work for a person or automated back-end work, and the persona making it.
Checked twice
The terms rule runs twice: at registration and on every routing decision.
The second check costs one comparison and prevents a violation nobody would see in an unattended system, so I kept it. The rule is small; the judgment is in where it sits.
I put compliance inside the mechanism that could violate it, and I check twice where a mistake would be invisible.
The bridges that make hosted providers routable present them in the same OpenAI-compatible shape as local models, rate-limit in Redis, and register and deregister themselves. The tool side of the same runtime is told in Tools are the platform.