Skip to content

Groups

A group is a bag of agents you target with a rollout. Groups come in two flavours; this page covers static groups. For label-selector groups see Dynamic groups.

The single-group invariant

Every agent belongs to exactly one group at a time. This is a hard invariant in the schema, not just a UI convention. The reasoning:

  • Auto-apply must be unambiguous — there is exactly one configuration the agent should be running. Multiple groups → multiple candidate configs → ambiguity.
  • "Move" replaces "remove from A, add to B" with one atomic operation, audited as a single event.
  • It removes a class of bugs around overlapping group memberships.

If you need an agent in "two cohorts", model the cohorts as labels and use a dynamic group instead.

Creating a static group

Groups → New group:

  • Name — unique per tenant.
  • Description — free text.
  • ModeStatic.
  • Default configuration (optional) — agents joining the group are auto-assigned this config (subject to policy).

Save. The group is empty until you add members.

Adding members

  • Group detail → Members → Add: pick agents from the agent picker.
  • Bulk from the Fleet page: multi-select, then Bulk → Move to group.
  • From an Agent detail page: Move action.

Adding an agent to a group removes it from its previous group.

Default configuration and auto-apply

If the group has a default configuration:

  • Agents joining the group are queued for an auto-apply of that config.
  • Auto-apply respects the same policies and capability gating as a manual rollout.
  • A separate audit event is emitted (Group.AutoApplied) so you can distinguish auto-apply from explicit rollouts.

Soft delete

Delete sets DeletedAtUtc rather than hard-deleting. The group:

  • disappears from the regular Groups list,
  • remains visible on rollouts that referenced it (so the audit trail stays consistent),
  • moves to the Deleted tab where you can restore it,
  • frees its name for a partial-unique-index reuse — you can immediately create a new group with the same name.

Force rebuild

For dynamic groups specifically, Force rebuild kicks the reconciler synchronously and shows a "before/after" agent count. For a static group it is a no-op.

Bulk delete

Multi-select on the Groups list, then Delete. The confirmation modal shows the per-group member count and any rollouts that reference the group.