Skip to main content

Orgs, Roles, and Environments: Enterprise Administration Guide

How we organize access for enterprise customers

This document describes how Thunk.AI organizes access for enterprise customers: how organizations are structured, who administers them, and how resource environments control what AI models and business application connections are available to users.

Organizations

An organization (org) is the top-level tenant unit in Thunk.AI. Every user belongs to exactly one org. The org is the administrative boundary for:

  • User membership and roles

  • Billing and tier (SKU)

  • AI provider API keys shared across the org

  • Resource environments made available to org members

Orgs are created and managed by Thunk.AI platform administrators — enterprise customers cannot self-provision orgs directly.


The Platform Admin

The platform admin is a Thunk.AI operator-level role. It is distinct from any org-level role.

Who is a platform admin: This role is held by Thunk.AI staff and is assigned by Thunk.AI — it is not something an org or its members can request or grant.

What a platform admin can do:

Action

Description

Create an org

Provision a new named tenant

Delete an org

Remove an org entirely

Transfer org ownership

Move the owner role to a different user within the org

Change an org's billing tier (SKU)

Adjust the subscription level

List all orgs

View all tenants across the platform

Resolve any org by ID

Access any org record directly

Platform admins cannot read or control the content inside orgs (thunks, workflows, user data) unless they are also explicitly added as org members.


Org Roles: Owner and Admin

Within an org, there are two administrative roles: Owner and Admin. Both have full administrative authority over the org and its environments.

Org Owner

The org owner is the user who was designated as owner when the platform admin created the org (typically the primary enterprise contact). There is one owner per org.

What the org owner can do:

  • Everything an org admin can do (see below)

  • Transfer ownership to another org admin (via the platform admin)

Org Admin

Org admins are appointed by the owner. There can be multiple org admins.

What org admins can do:

Action

Description

Manage org membership

Add and remove participants

Appoint or remove other admins

Manage the admin roster

Add and remove AI provider API keys

Manage OpenAI, Anthropic, Google keys stored on the org

Create resource environments

Provision new environments for the org

Update and delete resource environments

Rename, reconfigure, or remove environments

Configure LLM models in an environment

Define models in the org catalog and assign or unassign them per environment

Configure MCP servers in an environment

Add or remove business application connections in each environment

Grant environment access to users

Control which org members can see and use each environment

Revoke environment access

Remove individual users from an environment


Org Roles: Participant

Participant is the standard membership role for employees in the org. Participants can use the resources (API keys, environments) that have been explicitly provisioned to them — they do not automatically gain access to everything in the org.


Resource Environments

A resource environment is a named configuration context owned by an org. It bundles together the AI models and business application connections that users and automated workflows can draw on when running thunks.

What an environment contains

Resource type

Description

AI models

Connections to LLM providers (e.g., GPT-5.1 via OpenAI or Azure, Gemini 3.5 Flash via Gemini or Vertex AI). Org admins define a model once in the org's model catalog, then assign it to one or more environments.

MCP servers

Business application integrations (e.g., Salesforce, GitHub, internal APIs) registered as Model Context Protocol servers.

OAuth connections

Client-credential connections used by AI models (and other integrations) that require OAuth. An org admin creates these under their own Personal environment's Connections settings, then references them by ID from a model definition or environment.

Each environment has an isolated credential that scopes its AI model and MCP server access. One environment cannot use or see the resources of another.

Managing AI Models

Setting up AI models for an org generally follows this order:

  1. Make sure everyone who needs access to the new models — thunk owners and, optionally, other admins — is already a member of the org.

  2. Create the environment(s) that will hold the models, setting its description, deployment phases, and members. Many orgs create a matching set of environments (e.g. one for each stage of development).

  3. Create a credential for each distinct client ID your models will use.

  4. Create the model definitions, giving each a prefix and a credential.

  5. Test each model definition with the Test model icon button on its card.

  6. Assign the model definitions to the environment(s) that should use them.

  7. Test each assignment with Test It.

Creating a credential

If a model requires an OAuth client-credentials connection, create it once and reuse it — models that share the same underlying client credentials (for example, every model in a given environment) can all reference the same connection rather than each creating its own. An org admin creates a credential under their own Personal environment's Connections settings: give it a name, choose Client Credentials (Machine-to-Machine) as the grant type — not Authorization Code, which is for a different, user-driven flow — and enter the token endpoint, client ID, and client secret. Once saved, the connection is assigned an ID you can reference from any model definition.

Use the Diagnostics button on the credential to confirm it can obtain a token before relying on it in a model definition. Some warnings shown there can be safely ignored as long as the token itself is retrieved successfully.

A model definition can also create its own OAuth connection inline if you'd rather not manage it separately, but it won't be reusable by other models unless you reference that same connection's ID from them.

Creating an environment

Creating an environment starts with a name, a description, and — optionally — its deployment phases. After it's created, open the environment to change the phases or to set its members:

  • Deployment Phases — tags (Prototype, Testing, Production) that control which thunks, by their own phase, can use this environment. Tagging restricts the environment: one with no phases assigned can be used by a thunk in any phase. Set these while creating the environment, or change them at any time afterwards.

  • Members — the org members who should have access to this environment. Only existing org members can be added, so complete step 1 above first.

Creating a model definition

