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
| Condition | A Device Matches When |
|---|---|
| In all groups | It belongs to every selected group. |
| In any group | It belongs to at least one selected group. |
| In none of these groups | It 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.