This feature is rolling out gradually
Overview
Groups help you organize your team and control access to your organization’s resources. By assigning team members to groups and granting those groups specific permissions, you can manage access at scale without handling permissions for each person individually. Benefits of using groups:- Manage access for multiple people at once
- Organize your team by function, department, or project
- Simplify onboarding and offboarding
- Maintain consistent permissions across resources

Groups overview
Understanding Ona Resources
Before diving into groups, it’s important to understand the resources you’ll be managing access to: Projects: Configuration templates that define how development environments are set up. Projects are linked to Git repositories and specify settings like devcontainer paths, environment classes, and automation files. Runners: The compute infrastructure (such as AWS EC2 instances, GCP machines, or local computers) that hosts and executes your development environments. Environments: The actual running development workspaces created from projects. Environments run on runners and provide isolated spaces for development work. How they work together: When someone creates an environment from a project, that environment runs on a runner. Projects define what the environment should be, and runners provide where it runs.How Access Control Works
Default Access
When you create a new project or runner, it’s automatically accessible to:- You (the creator) - with Editor permissions for projects, Admin permissions for runners
- All organization administrators - with Admin permissions
Why Groups?
Without groups, sharing a resource with your team would require either:- Making team members organization administrators (giving them more access than needed)
- Leaving resources accessible only to admins (blocking team collaboration)
- Grant access to multiple people at once
- Organize your team by function, department, or project
- Maintain consistent permissions across resources
- Simplify onboarding and offboarding
Critical: Projects and Runners Must Both Be Accessible
Projects can be configured to use multiple runners through environment classes. If a team member has access to a project but not to any of its associated runners, they can see the project but cannot create environments with it. Before sharing a project, ensure that team members also have access to the appropriate runners. The Share dialog will display warnings when this might be an issue.
Access dependency warning
Creating and Managing Groups
Create a New Group
- Navigate to Settings → Members
- Select the Groups tab
- Click New Group
- Enter a group name
- Add an optional description to help others understand the group’s purpose
- Optionally add team members during creation
- Click Create

Create a new group
Add Members to a Group
- Go to Settings → Members → Groups
- Click on the group you want to modify
- Click Add People
- Search for and select the team members you want to add
- Click Add to confirm

Add members to a group
Edit Group Details
- Navigate to the group’s detail page
- Click the ⋯ (more actions) menu
- Select Edit
- Update the group name or description
- Click Save
Remove Members from a Group
- Open the group’s detail page
- Find the member you want to remove in the members table
- Click the checkbox next to their name (you can select multiple members)
- Click Remove
- Confirm the removal

Group details and member management
Delete a Group
Deleting a group removes all its members and revokes the group’s access to all resources.- Navigate to the group’s detail page
- Click the ⋯ (more actions) menu
- Select Delete
- Confirm the deletion
Roles and Permissions
When you assign a role to a group on a resource, all members of that group receive the permissions associated with that role.Project Roles
The following table outlines the specific permissions for each role on projects:| Permission | User | Editor | Admin |
|---|---|---|---|
| Read Access | |||
| Read project (view details, settings, configuration) | ✅ | ✅ | ✅ |
| Read secrets (names only, not values) | ✅ | ✅ | ✅ |
| Read environment classes (see which runners the project uses) | ✅ | ✅ | ✅ |
| Read prebuilds (view prebuild configurations and history) | ✅ | ✅ | ✅ |
| Write Access | |||
| Update project (modify settings and configuration) | ❌ | ✅ | ✅ |
| Delete project | ❌ | ✅ | ✅ |
| Create/update/delete secrets (full access including values) | ❌ | ✅ | ✅ |
| Create/update/delete environment classes (configure runners) | ❌ | ✅ | ✅ |
| Create/update/delete prebuilds | ❌ | ✅ | ✅ |
| Admin Access | |||
| Grant access (share project with groups) | ❌ | ❌ | ✅ |
Editors can delete projects. Grant Editor access only to trusted team members who need full management capabilities.
Runner Roles
The following table outlines the specific permissions for each role on runners:| Permission | User | Admin |
|---|---|---|
| Read Access | ||
| Read runner (view details, status, configuration) | ✅ | ✅ |
| Read environment classes (view available machine types) | ✅ | ✅ |
| Read SCM integrations (view source control integrations) | ✅ | ✅ |
| Read/use LLM integrations (view and use AI/LLM features) | ✅ | ✅ |
| Usage | ||
| Create environments on this runner | ✅ | ✅ |
| Create agent executions (use AI agent features) | ✅ | ✅ |
| Create host authentication tokens | ✅ | ✅ |
| Write Access | ||
| Update runner (modify configuration and settings) | ❌ | ✅ |
| Delete runner | ❌ | ✅ |
| Create/update/delete environment classes | ❌ | ✅ |
| Create/update/delete SCM integrations | ❌ | ✅ |
| Create/update/delete LLM integrations | ❌ | ✅ |
| Admin Access | ||
| Grant access (share runner with groups) | ❌ | ✅ |
| Create runner tokens (for runner registration) | ❌ | ✅ |
| Access runner logs | ❌ | ✅ |
Permission Inheritance
- Multiple groups: When a user belongs to multiple groups with access to the same resource, they receive the union of all permissions. The highest permission level applies.
- Organization admins: All org admins automatically have Admin permissions on all projects and runners, regardless of group memberships.
Best Practices
Organize Groups by Function
Create groups that reflect how your team works:- By team: “Frontend Team,” “Backend Team,” “DevOps”
- By role: “Developers,” “Designers,” “Product Managers”
- By project: “Mobile App Team,” “API Team”
Use Descriptive Names and Descriptions
Help others understand what each group is for:- ✅ “Backend Engineers - API and Database Development”
- ❌ “Group 1”
Start with Restrictive Access
Begin by sharing resources with specific groups. You can always expand access later:- Create groups for your teams
- Share resources with relevant groups
- Adjust permissions based on feedback
- Expand to organization-wide access if needed
Review Access Regularly
Periodically review who has access to your resources:- Check group memberships when people change roles
- Remove access for team members who no longer need it
- Update permission levels as responsibilities change
Consider Runner Dependencies
Before restricting runner access:- Identify which projects use the runner
- Ensure all project users also have runner access
- Communicate changes to affected teams
Use the Right Permission Level
Grant the minimum permissions needed:- Most team members need User access
- Team leads or maintainers need Editor access
- Only a few people need Admin access