Skip to main content

User & access management

This page explains the controls that VIKTOR has to manage access to data and logic. These are divided into three categories: environment, app, and app instances.

App vs. app instance

An app contains only the logic — the code that defines the tool. It has no data and no users, and is created and maintained by developers.

An app instance is a running copy of an app that users open and work in. It holds the data, the users, and the access settings (such as visibility and permissions). A single app can have multiple app instances — for example, one per project or team. (App instances were previously known as workspaces.)

Environment access​

Access to the environment can be setup in two ways:

Environment rights​

Each user has two access attributes that determine the role they have. The possible combinations, together with their name are listed below. The tables below show the permissions for each role.

Access levelDeveloper accessRole
UserInternal user
User✓Internal developer
AdminAdmin user
Admin✓Admin developer
External userExternal user
External user✓External developer

✓ Allowed. ✕ Not allowed.

User management​

PermissionExternal userExternal developerInternal userInternal developerAdmin userAdmin developer
Invite users to organization✕✕✕✕✓✓
Edit users on organization✕✕✕✕✓✓
Delete users from organization✕✕✕✕✓✓

App development​

PermissionExternal userExternal developerInternal userInternal developerAdmin userAdmin developer
See develop page✕✕✓✓✓✓
Create an app✕✕✕✓✓✓
Publish new app version✕✓ if maintainer✕✓ if maintainer✕✓
Change live versions✕✓ if maintainer✕✓ if maintainer✕✓
Manage app details✕✓ if maintainer✕✓ if maintainer✓✓
Archive an app✕✕✕✓ if maintainer✓✓
Access and share test app✕✕✓✓✓✓

Integrations​

PermissionExternal userExternal developerInternal userInternal developerAdmin userAdmin developer
Create and manage (OAuth) integrations✕✕✕✕✓✓
Create and manage organizational workers✕✕✕✕✓✓
Create and manage personal workers✕✓✓✓✓✓

Browsing apps​

PermissionExternal userExternal developerInternal userInternal developerAdmin userAdmin developer
See library page✕✕✓✓✓✓
Set app visibility to public✕✕✕✕✓✓
Can visit public app URL✓✓✓✓✓✓

Projects​

PermissionExternal userExternal developerInternal userInternal developerAdmin userAdmin developer
Access internal project✕✕✓✓✓✓
Access private project✓ if invited✓ if invited✓ if invited✓ if invited✓✓
Create internal projects✕✕✓✓✓✓
Create private projects✕✕✓ if allowed by organization✓ if allowed by organization✓✓
Edit project details✕✕✓ if owner✓ if owner✓✓
Manage project members✕✕✓ if owner✓ if owner✓✓
Add apps to internal projects✕✕✓ if allowed by organization✓ if allowed by organization✓✓
Add apps to private projects✕✕✓✓✓✓
Add unverified apps to projects✕✕✓ if allowed by organization✓ if allowed by organization✓✓
Archive an app instance✕✕✓ if owner✓ if owner✓✓

Administrator panel​

PermissionExternal userExternal developerInternal userInternal developerAdmin userAdmin developer
View activity dashboard✕✕✕✕✓✓
Manage all apps on organization✕✕✕✕✓✓
Manage organization permissions✕✕✕✕✓✓
Create, manage, delete organization labels✕✕✕✕✓✓

Besides rights on the environment, there are more granular controls on apps and their instances.

App instance rights​

App instance rights (what a user can do when they enter the app instance) are configured using usergroups. You define what this usergroup is allowed to do and assign users to this group. The possible permissions per object type are:

categorydetailexplanation
ReadNavigateMinimum (navigation) access, excluding summary info and excluding editor access
ReadBasicMakes an object and its summary information accessible to a user, not including the editor
ReadAllGives access to all object information including the editor
WriteCreateAllows the user to create an object
WriteUpdateAllows the user to update an object
WriteRenameAllows the user to rename an object
DeleteAllows the user to delete an object

Usergroup assignment differs between internal and private app instances:

  • private app instances: users are explicitly invited to get access. During invitation, the appropriate usergroup (and thus access level) is selected
  • internal app instances: users automatically get access when they are invited to the environment. They are added to the default user group of each internal app instance. This default can be configured per app instance.

App access​

All users (except for external users/developers) can access the Library and find the applications that have been published. Here they can checkout app details and learn about the application and which developers maintain the app.

Apps are not used by users directly; these are app instances that are added to projects. The apps only contain the logic, without data and no users. Users can contact (one of) the maintainers to get access.

Internal developers and admin users can create apps. Developers are automatically assigned as the first maintainer on the app.

Managing apps happens outside of the Library. Developers manage the apps they maintain on the Develop page. Administrators manage every app in the organization from the "All apps" page in the Administrator panel.

App rights​

Only app maintainers can publish new versions of an app. They are treated as being allowed to have access to the code. This means that error reports (with tracebacks containing code) are available to them.

Publishing a version and deciding which version is live are separate actions. An app has a Testing version and a Production version, and app maintainers decide which version each line points at. See Version history.

App maintainers are not allowed to create app instances. They can use their development workspace when developing, but need explicit access to relevant app instances to get access to production data.

Agent access via MCP​

info

MCP lets users connect an external AI agent to your environment, so the agent can run VIKTOR apps on their behalf. It is currently in BETA.

What to know as an administrator:

  • Users approve the access explicitly. Agents authenticate with OAuth. After the normal VIKTOR login, a consent screen states which account is being accessed and what is granted: seeing the logged-in user, seeing the available tools, and running them. The user has to click Allow, and the access granted is short-lived.
  • Users cannot exceed their own access. Each user authenticates as themselves, and every app run is checked against their access at the moment it runs. An agent reaches exactly the apps its user already reaches. There is no separate allow-list for MCP yet, so every published app a user can access is available to their agent.
  • Agents run calculations, they do not access projects. An agent can only run an app with the inputs it supplies in that call. It cannot read data from your projects, and it cannot write data to them.
  • Your organization chooses the agent. Inputs an agent sends to an app, and the results it receives, are handled by the agent's model provider, as with any other content shared with that agent. If your organization has policies on which AI providers may process engineering data, share them with your users.