Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Team lead

Admin at a team. Owns the team’s projects, the people in them, what they may call and what it costs — and nothing outside the team. Providers are the org’s: a team lead routes to them but does not add them (provider mutations take admin at the org, by design).

Goal: “my team has the models it needs, inside a budget I set, and I can see who spent what — without asking the platform team for every change.”

Dogfood account: lead@rolter.local, admin at team default (which holds the fleet’s project default). See dogfood data.

The observer watches: refused_click in ui_events — every control a team lead reaches for that is an org admin’s is a finding about what the screen offered, even when the refusal is correct.

T1 — arrive

#stepwhereexpectstatus
T1.1sign in (SSO or password)login screenthe dashboard, scoped to team defaultbug — #1846
T1.2see what the team is already doingObservability → Dashboard, LLM Logsthe team’s traffic and spend, with captured bodies (admin at the team), and nothing of other teams’verified
T1.3see what the team may callModels → Model Catalog, Routing Rulesthe routes of the team’s projectsbug — #1846 (Routing Rules refuses; the API answers)

T2 — bring the team in

#stepwhereexpectstatus
T2.1create a project for a new workstreamscope switcher + under the team · POST /api/v1/teams/{id}/projectsthe project, owned by the teamverified (API); the switcher’s + needs #1846
T2.2invite engineers as members of that projectGovernance → Users → Invite user, scope = the project, role = membera link per person; authorized at the project, so no org admin is neededworks — #2054 adds the scope picker
T2.3get the links to peopleby hand—partial — #1828
T2.4with SSO or SCIM instead, map the team’s IdP groupdone by an org admin once (platform-admin A1-b/A1-d)new joiners land in the project with no invitationworks

T3 — give the team models

#stepwhereexpectstatus
T3.1route a public model name to an existing providerRouting Rules in the team’s projectallowed: routes are project-scoped and the lead is admin above the projectverified
T3.2add a new providerModel Providers → + Add providerrefused, naming the Admin role at the org — a request to the platform teamverified (by design)
T3.3mint a shared key for the team’s serviceGovernance → Virtual Keysas platform-admin A4.2verified

T4 — keep it inside a budget

#stepwhereexpectstatus
T4.1cap the team’s monthly spendBudgets & Limits → Add budget, scope = the team · POST /api/v1/budgetsthe team’s requests get HTTP 402 once the month’s spend reaches the capverified
T4.2cap each project’s throughputAdd rate limit, scope = the projectHTTP 429 with Retry-After past the capverified
T4.3give every engineer the same personal allowance—“$50 a month each, however many keys they mint”gap — #1830
T4.4raise the budget mid-monththe budget rowbudgets cannot be edited: delete and recreate (the counter is keyed by scope, so spend so far still counts)partial
T4.5hear before the team hits the cap—a warning at 80%gap — #337

T5 — see what happened

#stepwhereexpectstatus
T5.1spend by model and by key over the monthDashboard, LLM Logs filtered by keythe team’s rows onlyverified
T5.2is an upstream the reason the team’s calls fail?Circuit Breaker, health rollupsprovider health is readable only with an org-level role — the lead sees nonegap — #1833
T5.3an alert on the team’s error rate—a rule the lead owns, over the team’s trafficgap — #1829

T6 — someone leaves

#stepwhereexpectstatus
T6.1remove their membershipGovernance → Users, the × beside the person’s role at the projectthey lose the project in the dashboard at onceworks — #1850 lists the team’s members, #2053 adds the revoke
T6.2their personal keys stop workingthe gatewaya key they minted for themselves is refusedbug — #1841
T6.3shared keys they minted as an admin keep workingthe gatewaythe team’s services do not go down because a person leftverified