Who needs it
The roles Stream is built for, and what each one can actually do here.
What a team member can reach in Stream is governed by team-access grants — a separate,
Account Platform-owned mechanism (app/core/team_access.py; see
Boundaries). This page describes what each role
does once they're in, not how the grant is configured.
| Role | Comes here for |
|---|---|
| Workspace owner | Everything — connecting platforms, keys, scenes, automation |
| Team member | Watching the live preview, closing their own preview session |
| Trafficker | Nothing — Stream has no surface for this role |
| Platform operator | Provisioning the motor box, outside the admin panel entirely |
Workspace owner
Most of Stream's configuration surface is explicitly marked owner-only in its own
source: stream_camera.py, stream_studio.py, stream_native.py, stream_login.py,
stream_targets.py, stream_cockpit.py, and stream_overlay.py all say so directly in
their module docstrings. In practice, that's everything an owner would do to set a
stream up and run it:
- Connect platforms and manage keys. Chaturbate's Events API token, or a captured browser session for the webcam sites — see Connect Chaturbate and Connect a webcam platform.
- Choose fan-out targets and layouts. Which platforms actually receive the stream, and whether each gets the wide or vertical frame.
- Build and edit scenes. Layers, captions, the viewer counter, landing-page objects on air, per-platform overrides.
- Run the cockpit. Go live, start/stop recording, turn on auto-live, rotate the stream key.
- Set native platform settings. Room title, category, and tags shown on the platform's own page, separate from what's drawn in the frame.
Team member
The endpoints that read live status and chat — stream_hub.py, stream_scene.py,
stream_ingest.py, and stream_door_admin.py — don't carry the same owner-only marker,
and two of them (the door's live-preview WHEP endpoints) are explicitly gated by
team_fence rather than an owner check. In practice, a team member's day in Stream is
narrow:
- Watch the live preview. The same WebRTC preview the cockpit shows, proxied
through
/stream/door/whepand/stream/hub/preview/{path}. - Close their own viewing session when they're done, without needing owner rights.
Not the same as chat moderation elsewhere
Stream's merged chat composer (/stream/hub/chat/send) lets whoever can reach it
reply as the creator across every connected platform — check the current team-access
grant for the account before assuming a team member has this open by default.
Trafficker
Stream has no code surface for this role at all — a trafficker's work is smart links, domains, and traffic sources, all of which live in Link. See Boundaries.
Platform operator
Provisioning the motor — the browser-session box that captures webcam-platform logins
and drives chat for platforms without an official API — is an operator action outside
the admin panel: app/products/stream/scripts/stream_motor_provision.py, run by hand
against the running box, not exposed as a panel screen for any role.
What's next
Concepts — the vocabulary Stream's own screens and this section assume you already know.