oCoreoCore Docs

Concepts

Understand oCore's domain model and core abstractions

oCore organizes infrastructure management around a set of interconnected domain entities. Understanding how these entities relate to each other is essential for using the platform effectively.

Domain model overview

The following diagram shows the relationships between oCore's core entities:

Loading diagram...

Core entities

Organization

An organization is the top-level container in oCore. Everything -- servers, projects, instances, team members -- belongs to an organization. Organizations provide multi-tenant isolation so that different teams or clients cannot see each other's resources.

Learn more about Organizations and Teams

Server

A server represents a Linux machine managed by oCore. Servers are connected via SSH and run the oCore agent for metrics collection and container management. Servers host Odoo instances as Docker containers.

Learn more about Servers

Project

A project groups related Odoo instances under a common configuration. Each project can have multiple environments (development, staging, production) and can be linked to a Git repository for automated deployments.

Learn more about Projects and Environments

Environment

An environment represents a deployment stage within a project (e.g., development, staging, production). Each environment is mapped to a Git branch and can have its own instances and deployment configuration.

Learn more about Projects and Environments

Instance

An instance is a running Odoo container on a server. Instances have their own database, network ports, and configuration. They can be started, stopped, restarted, and scaled through the dashboard or API.

Learn more about Instances

Deployment

A deployment represents the process of building and deploying code to an environment. Deployments can be triggered manually or automatically via Git pushes. They include pre-deploy snapshots for rollback.

Learn more about Deployments

Resource hierarchy

Loading diagram...

Resources in oCore follow a strict hierarchy:

  1. Organization is the root. All resources belong to exactly one organization.
  2. Servers and Projects are top-level resources within an organization.
  3. Environments belong to a project and define deployment stages.
  4. Instances are deployed within an environment onto a specific server.
  5. Deployments target an environment and are tracked in the deployment history.

This hierarchy enables fine-grained RBAC -- permissions can be scoped to the organization level, and team members see only the resources in their organization.

How entities interact

ActionEntities involvedFlow
Deploy an instanceProject -> Environment -> Server -> InstanceA project's environment deploys an instance onto a connected server
Push codeGit -> Deployment -> Environment -> InstanceA Git push creates a deployment targeting an environment's instances
Collect metricsServer -> Agent -> oCore BackendThe server agent reports metrics to the backend via the SSH gateway
Backup a databaseInstance -> Database -> Backup Job -> StorageA scheduled backup job snapshots an instance's database
Invite a team memberOrganization -> Invitation -> User -> OrgMember -> RoleAn invitation creates a member with a specific role in the organization

Next steps

Explore each concept in detail:

Was this page helpful?