oCoreoCore Docs

Organizations & Teams

Multi-tenancy, roles, RBAC, invitations, and API keys

Organizations are the top-level container in oCore. They provide multi-tenant isolation, role-based access control, and team collaboration features. Every resource in oCore -- servers, projects, instances, deployments -- belongs to exactly one organization.

Multi-tenancy model

oCore is designed for multi-tenant operation. Each organization is completely isolated from others:

  • Data isolation -- All database queries are scoped to the current organization using Ent privacy rules. Users cannot access resources in organizations they don't belong to.
  • Resource isolation -- Servers, projects, instances, and deployments belong to a single organization.
  • User membership -- A user can belong to multiple organizations, each with a different role.
Loading diagram...

When a user selects an organization in the dashboard, all API requests are automatically scoped to that organization through the tenant middleware.

Organization structure

An organization contains:

ResourceDescription
MembersUsers with assigned roles
RolesPermission sets defining what members can do
ServersLinux machines managed by oCore
ProjectsGroupings of environments and instances
SettingsOrganization-level configuration
API keysKeys for programmatic API access

Roles and permissions

oCore uses role-based access control (RBAC) to manage permissions within an organization. Each organization has four built-in system roles:

RoleDescriptionTypical use
OwnerFull access to all resources and organization settings, including billing, member management, and destructive operationsOrganization creator, primary administrator
AdminFull access to resources (servers, projects, instances) and member management. Cannot delete the organization or transfer ownership.IT administrators, team leads
DeveloperCan manage projects, environments, instances, and deployments. Cannot manage servers or organization settings.Developers, Odoo consultants
ViewerRead-only access to all resources. Cannot create, modify, or delete anything.Stakeholders, clients, auditors

Permission matrix

ActionOwnerAdminDeveloperViewer
View all resourcesYesYesYesYes
Manage serversYesYesNoNo
Manage projectsYesYesYesNo
Deploy instancesYesYesYesNo
Manage membersYesYesNoNo
Manage rolesYesYesNoNo
Organization settingsYesNoNoNo
Delete organizationYesNoNoNo
Transfer ownershipYesNoNoNo

System roles are cloned into each organization during creation. This means each organization has its own independent copy of the role definitions, allowing future customization without affecting other organizations.

Team management

Inviting members

Organization Owners and Admins can invite new members:

  1. Navigate to Organization Settings > Members
  2. Click Invite Member
  3. Enter the email address and select a role
  4. The user receives an invitation email with a link to join

If the invited user does not have an oCore account, they will be prompted to create one before accepting the invitation.

Managing members

Owners and Admins can:

  • Change roles -- Reassign a member's role (e.g., promote Developer to Admin)
  • Remove members -- Remove a member from the organization (this does not delete their user account)
  • View activity -- See a member's recent actions within the organization

Ownership transfer

The Owner role can be transferred to another member. This is a one-way operation -- the current Owner becomes an Admin after transferring ownership.

API keys

Organizations can create API keys for programmatic access to the oCore API. API keys are useful for:

  • CI/CD integration -- Trigger deployments from CI pipelines
  • Automation scripts -- Manage servers and instances programmatically
  • Third-party integrations -- Connect external monitoring or management tools

Each API key:

  • Belongs to a specific organization
  • Has a name and optional description
  • Has an expiration date (or no expiration)
  • Can be revoked at any time
  • Is shown once at creation -- store it securely

API keys have the same permissions as the user who created them. Treat them like passwords -- do not commit them to Git or share them in insecure channels.

Authentication

oCore supports multiple authentication methods:

MethodDescription
Email + PasswordStandard registration with Argon2id password hashing
TOTPTime-based one-time password for two-factor authentication
Recovery codes8 single-use backup codes for 2FA recovery
GitHub OAuthSign in with GitHub account
Google OAuthSign in with Google account
WebAuthnHardware security key authentication (passkeys)

Two-factor authentication

oCore supports TOTP-based two-factor authentication. When enabled:

  1. The user scans a QR code with their authenticator app
  2. Eight recovery codes are generated (store these securely)
  3. Every login requires both password and TOTP code
  4. Recovery codes are single-use -- each code is consumed after validation

Further reading

Was this page helpful?