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

Viewer

Viewer at a project, a team or the org. A stakeholder, product manager, support engineer or auditor: reads the dashboard, the request log and the configuration, changes nothing that belongs to anyone else. Two things are the viewer’s own, and the product should let them manage both: their account (profile, preferences, second factor) and their view of the data (the filters they keep coming back to).

Goal: “I can see what I am responsible for, in the shape I need it, and keep that shape — without being able to break anything.”

Dogfood account: viewer@rolter.local, viewer at project default/default. finops@rolter.local is an org-level viewer for comparison. See dogfood data.

The observer watches: refused_click in ui_events. A viewer reaching for a disabled control is fine once — reaching for it twice means the screen did not say clearly enough that it is read-only.

V1 — see the project

#stepwhereexpectstatus
V1.1sign inlogin screenthe dashboard for project default/defaultbug — #1846
V1.2traffic, spend and latencyObservability → Dashboardthe project’s numbers onlyverified
V1.3a request in detailLLM Logs → a rowstatus, tokens, cost, target; the bodies say they are hidden for the viewer roleverified
V1.4the bodies too, where the project allows ita project admin turns on Viewers can read captured payloadsthe same row now shows the request and the responseverified (#1820)

V2 — own the account

#stepwhereexpectstatus
V2.1set a display name and a bio—others see the name; the bio says who to ask about whatgap — #1823
V2.2enrol a second factorSettings → My Virtual Keys → Two-factor authenticationTOTP and recovery codes, same as any roleverified (as a member, E10.4)

V3 — preferences

#stepwhereexpectstatus
V3.1switch the dashboard languagethe language pickerthe whole dashboard in Russian — remembered in this browser onlypartial — #1824
V3.2land on the right scope on a new laptopthe scope switcherthe last scope, from the server rather than localStoragepartial — #1824

V4 — read the configuration without changing it

#stepwhereexpectstatus
V4.1which models, routes and strategies existModel Catalog, Routing Rulesreadable; every edit, delete and toggle disabled, naming the role it needsbug — #1846 (no project in scope, so the screen refuses)
V4.2which keys exist and what they may reachGovernance → Virtual Keysnames, prefixes, allow-lists; never a secretbug — #1846
V4.3which budgets and limits applyBudgets & Limitsreadable, not editablebug — #1846
V4.4who may do whatGovernance → Roles & Permissionsthe published matrix, including this session’s analytics, request_payload, provider_health and project_settings rowsbug — #1846 (the API publishes all four rows)

V5 — keep my own view

#stepwhereexpectstatus
V5.1save “errors on gpt-4o this week” as a named filter—one click back to it on any browsergap — #1825
V5.2the saved filter is mine alone—nobody else sees it; it never widens what I can readgap — #1825