Skip to Content

Governance

The Governance system lets you define and enforce fleet-wide policies, track compliance, run canary deployments with automatic rollback, and synchronize configuration from a Git repository via GitOps.

Fleet Policies

Policies define the expected state of your fleet. Each policy specifies rules that Cloud OS instances must follow. The Control Panel evaluates policies against instance state and flags violations.

Policy Types

Policy TypeDescriptionExample
required_appsApplications that must be installed on every instanceRequire monitoring-agent and log-collector
blocked_appsApplications that must not be installedBlock outdated-db or insecure-tool
update_rulesRules for how and when instances should updateAuto-update within 48 hours of release
baselineA baseline configuration that instances must matchSpecific Cloud OS version, security settings

Creating a Policy

  1. Navigate to Governance > Policies from the sidebar
  2. Click Create Policy
  3. Select the policy type
  4. Define the rules for the policy
  5. Choose the scope — all instances, a specific group, or a tag filter
  6. Click Save

Policy Scope

Policies can target:

  • All instances — applies fleet-wide
  • Groups — applies to instances in specific groups
  • Tags — applies to instances matching a tag filter (e.g., env=production)

Policy Violations

When an instance does not meet a policy’s requirements, a violation is recorded. Violations are visible on the Governance dashboard and the individual server detail page.

Each violation includes:

  • The policy that was violated
  • The specific rule that failed
  • The instance that is non-compliant
  • When the violation was first detected
  • Current resolution status

Violation Severity

Violations are categorized by the policy type:

  • Critical — blocked apps found on an instance
  • Warning — required apps missing or update rules not followed
  • Info — baseline drift detected

Compliance Scoring

Each instance receives a compliance score based on how many policies it satisfies. The score is calculated as a percentage:

Compliance Score = (Policies Met / Total Applicable Policies) x 100

The Fleet Dashboard shows the average compliance score across all instances, and you can drill down to see per-instance scores on the Governance page.

A compliance score of 100% means the instance satisfies all applicable policies. Instances with no applicable policies are excluded from scoring.

Canary Deployments

Canary deployments let you roll out changes to a small subset of your fleet first, validate the results, and then proceed to the full fleet or automatically roll back if something goes wrong.

Canary deployments require the canary_deployments license feature (Business+ plan).

How Canary Deployments Work

  1. Define the change — select the command or update to deploy
  2. Select canary targets — choose a percentage or specific instances as the canary group
  3. Set success criteria — define what constitutes a successful deployment (e.g., instance remains online, no new violations, health check passes)
  4. Set the success threshold — the percentage of canary targets that must succeed before proceeding
  5. Deploy to canary — the change is applied to the canary group
  6. Evaluation period — the Control Panel monitors the canary instances for a configured duration
  7. Proceed or rollback — if the success threshold is met, the change rolls out to the remaining fleet; if not, the canary instances are automatically rolled back

Canary Phases

PhaseDescription
CanaryChange applied to the selected subset
EvaluationMonitoring period to validate success criteria
RolloutChange applied to the remaining fleet (if canary succeeds)
RollbackChange reverted on canary instances (if canary fails)

Health Check Polling

During the evaluation phase, the Control Panel automatically polls a health check endpoint on each canary instance. You can configure the following parameters when creating a canary deployment:

ParameterDescriptionDefault
Health Check URLThe endpoint to poll on each canary instance (e.g., /health or /api/status)/health
Success ThresholdPercentage of canary instances that must return healthy for the deployment to proceed100%
Check IntervalHow often the health check is polled during the evaluation period30 seconds
Max DurationMaximum time to wait for the success threshold to be met before triggering a rollback10 minutes

The health check poller runs automatically once the canary phase begins. Each poll result is recorded and visible on the deployment detail page.

Auto-Rollback

If the canary deployment fails to meet the success threshold during the evaluation period, the Control Panel automatically:

  1. Reverts the change on all canary instances
  2. Records the failure reason
  3. Sends a notification to the fleet administrator
  4. Does not proceed with the fleet-wide rollout

Auto-rollback reverts the specific change that was deployed. It does not roll back other changes that may have been made to the instance independently.

Canary API

EndpointMethodDescription
/api/fleet/canaryPOSTCreate a canary deployment
/api/fleet/canaryGETList all canary deployments
/api/fleet/canary/{id}GETGet deployment status with health metrics
/api/fleet/canary/{id}/promotePOSTForce promote to all instances
/api/fleet/canary/{id}/rollbackPOSTForce rollback

GitOps Configuration Sync

The Control Panel supports GitOps-style configuration management. You can connect a Git repository containing your fleet configuration, and the Control Panel will sync that configuration to your instances.

GitOps requires the gitops license feature (Enterprise plan).

Setting Up GitOps

  1. Navigate to Governance > GitOps
  2. Click Connect Repository
  3. Enter the repository URL
  4. Configure authentication (SSH key or deploy key)
  5. Select the branch to track
  6. Set the sync interval
  7. Choose a conflict resolution strategy

How Sync Works

The Control Panel periodically pulls the configured branch, compares the repository state against the current fleet state, and applies any differences. Changes detected in the repository are translated into commands that are pushed to the affected instances.

SSH Authentication

GitOps repositories are accessed via SSH. You can either:

  • Generate a new SSH key pair in the Control Panel and add the public key as a deploy key on your repository
  • Upload an existing private key if you already have SSH access configured

The SSH private key is stored encrypted in the Control Panel database. It is only used for read-only access to pull configuration from the repository.

Conflict Resolution

When the Git repository and the Control Panel have divergent values for the same configuration key, a conflict occurs. You can configure how conflicts are resolved:

StrategyBehavior
server_winsControl Panel configuration overrides Git repository values
git_winsGit repository values override Control Panel configuration
manualSync pauses and presents the conflict for admin resolution

When using the manual strategy, unresolved conflicts appear in the GitOps dashboard. An administrator must review each conflict and choose which value to keep before the sync can continue.

GitOps API

EndpointMethodDescription
/api/governance/gitopsPOSTCreate GitOps configuration
/api/governance/gitopsGETList all configurations
/api/governance/gitops/{id}/syncPOSTForce sync from repository
/api/governance/gitops/{id}/conflictsGETList unresolved conflicts
/api/governance/gitops/conflicts/{id}/resolvePOSTResolve a conflict

Next Steps