At the Applied Education Technologies (AET) research group of the Technical University of Munich (TUM), both the applications it builds and the developers in its courses need access to large language models (LLMs). Logos provides this access, but represents users as a flat list of equally privileged Application Programming Interface (API) keys. Instructors have to create every user and key manually, cannot attribute requests to users or teams, and cannot cap capacity through budgets and rate limits. Existing gateways offer capacity control, but do not provision course teams from university-managed groups.
The goal is to provision teams via Keycloak, so instructors no longer grant developers access manually. Each team gets budgets and rate limits for its members, and controls which models they use. A developer decides whether Logos logs their request and response content. Logos splits the server between a Spring Boot web service and a Python orchestrator, with Keycloak as the identity provider. Liquibase handles database changes, and Angular provides the user interface. Automated tests and manual walkthroughs check that each requirement works as intended.
The platform has run in production without downtime since this thesis started. On first login, Keycloak creates the developer’s user account and adds them to their course team, and Logos keeps that membership synchronized with Keycloak on every later login. Other courses use a bulk import instead. Logos checks every request against its budgets, rate limits, and model permissions before it reaches a provider. It attributes usage to its key and team, and stores request and response content only with the users’ consent.
The new setup makes Logos suitable for use across more courses and projects in the research group. Broader use gives the research group more usage data, which provides a basis for studying how developers work with artificial intelligence (AI) and for planning capacity from actual demand.