Skip to main content
Documentation

Groups

A device group is a named set of devices within a project. A device can belong to any number of groups, such as production, canary, or maintenance. Groups have stable IDs beginning with d_group_; renaming a group preserves its assignments and selectors. Names are unique within a project, ignoring case and surrounding whitespace. Colors and descriptions are optional. Group badges use black or white text, whichever has higher contrast.

Groups are separate from properties. Properties store named JSON values such as configuration, inventory, and reported state. Property writes do not change group membership. Selectors can combine group conditions with property predicates.

Manage Project Groups

Open Project Settings → Groups to manage the project’s catalog. Create Group and each group’s Edit button open a slide-out for its name, color, and description. Choose an RGB background color with the color picker or enter a six-digit hex value, such as #1741a3. Saving changes preserves the group’s identity and device assignments. Delete removes the group from the catalog and every device after confirmation.

Add and Remove Device Groups

On a device page, groups appear alongside status and version information. Use the pen icon beside Groups to open the editing dialog. Assigned groups appear as pills with an × control to remove them. Search for additional groups and choose from the autocomplete suggestions, which exclude groups already selected. Save Groups applies the changes; Cancel discards them. Removing a membership leaves the group in the project catalog.

In the device list, select rows and choose Edit Groups beside the selection count above the table to apply membership changes in bulk. Clear Selection deselects the rows without changing their groups.

Membership Rules

Adding an existing membership or removing an absent one has no effect; unrelated memberships are preserved.

Catalog changes require project device-management permission. Membership changes require device-settings permission for every selected device. Device credentials cannot change memberships. Catalog changes and actual membership changes appear in the audit log.

Select Devices

Use the group dropdown beside search and status to select one or more groups. Options and selected groups appear as pills using each group’s color. Devices match when they belong to any selected group. Clearing the selection removes that restriction.

Expand Advanced in the filter row for all, any, and none conditions, combined with AND. The In any group selection is shared with the dropdown. Advanced starts collapsed; a count beside its title indicates active all/none conditions.

Filters combine with device search and status and are preserved in the URL.

Selection Rules

ConditionA Device Matches When
In all groupsIt belongs to every selected group.
In any groupIt belongs to at least one selected group.
In none of these groupsIt belongs to none of the selected groups.

Omitting a group condition imposes no restriction. Empty all and none lists also impose no restriction; an explicitly empty any list matches no devices. The UI omits a condition when its selection is cleared. Group IDs without assignments in the project, including deleted groups, are absent from every device in that project.

Use Groups in Operations

To target an operation by group, open Operations, choose the project, and click New Operation. The same group conditions are available in the operation editor, where a target preview shows matching devices and property-evaluation errors. The preview reflects current membership; actual targets are resolved when the operation starts.

Enrollment and Deletion

Snapshot operations select devices once. Dynamic operations enroll newly matching devices on later enrollment passes. Removing or deleting a group never cancels work already assigned to a device. A maintenance group only excludes future enrollment when the selector explicitly excludes it.

Deleting a group removes it from every device, even when an operation references it. The operation retains the group’s ID: conditions requiring that group stop matching, while conditions excluding it match devices without it. Recreating a group with the same name creates a new identity.

API Example

The Python SDK uses the same selector for device queries and fleet operations:

from nexigon_hub_sdk.api_types.devices import (
    CreateDeviceGroupAction,
    DeviceId,
    DeviceGroupSelector,
    UpdateDeviceGroupsAction,
)
from nexigon_hub_sdk.api_types.projects import ProjectId, QueryProjectDevicesAction
from nexigon_hub_sdk.api_types.fleet import FleetOperationTargetSelector

project_id = ProjectId("p_...")
device_id = DeviceId("d_...")

canary = client.execute(
    CreateDeviceGroupAction(project_id=project_id, name="canary", color="#1741a3")
)
client.execute(
    UpdateDeviceGroupsAction(
        project_id=project_id,
        device_ids=[device_id],
        add=[canary.group_id],
        remove=[],
    )
)

selector = FleetOperationTargetSelector(
    predicates=[],
    groups=DeviceGroupSelector(all=[canary.group_id]),
)
matches = client.execute(
    QueryProjectDevicesAction(project_id=project_id, selector=selector)
)

Pass selector unchanged to CreateFleetOperationAction to use the same targeting conditions. QueryProjectDevicesOutput.selection_errors reports devices whose property predicates could not be evaluated, separately from matching devices.