Skip to content

Create teams.overview - #851

Open
lavanya-gunreddi wants to merge 7 commits into
mainfrom
lg-teams
Open

lavanya-gunreddi wants to merge 7 commits into
mainfrom
lg-teams

Conversation

@lavanya-gunreddi

Copy link
Copy Markdown
Contributor

No description provided.

@mintlify

mintlify Bot commented Sep 21, 2026

Copy link
Copy Markdown
Contributor

Preview deployment for your docs. Learn more about Mintlify Previews.

Project Status Preview Updated
runpod-docs 🟢 Ready View Preview Sep 21, 2026, 4:29 PM

💡 Tip: Enable Automations to automatically generate PRs for you.

@rambo-runpod rambo-runpod left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Checked the content against the backend (runpod/RunPod origin/main, 2da6af24c) and the console (main-ui origin/main, ff9b7114e).

Structure is good and needs no change: putting Teams as a peer of Accounts and billing and Organizations (Beta) matches how Organizations is already set up, a top-level teams/ directory matches repo layout, and every link target resolves. Not renaming it "Teams (Beta)" is also right, since teams are GA.

Findings are content accuracy, inline below. Six are wrong against the current backend; the rest are consistency and link-integrity items.

Heads-up on two of them: I have a backend PR open (runpod/RunPod#6176) that changes team role verdicts for audit logs and the Billing role. I have flagged which comments it affects so this page does not get written twice.

Comment thread teams/teamroles.mdx
| Create and delete Serverless endpoints | ❌ | ❌ | ✅ | ✅ |
| Send requests to Serverless endpoints | ✅ | ❌ | ✅ | ✅ |
| Connect to existing Instant Clusters | ✅ | ❌ | ✅ | ✅ |
| Create, delete, start, and stop Instant Clusters | ❌ | ❌ | ❌ | ✅ |

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Dev should be white-check, not cross.

Team Dev holds CLUSTER_MANAGE (model/src/authz/roleGrid.ts:511), and cluster create/delete/update/expand gate on CLUSTER:CREATE/DELETE/UPDATE (node/graphql/schema/cluster.ts:276,286,289). The console agrees: cluster delete is [ADMIN, DEV] (features/Clusters/ClusterCard/index.tsx:57).

Comment thread teams/teamroles.mdx
| Invite team members | ❌ | ❌ | ❌ | ✅ |
| Manage team permissions | ❌ | ❌ | ❌ | ✅ |
| Modify team account settings | ❌ | ❌ | ❌ | ✅ |
| Access audit logs | ❌ | ❌ | ❌ | ✅ |

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Correct as written today, but about to change.

Admin-only matches the backend right now: only the team admin row holds AUDIT_LOG_VIEW_SELF (roleGrid.ts:467) and the resolver gates on AUDIT_LOG:LIST (node/graphql/schema/auditLog.ts:60).

runpod/RunPod#6176 grants it to all four roles, matching the org grid and the RBAC spec, which puts AUDIT_LOG LIST on all roles. If that lands before this page ships, every cell in this row becomes a check.

Worth confirming merge order before publishing. Separately, the console has shown this nav item to team Dev the whole time (console/src/utils/routes.tsx:227, [ADMIN, DEV]), so a Dev currently sees the link and gets an error. #6176 resolves that too.

Comment thread teams/teamroles.mdx

## Billing

The Billing role is for financial management only. Billing members can view billing information and manage payment methods but have no access to compute resources.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"No access to compute resources" is not accurate, before or after my backend change.

Today, team Billing holds CRA:CREATE/UPDATE/DELETE (roleGrid.ts:531), so it can create, edit and delete the container registry credentials that Pods and Serverless workers use to pull private images. Dev cannot. It also holds CLUSTER:LIST and ENDPOINT:LIST.

runpod/RunPod#6176 removes those writes, but Billing still ends up able to read compute: pods, network volumes, templates, clusters and endpoints, mirroring org billing, whose purpose is explaining spend.

So the sentence needs changing either way. Suggested wording that holds after #6176:

Suggested change
The Billing role is for financial management only. Billing members can view billing information and manage payment methods but have no access to compute resources.
The Billing role is for financial management. Billing members can view billing information and manage payment methods. They can also view compute resources such as Pods, endpoints, and network volumes in order to understand spend, but cannot create, modify, or connect to them.

The table is also missing a container registry credentials row, which is where the Billing and Dev difference actually shows up. Worth adding once #6176 settles the values.

Comment thread teams/manageteams.mdx

To invite multiple members at once, click **Bulk Invite**. Upload a CSV file or paste content directly using the format `role,email`, one member per line. A header row is detected automatically. Click **Send Invites** when done.

Invitation links remain active until used or manually revoked.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Wrong: team invites expire after 3 days.

const expiresAt = addDays(now, 3) (model/src/team/createTeamInvite.ts:74, and the bulk path at createBulkTeamInvites.ts:121), enforced on accept (joinTeam.ts:26, "This invite has expired.").

You may be thinking of org invites, which are 14 days. The constant says so explicitly: // Org invites expire after 14 days (longer than TeamInvite's 3-day window...) (model/src/org/invite/constants.ts:1-3).

Suggested change
Invitation links remain active until used or manually revoked.
Invitation links expire 3 days after they are created. They also become invalid once used or manually revoked.

Comment thread teams/manageteams.mdx
</Steps>

<Note>
To delete your team, scroll to the bottom of the **Team** page and click **Delete Team**. This reverts your account to a personal account. All members are removed, but your resources remain unchanged.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Deleting a team is owner-only, not admin.

if (teamToDelete.ownerId !== context.auth.originalUserId) throw 'Only the team owner can delete the team.' (model/src/team/deleteTeam.ts:27-28). A team admin who is not the owner cannot do this.

Two other omissions: clicking Delete Team opens a confirmation dialog, and pending invites are cancelled along with memberships (TeamInvite.team ... onDelete: Cascade).

Suggested change
To delete your team, scroll to the bottom of the **Team** page and click **Delete Team**. This reverts your account to a personal account. All members are removed, but your resources remain unchanged.
Only the team owner can delete a team. To do so, scroll to the bottom of the **Team** page, click **Delete Team**, and confirm in the dialog. This reverts your account to a personal account. All members are removed and any pending invites are cancelled, but your resources remain unchanged.

## Personal accounts

Sign up for a Runpod account at [console.runpod.io/signup](https://www.console.runpod.io/signup).
A personal account is the default account type. Sign up at [console.runpod.io/signup](https://console.runpod.io/signup) to get started. All resources you deploy, including Pods, Serverless endpoints, and network volumes, belong to your personal account.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please keep an explicit ## Create an account heading here.

24 pages link to /accounts-billing/manage-accounts specifically as the signup prerequisite, for example:

The signup URL does survive inside this paragraph, so nothing 404s, but those readers arrive at an account-types explainer rather than instructions, and the #create-an-account anchor is gone. Re-adding the H2 preserves the anchor and fixes all 24 in one edit.

While here: docs.json:1683 redirects /docs/invites to this page, which existed to serve the invite content this PR moved. It should now point at the teams page. release-notes.mdx:432 links "Teams: ... role-based access control" here too, and wants the roles page.

Teams let multiple users collaborate under a shared account with role-based access control.

Team accounts enable multiple users to collaborate on projects and share resources.
For details on setting up and managing a team, see [Manage teams](/teams/manageteams).

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

teams/teamroles is in the sidebar but nothing in the repo links to it in prose, so the only way to find it is scanning the nav. Worth linking from here, and from the invite step on the Manage teams page where a reader picks a role.

Suggested change
For details on setting up and managing a team, see [Manage teams](/teams/manageteams).
For details on setting up and managing a team, see [Manage teams](/teams/manageteams). For what each role can do, see [Roles and permissions](/teams/teamroles).

Comment thread teams/manageteams.mdx
---
title: "Manage teams"
sidebarTitle: "Manage teams"
description: "Create and manage team accounts in Runpod. Invite members, assign roles, and collaborate on Pods, endpoints, and other resources."

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Filename convention: manageteams.mdx and teamroles.mdx are the only multi-word action slugs in the repo without separators. 175 of 255 prose pages use kebab-case, and every immediate sibling does: accounts-billing/manage-accounts, add-tax-id, manage-payment-cards; organizations/orgs-overview, org-roles, orgs-billing.

Since slugs are permanent URLs, worth renaming to teams/manage-teams.mdx and teams/team-roles.mdx (or teams/roles.mdx, mirroring organizations/org-roles) before this ships. That also means updating docs.json:290-294 and the two links in accounts-billing/manage-accounts.mdx.

I noticed commit 1718ceae renamed teams.roles to teamroles, so this may have been deliberate. If there is a reason, ignore me.

Comment thread teams/manageteams.mdx
Go to the [Team page](https://console.runpod.io/team) in the Runpod console.
</Step>
<Step title="Send the invitation">
In the **Members** section, click **Invite new member**. Select a role, enter the member's email address, and click **Create Invite**.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The team-invite screenshot from the old page (create-team-invite-dialog-d8cb3fc6.png, "Create Team Invite dialog showing role selection and required email field") was removed and not re-added anywhere. This step is where it belongs. Confirmed it appears nowhere on the branch.

Comment thread teams/manageteams.mdx

<Steps>
<Step title="Open the Team page">
Navigate to **Create team** in the [Runpod console](https://console.runpod.io/team).

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Minor: this step is titled "Open the Team page" but the body says to navigate to Create team. The second Steps block at line 29-30 says "Go to the Team page", which reads better. Both labels are real; the sidebar entry is "Create team" for a personal account and "Team" once you are on a team (routes.tsx:187-201). Worth making the title and body agree.

Also verified and correct as written: the Convert to a Team Account button and modal, the team display name field, and the acknowledgment checkbox, which does gate the confirm button.

Two undocumented limits you may want to mention: team names must be 3 to 50 characters, and a user can own only one team (createTeam.ts:10-26, "You can only have 1 team").

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants