A user has one role per tenant. The same person can be a DEVELOPER in tenant A and a VIEWER in tenant B.

Roles

RoleForIn one line
VIEWERPeople who only look at resultsEvery screen, read-only
DEVELOPERML engineers, data staffDatasets, training, experiments, model registration, up to Staging
OPERATOROperations staffWhat DEVELOPER does + deployment, serving, alert handling, pipelines
APPROVERQuality or operations ownersView + approve or reject, promote to Production
ADMINTenant administratorsEvery permission + members, tokens, tenant settings, rollback

Permission table

PermissionWhat it allowsVIEWERDEVELOPEROPERATORAPPROVERADMIN
ViewView every screen read-only
DevelopDEVELOPER · OPERATOR · ADMINCreate training runs, log and stop runs, issue MLflow tokens
Register modelDEVELOPER · OPERATOR · ADMINRegister a run's result as a new model version
Promote to StagingDEVELOPER · OPERATOR · ADMINMove a model version between stages such as Staging and Archived
Promote to ProductionAPPROVER · ADMINRequest promotion to Production (it takes effect after approval). Taking a live Production version down also needs this permission
ApproveAPPROVER · ADMINApprove or reject promotion requests
DeployOPERATOR · ADMINDeploy and serve models, build serving images
OperateOPERATOR · ADMINOperational actions: acknowledge and resolve alerts, run and stop pipelines, delete training runs
Roll backADMINRoll a deployment back to a previous version
Write datasetsDEVELOPER · OPERATOR · ADMINCreate datasets, upload and delete files
SettingsADMINManage members, tokens and tenant settings in the admin console

Global administrator

Global administrator status is granted separately from tenant roles. It creates and deletes tenants, manages every user and uses the system console (cluster, GPUs, build cache, weights mirror, Prometheus and so on). A global administrator can access every tenant and is not subject to tenant permission checks. It is a powerful account — give it only to those who need it.

Example flow — promoting to Production

  1. A DEVELOPER trains a model; its version is registered and moved to Staging. They summarise the validation results for the approvers.
  2. An APPROVER (or ADMIN) presses Request production promotion on the model version and enters a reason. The version does not become Production yet — an approval request is created and appears under Approvals (승인).
  3. Someone with the approve permission reviews it and presses Approve: the version becomes Production and the previous Production version moves to Archived. Reject notifies the requester with the reason.

Written for the platform as of 2026-09-21.

© Geo-MLOps