Skip to main content

Device Groups

Segment your device fleet into targetable cohorts. Groups let you scope rollouts, experiments, and training to specific platforms, regions, or hardware capabilities instead of deploying to everything at once.

When to use

  • Rolling out a model to iOS devices before Android
  • Running an A/B test on a staging cohort before production
  • Restricting federated training to devices with 8GB+ RAM
  • Isolating a region for compliance or latency reasons

Quick start

octomil group create ios-17-plus \
--mode dynamic \
--rule "platform eq ios" \
--rule "os_version gte 17.0"
Group created: grp_x7y8z9
Name: ios-17-plus
Mode: dynamic
Rules: platform eq ios, os_version gte 17.0
Matched devices: 87

Group modes

ModeMembershipBest for
staticManually add/remove devicesHand-picked staging fleet, QA devices
dynamicAuto-assigned by rules on heartbeatPlatform/region/capability targeting
hybridRules + manual overridesDynamic base with manual exceptions

Rule fields

FieldOperatorsExample
platformeq, neq, inplatform eq ios
os_versioneq, gte, lte, gt, ltos_version gte 17.0
localeeq, inlocale in en_US,en_GB
regioneq, inregion eq us-east-1
manufacturereq, inmanufacturer eq Apple
modeleq, inmodel in iPhone15,4,iPhone16,2
sdk_versioneq, gte, ltesdk_version gte 2.0.0
app_versioneq, gte, lteapp_version gte 3.1.0
ram_gbgte, lte, gt, ltram_gb gte 8
gpu_availableeqgpu_available eq true
npu_availableeqnpu_available eq true

Rules are ANDed — a device must match all rules to join the group.

Using groups in rollouts

octomil deploy radiology-v1 --version 2.0.0 --rollout 10% --group ios-17-plus

Using groups in experiments

octomil experiment create staging-test \
--model radiology-v1 \
--control 1.0.0 \
--treatment 2.0.0 \
--traffic-split 50 \
--group staging-devices

Managing groups

# List groups
octomil group list

# View group details and membership count
octomil group status ios-17-plus

# Add devices to a static/hybrid group
octomil group add ios-17-plus --devices device-abc,device-def

# Remove devices
octomil group remove ios-17-plus --devices device-abc

# Delete a group
octomil group delete ios-17-plus

Group cards in dashboard

Group cards in the dashboard show:

  • Membership count — total devices in the group
  • Active rollouts — rollouts scoped to this group
  • Active experiments — experiments targeting this group
  • Model coverage — which model versions are deployed to group members

Filter groups by active rollouts or experiments to isolate affected cohorts.

Gotchas

  • Dynamic membership updates on heartbeat — devices join/leave dynamic groups when they heartbeat. If a device hasn't checked in recently, its group membership may be stale.
  • Rules are ANDed, not ORed — all rules must match. To target "iOS OR Android 14+", create two groups and use both in your rollout.
  • Deleting a group doesn't affect rollouts — if a rollout targets a group you delete, the rollout continues for devices already assigned. New devices won't be added.
  • Static groups have no auto-discovery — devices must be added manually. Use dynamic or hybrid if you want new devices to be automatically included.
  • Group names are unique per workspace — you can't have two groups with the same name.