Tiers and Priority
CUST/OS uses two provider fields to control selection:
taskPrioritysets the order in which eligible providers are tried.tierdescribes where a provider runs and which security modes allow it.
Set tier and priority independently
taskPriority is an integer. Lower numbers are tried first among eligible, healthy providers.
tier is one of six labels describing the provider's physical location and connection to the operator. Security modes use this label to filter providers before selection.
You can have:
- Two providers in the same tier with different priorities (e.g., two cloud LLMs you want to fail over between).
- Providers in different tiers with their own priorities (e.g., handheld at priority 1 and cloud at priority 5).
- A single provider whose tier determines whether a security mode permits it.
Changing a tier filter does not require changing the priority numbers.
The six tiers
| Tier | Where it runs | Connection |
|---|---|---|
handheld |
The operator's phone or tablet | Local inference on the same device |
pack |
Compute carried by the operator, such as a Jetson in a ruck | Wired USB or Ethernet |
mobile |
A shared compute device carried by the squad | Local network |
mounted |
Compute installed in a vehicle | Connection to the vehicle's compute |
command-post |
A workstation running another CUST/OS node | CoT over the TAK mesh; not yet validated between live devices |
cloud |
An internet-hosted provider | Internet connection |
Tier labels describe the deployment relationship. Actual latency depends on the model, hardware, prompt, and connection; the tier alone does not predict response time.
Security modes (lockdown)
The security.mode field selects a lockdown mode that filters which tiers are allowed:
| Mode | Allowed tiers | Use it for |
|---|---|---|
normal |
handheld, pack, mobile, mounted, command-post, cloud | Default -- everything in your config is in play |
no-cloud |
handheld, pack, mobile, mounted, command-post | Skip cloud providers |
field-only |
handheld, pack, mobile, mounted | Deployed in the field with vehicle-mounted and local edge compute, but no command post or cloud connectivity |
squad-only |
handheld, pack, mobile | Squad-internal compute only |
emcon |
handheld, pack | Limit model requests to the operator's device and wired pack compute |
standalone |
handheld | Device-only operation. No external compute trusted -- not even wired peripherals. For compromised environments or when no peripheral can be trusted. |
The router uses the mode to filter inference providers for chat, embedding, transcription, TTS, and vision. It does not disable radios or control unrelated device traffic.
The NavBar carries a security mode button that lets the operator switch modes with a single tap (e.g., "enter EMCON now") without editing the config file.
What tier drives beyond lockdown
Classification ceilings
Providers without an explicit classification field default to UNCLASSIFIED for the cloud tier and to the operator's configured clearance level for other tiers. Review these defaults when configuring a deployment.
Per-tier budget defaults
defaults:
byTier:
handheld:
requestTimeoutMs: 30000
maxTokens: 1024
cloud:
requestTimeoutMs: 120000
maxTokens: 4096
Per-provider values still win. Tier values fill in where providers do not specify their own.
Tier-aware hooks
Hook rules can target specific tiers:
hooks:
rules:
- event: PreToolUse
toolPattern: "send_*"
whenTier: ["cloud", "command-post"]
action: require_approval
reason: "Comms tools require approval when reasoning at remote tiers"
This fires only when the active inference provider is in the cloud or command-post tier.
Fallback grouping
agent.fallbackMode controls how providers are ordered:
priority(default) -- flat sort bytaskPriority.tier-grouped-- sort by tier order (handheld, pack, mobile, mounted, command-post, cloud) first, then bytaskPrioritywithin each tier. The entire handheld tier is tried before any pack provider.
Delegation gating
Standalone, EMCON, squad-only, and field-only modes implicitly disable cross-device delegation because they exclude command-post from the allowed tier set.
Voice pipeline
Voice providers use the same tier filter as other model requests. In emcon mode, only handheld and pack providers are eligible, so a cloud STT provider is skipped. Configure a local speech provider if voice needs to remain available in that mode.
Audit
Every inference request is logged with its tier. The Audit panel's "By Tier" view shows call counts and token totals grouped by tier, so operators can see how much reasoning happened at each level.
How tier and priority compose
A representative config:
agent:
fallbackMode: tier-grouped
security:
mode: emcon
providers:
- name: "local"
tier: "handheld"
taskPriority: 1
- name: "ruck-jetson"
tier: "pack"
taskPriority: 3
- name: "lan"
tier: "mobile"
taskPriority: 5
- name: "vehicle"
tier: "mounted"
taskPriority: 10
- name: "cp"
tier: "command-post"
taskPriority: 50
- name: "claude"
tier: "cloud"
taskPriority: 100
What happens on each call:
- Tier filter runs first.
mode: emconremoves everything excepthandheldandpack. Onlylocalandruck-jetsonare in the running. - Sort orders the survivors by tier-grouped order (handheld first, then pack).
- Health check decides whether
localis callable. - Classification boundary clamps which providers can see the operator's data.
- Hook rules are evaluated --
whenTiermatches do not fire because we are athandheldorpack, notcloudorcommand-post. - The call goes out.
Changing mode: emcon to mode: normal permits all configured tiers. Health and classification checks still apply. With tier-grouped fallback, the router tries tiers in the order shown above.
How to set tier correctly
Choose the tier that matches the provider's physical location and connection:
- A
file://URL pointing at a model on the device ishandheld. - An
http://URL pointing at a wired peripheral the operator carries on their body (USB-tethered Jetson, Ethernet-connected Pi in a chest rig) ispack. - An
http://URL pointing at a companion device the squad carries ismobile. - An
http://URL pointing at a vehicle compute platform ismounted. - A
cot://URL or any provider reachable over the TAK mesh iscommand-post. - An
https://URL pointing at someone else's data center iscloud.
Check the assigned tiers against the security modes you plan to use. A remote endpoint labeled handheld would remain eligible in standalone mode, so accurate labels are required for the filter to behave as intended.