- Automatic tag membership — decide which devices or users carry a tag
- Dynamic columns — compute a new column value on the Devices grid (see Dynamic columns and AI Transform)
- Custom Vitals (Protect only) — your own compliance checks, which flag an issue on every device that fails (see Custom Vitals) New in 3.3
How a flow works

- A source node — the
DeviceorUserrecord being evaluated - One or more Condition nodes — each tests a property against one or more values and branches True / False
- Optional Transform nodes that derive a new value along the way
- An output node — Apply Tag for a tag, Output for a column, or Flag Issue for a Custom Vital
Nodes
Add a node from the palette on the left of the canvas, or click + under a node’s True or False output.Operators
A Condition can use Equals, Contains, Starts with, Ends with or Is empty, and number properties add Greater than. Turn on NOT to invert the test. You can enter more than one value, and the condition matches if any of them match.The Logic Engine is not the query language. The query bar finds devices on the grid, and has wildcards for partial matches. The Logic Engine builds the rules behind tags, columns and Custom Vitals, with operators such as Greater than and branching logic the query bar doesn’t have.
Build and test a flow
Right-click the canvas for the editing tools:- Debug — pick a device or user and the flow highlights the path it takes, so you can see which output it reaches before you publish
- Auto Layout and Fit View — tidy the flow and bring it all into view
- Insert Node, Copy / Paste and Undo / Redo
- Add Note and Show Notes — leave an explanation on the canvas for whoever edits the flow next
- Show Minimap and Show Node IDs — find your way around a large flow
AI Composer
New in 3.3 Composer is available wherever you use the Logic Engine: tags, dynamic columns and Custom Vitals. Describe the logic you need in plain English and Composer builds the flow for you, from a single condition to multi-branch rules with transformations. It’s the quickest way to get a working flow, and you don’t need to know which node or operator to use.1
Open Composer
Open the Logic Engine for a tag, column or Custom Vital and make sure the editor is on Draft. Composer opens in the panel on the right; toggle it with the Composer icon in the top bar.
2
Describe what you want
For example: “Build a flow that tags devices as ‘Encrypted’ if Jamf or Intune reports encryption enabled.”
3
Review and refine
Composer adds the nodes to the canvas. Check them, ask Composer for changes or edit the nodes by hand, and test with Debug before you click Publish.
Composer only works on a draft, and only one person can edit a flow at a time. Depending on your plan, requests may use AI credits; the panel shows your usage.
Live re-evaluation
A published flow keeps itself up to date. When a device’s or user’s details change in a source system, it joins or leaves the tag, column value or Custom Vital result automatically. There’s nothing to refresh by hand.Device rules and user rules are evaluated separately. A tag’s count in Settings → Tags includes inactive devices, so it can be higher than the number you see on the Devices grid with its default Active filter.
Dynamic columns and AI Transform
The Logic Engine’s other job is building dynamic columns on the Devices grid. Open the columns panel (Toggle columns, or ⇧ C) and click Open Column Editor. Columns under the Logic Engine heading are computed by a flow rather than read from an integration; click + Add Column to create one. The flow is the same shape as a tag flow, but it ends in an Output node instead of Apply Tag:- A source node (the device record) supplies fields
- Condition and Transform nodes derive a value
- An Output node writes the result into the column
The AI Transform node
An AI Transform node sends the device fields you reference to an AI model with a natural-language prompt, and writes the model’s answer into the column. Use it for fuzzy classification — judgements that are hard to express as a chain of conditions. A simple example is an AI Device type column. Its flow isDevice → AI Transform → Output:

OsName and Model, the prompt references them, and the result — Workstation, Server, or Unknown — populates the column.
When to use AI Transform vs a Condition flow
Prefer plain Condition nodes whenever the logic can be expressed as field comparisons — they’re faster, free, and fully predictable. Reach for AI Transform only when conditions would be brittle.
Best-practice prompt patterns
Constrain the output to a fixed set
Constrain the output to a fixed set
Tell the model exactly which values it may return. The AI Device type column returns only
Workstation, Server, or Unknown — never free prose. A bounded output keeps the column filterable and safe to build saved views, Vitals, and Actions on.Always give an explicit 'Unknown' fallback
Always give an explicit 'Unknown' fallback
“If you are unable to tell within a high degree of accuracy, output Unknown.” Without this the model guesses, and a confident-but-wrong value is worse than an honest gap. You can then filter the column for
Unknown to measure how much you’re relying on the model.Reference only the fields that matter
Reference only the fields that matter
Pass the smallest set of fields that answers the question (here,
OsName + Model). Extra fields add noise and processing cost without improving the judgement.Validate in Draft before publishing
Validate in Draft before publishing
Use the flow’s Debug option to run it against a real device and check the output. Keep the column in Draft until the results look right, then Publish.
Re-check coverage after publishing
Re-check coverage after publishing
Sort or filter on the new column and confirm the distribution is sane — a large
Unknown share usually means the prompt needs more context or a sharper instruction.Unlike Reporting — where the AI sees only the schema — an AI Transform sends the actual values of the fields you reference to the model. Reference only fields you’re comfortable processing this way, and don’t pipe sensitive identifiers into the prompt.
What you can build with it
AI Transform is good at turning messy, open-ended input — model strings, hostnames, job titles, OS builds — into a clean, filterable value that drives tags, Vitals, Actions, and saved views. Each example below follows the same safe pattern: reference a few fields, constrain the output, and give anUnknown escape hatch.
Spot unsupported operating systems. A condition can match the OS name, but it can’t know which builds are past vendor support — that’s world knowledge a rule can’t hold.
Unsupported-OS tag and a Tracked View to drive the upgrade project. Sense-check the model’s verdict against your own end-of-life calendar before relying on it for compliance.
Decode your hostname naming convention. Most estates encode site, role, or build year in device names — but every org’s scheme differs, so a fixed pattern needs hand-coding for each one. Describe the scheme in plain English instead:
VIP results, then filter Vitals and Tracked Views to that tag so you can keep a closer eye on those devices.
Canonicalise messy vendor names. "Dell Inc.", "Dell Incorporated", and "DELL" are three values for one vendor. Collapse them for clean grouping and reporting:
Cross-references
Tags
Tag design and strategy
Custom Vitals
Build your own compliance checks
Query Language
Grid search syntax — separate from the Logic Engine