Multi-Tenancy
Organize your infrastructure with organizations, projects, environments, and services.
Skitflow's multi-tenancy system enables organized infrastructure management through a hierarchical structure with four levels.
Hierarchy
Organizations
The top-level tenant containing users, billing, and settings. Each Skitflow instance includes one default organization created during setup. Organizations manage:
- Team members and their roles
- Billing and subscription settings
- Global configuration
Projects
Logical groupings within organizations. Use projects to organize by product, client, or team. Projects contain multiple environments and shared variables that are inherited by all services within.
Environments
Isolated contexts within projects (e.g., production, staging, development). Each environment has:
- Completely isolated services without interference
- Independent domain configurations
- Environment-specific variable overrides
- Separate deployment pipelines
Services
The actual workloads — applications, databases, and Docker Compose stacks. Each service has:
- Independent domains and SSL certificates
- Service-specific environment variables
- Deployment history and rollback capabilities
- Resource monitoring and logs
Variable Inheritance
Variables flow hierarchically with override capabilities:
Organization Variables
└── Project Variables (can override org vars)
└── Environment Variables (can override project vars)
└── Service Variables (can override environment vars)A variable defined at the organization level is available to all services, unless overridden at a lower level.
Role-Based Access Control
Access is scoped at every level of the hierarchy:
| Role | Organization | Project | Environment | Service |
|---|---|---|---|---|
| Owner | Full access | Full access | Full access | Full access |
| Admin | Manage users | Manage services | Manage deployments | Full access |
| Member | View only | Assigned projects | Assigned environments | Deploy only |
| Custom | Configurable | Configurable | Configurable | Configurable |
Custom roles can be created with granular permissions tailored to your team's needs (see Custom Roles).
Best Practices
- Use consistent naming conventions across projects and environments
- Implement least-privilege access — assign the minimum role needed
- Separate staging from production environments to prevent accidental deployments
- Use project-level variables for shared configuration (database hosts, API URLs)
- Create dedicated projects for each client in agency setups