Documentation

Organization roles and project protection

Control organization access with four roles and protect critical projects from Editor configuration changes without interrupting runtime traffic or Playground testing.

ModelRiver has four organization membership roles. These roles are separate from users.role, which grants access to the system administration panel.

CapabilityOwnerAdminEditorViewer
Read organization projectsYesYesYesYes
Create, update, archive, or delete projectsYesYesNoNo
Change project settings or protectionYesYesNoNo
Edit project resourcesAll projectsAll projectsUnprotected onlyNo
Test workflows in PlaygroundAll projectsAll projectsAll projectsNo
Retry webhook deliveries or delete sessionsAll projectsAll projectsUnprotected onlyNo
Modify a protected projectYesYesNoNo
Manage members, invitations, and organization settingsYesNoNoNo
Manage billing and plansYesNoNoNo

There are no project membership assignments. An Editor can edit resources in every unprotected project in the organization.

Project protection

projects.protected_at is nullable. A non-null timestamp means the project is protected. Only an organization Owner or Admin can set or clear it.

For Editors, protection blocks these explicitly enumerated console and control-plane mutations:

  • API keys and project provider credentials
  • workflows and structured outputs
  • webhook configuration and delivery retries
  • session deletion

Editors can test workflows and reconnect to existing Playground runs even when a project is protected. Viewers cannot run Playground tests in any project. Playground access does not grant Editors permission to save workflow or project changes.

Protection does not stop normal runtime execution authenticated by project API keys or internal workers. Runtime session updates, request logging, usage and budget accounting, callbacks, and other operational state continue normally. API-key-authenticated webhook configuration endpoints are control-plane APIs and reject mutations while a project is protected.

Role management

Only the Owner can invite, resend or cancel invitations, remove members, or change roles. Assignable roles are Admin, Editor, and Viewer. The Owner role cannot be assigned, changed, or removed through the member API.

Team membership management is available on paid plans. On the free plan, an organization remains single-member. In the Console, open the organization menu and select Team members to invite a member or change an existing member's role. New invitations default to Editor.

Existing member rows are migrated to editor. Application authorization temporarily recognizes the legacy value during a rolling deployment, but new invitations and role changes cannot create it.

Protection management

An Owner or Admin can open a project, select Settings, and use the Project protection section to protect or unprotect it. Editors and Viewers cannot change protection or other project settings.

Enforcement

Server-side checks are authoritative. The project response includes a permissions object for UI presentation, but clients must not treat hidden controls as authorization. Global provider and model catalog mutations require the separate system-admin role (users.role == :admin).