In org settings, open the Model Definitions tab and select New Model Definition. A model definition specifies:

  • Base Model Name and Provider — which underlying model and which AI provider serves it. The list offers stable and experimental models; deprecated models are not offered for new definitions (see Supported AI models and what happens when they change).

  • Prefix — a short qualifier that keeps this model's registered name unique. Following an org-wide convention for prefixes (e.g. by team) makes models easier to identify; models within the same environment typically share a prefix, though this isn't required.

  • Provider Model Name — the deployment name or model ID your provider uses, if different from the base model name

  • API Base URL — only needed for a custom or dedicated endpoint

  • API Version (Azure, required) or Vertex Project (Vertex) — the provider-specific settings the endpoint needs

  • Credential — attach an existing OAuth connection, create a new one, or leave the model to use the org's default provider API key

Once created, a model definition is reusable — the same definition can be assigned to multiple environments rather than being configured separately in each one.

Select a model definition in the Model Definitions tab to see its settings, such as its model ID, provider, provider model, API base and API version. A model that uses a credential also shows the OAuth connection ID and the credential's Client ID. You can see the client ID only for a credential you created; otherwise it reads Not visible to you. An environment's LLMs section lists each of its models the same way, including the API version and OAuth connection ID.

To create a model that differs from an existing one in only a few settings — the same model for another environment with its own credential, or another deployment on the same endpoint — select Use as Template on the existing model's card. The new-model form opens with the model's settings copied, including the credential; enter a new prefix and change what differs. If you pick a different base model, the copied prices are cleared, since they belonged to the original model. After you create it, the new model is tested right away and the result is shown before you close the form.

Assigning a model to an environment

From an environment's detail view, select Assign Model Definition and choose from the org's catalog. Type in the Filter box to narrow the list by name, alias, or provider. The model becomes available to anyone with access to that environment. Removing a model from an environment (via its Unassign control) does not delete the underlying model definition — it remains in the catalog and can be re-assigned or assigned to other environments.

A model definition must be unassigned from every environment it's assigned to before it can be deleted from the Model Definitions tab.

Testing a model connection

There are two tests, and they answer different questions.

Test model — on each card in the Model Definitions tab, org owners and admins see a Test model icon button. It sends a short request to that exact model definition twice, once normally and once streamed, whether or not it has been assigned to an environment yet, so you can confirm a new or edited definition works before anyone depends on it. The result shows how long the model took and what the call cost. If the call succeeds but costs $0, the result warns you: usage of that model is not being priced, so check the definition's base model and cost settings. If the model answers but the streamed request fails, the result warns you that workflows with Use streaming LLM API turned on will fail with this model; workflows without it are unaffected. If the call fails, the result says whether the credential could not get a token or the model call itself failed, and shows the error returned.

After you create a model definition, or change where it sends requests (provider, model, API base, Vertex project or location, or credential), it's tested the same way right away and the result is shown before you close the form. For a Gemini model on Vertex AI whose API base is a gateway address rather than the full model path, the form warns that streamed requests may fail there. On a new model it offers Use full model path; test the model after switching, because some gateways don't support the full path. To try it on a model that's already in use, make a copy with Use as Template, test the copy, and switch only if both calls work.

Test It — each model assigned to an environment shows a Test It button. It sends a simple request the way a workflow in that environment would, confirming the environment can reach the model. Use it after assigning a model, or when diagnosing why a workflow isn't reaching a model. A successful test shows the model's response; a failed test shows the error returned.

Multiple environments per org

An org can have multiple environments. Common patterns:

  • Dev / Staging / Production — different model tiers or application endpoints per stage

  • Team-specific environments — different business app connections for different departments

  • Cost-controlled environments — different model selections for cost or compliance reasons

A thunk (workflow) is linked to one environment at a time. Moving a thunk between environments (e.g., from staging to production) means reassigning its environment reference.

Who can create and manage environments

Only the org owner and org admins can create, update, delete, or configure environments.

Who can see and use an environment

Org owners and admins automatically have access to all environments in their org.

Everyone else — thunk owners and other admins — must be explicitly granted access to an environment by being added as a Member of that environment, which only an org admin can do. This allows orgs to maintain strict separation between environments (e.g., only the infrastructure team has access to the production environment).

The org owner/admins can grant/revoke a user's membership on an environment at any time.

The Personal Environment

In addition to org-managed environments, every user has a personal environment. This is an isolated context that belongs to the individual user — the org does not provision or control it.

The personal environment surfaces the platform-level AI models (provided by Thunk.AI) for personal use. Users experimenting or building individual automations use this environment. When a user is ready to promote a thunk to a shared org environment, they reassign its environment reference.


Groups from your identity provider

On a private instance, users and groups can be synced from Microsoft Entra ID, Okta, or another SCIM 2.0 provider, and access can be granted to a group instead of to individuals. See Sync user groups from your identity provider. The OAuth credentials that models and connections use are managed as described in Manage OAuth credentials and authorized thunks.

Summary: Who Can Do What

Action

Platform Admin

Org Owner

Org Admin

Participant

Create / delete an org

✓

—

—

—

Transfer org ownership

✓

—

—

—

Set org billing tier

✓

—

—

—

Manage org API keys

—

✓

✓

—

Add / remove org members

—

✓

✓

—

Create / delete environments

—

✓

✓

—

Configure models & MCP servers

—

✓

✓

—

Grant environment access to users

—

✓

✓

—

Use environments they have access to

—

✓

✓

✓

Use personal environment

—

✓

✓

✓

Did this answer your question?