TODOΒΆ
Verify in a swarm cluster that the
force_bridgeupstream actually reaches the gateway: openresty resolveshost.docker.internalto the host gateway, whilesvc-ai-litellmpublishes{{ DOCKER_BIND_HOST }}:8081:4000. On a real hostDOCKER_BIND_HOSTis127.0.0.1, and the assumption is thatdocker stack deploydrops the bind IP from the short port syntax and publishes on all interfaces via the routing mesh. If that assumption fails, publish the gateway port in host mode (long syntax) or give openresty alitellmconsumer flag instead.Disable/prune path:
provides: litellm_uimakesexpand_service_tokens('web-app-litellm')expand toservices.litellm_ui.*, so disabling the UI role does not clear itsservices.litellmconsumer contract; the gateway stays force-loaded until that flag is flipped manually or the expander learns about redirected consumer contracts.Persona flows:
PERSONA_ADMINISTRATOR_BLOCKED/PERSONA_BIBER_BLOCKEDstay set because the shared persona helper needs a DOM logout control the Control UI does not expose. The administratorβs SSO round-trip is covered bytest-oidc-login.jsinstead. Unblock the helper once the UI gains a logout affordance.SSO user cap: LiteLLM refuses SSO above 5 rows in
litellm_usertablewithoutLITELLM_LICENSE(litellm/proxy/management_endpoints/ui_sso.pyatv1.77.3-stable). Wire a licence variable, or pin the UI to the administrator, before a sixth person needs the UI.