Tags
A tag in Koios represents an individual data point — a temperature reading, a motor speed, a pressure setpoint, a database column value, or a calculated result. Tags are where real data enters and leaves the platform: AI models read from input tags and write predictions to output tags, trends chart tag values over time, and events fire when tag states change.
Tags can get their value from three different sources — a connected device, a computed expression, or an in-memory write from a service. See Tag Source Types below for details.
Input vs Output
Every tag has a usage that determines how Koios interacts with it:
Tag Lifecycle
Tags follow a straightforward lifecycle:
- Create — add a tag and configure its settings (device and protocol fields for device tags, an expression for expression tags, or just general settings for in-memory tags)
- Enable — activate the tag so it begins collecting or computing values
- Live — the tag's value updates on each scan or evaluation, is recorded to the time-series database, and is available to models, trends, and the rest of the platform
- Stopped / Failed — a tag stops when disabled (or when its parent device stops, for device tags). It enters a failed state if it encounters an error.
Tag Status
Like devices, every tag has a real-time status:
When a device tag fails, the parent device may continue scanning its other tags normally. Tag errors are isolated — one bad tag doesn't bring down the whole device.
What You See on a Tag
Tag List
The tag list table shows all tags across the platform. Key columns include:
- Status — colored icon showing running, stopped, or failed
- Name — the tag's unique name
- Source — device, expression, or in-memory
- Device — the parent device (device tags only)
- Value — the current live value
- Units — engineering units (°C, PSI, RPM, etc.)
- Usage — input or output icon
You can filter by device, protocol, or search by name. Tags can be enabled, disabled, duplicated, or deleted in bulk.
Tag Detail
Clicking a tag opens its detail page with four tabs:
- Overview — live status, current value with sparkline chart, device info, and recent events
- Configuration — all editable settings (general, protocol-specific, and advanced)
- Parameters — read-only table of every tag field, organized into live data, config, and protocol sections
- Cross References — shows where this tag is used (AI models, mappings, components, etc.)
Configuration
General Settings
Protocol-Specific Settings
Device tags have additional configuration that depends on their protocol. These settings tell Koios where to find the data point within the device:
Advanced Settings
History Compression
By default, every tag uses the global compression settings configured on the Data Retention page. Global compression uses Swinging Door Trending (SDT) to discard values that don't meaningfully change the trend, reducing storage consumption while preserving the shape of the data.
If a specific tag needs different compression behavior, the History Compression section on the Configuration tab provides an Override global compression settings toggle. When enabled, three tag-specific settings appear:
When the override is off, the tag follows whatever the global settings are — a link on the Configuration tab takes you directly to the Retention page to view or change them.
Tag Source Types
Every tag has a source type that determines where its value comes from. You choose the source type when creating a tag.
Device Tags
The most common type. A device tag belongs to a device and inherits its protocol. The device handles the connection, and the tag defines what to read or write within that connection — an OPC-UA node, a Modbus register, an EtherNet/IP controller tag, a SQL query, and so on.
Expression Tags
Expression tags compute their value from a formula evaluated by the Expression Evaluator service. Expressions can reference:
- Tag values and status — the live value, status, or error code of any other tag
- Device status — whether a device connection is running or failed
- Model status — whether an AI model is running or failed
- Binding values — the raw prediction value from a model output binding
This makes expressions useful for more than simple math — you can build logic that reacts to the health of devices or models, not just their data. Expressions support arithmetic, comparison, and logical operators, plus built-in math and statistical functions.
Expressions are evaluated in one of two ways:
- Reactive — when any referenced tag's value changes, the expression re-evaluates immediately (within milliseconds)
- Timer-based — if the expression has no reactive tag dependencies, it evaluates on a configurable interval (the Evaluation Rate field)
See Expression Tags for the full syntax reference.
In-Memory Tags
In-memory tags historize values written by the predict engine, mapping service, or component engine. These services write an output_value to the live data cache when they produce a result (e.g. a model prediction or a mapped value). Without an in-memory tag, that output value lives only in the cache and is never recorded.
The Expression Evaluator service monitors in-memory tags and relays output_value to the tag's live value, writing each update to the time-series database for historical storage. This relay happens two ways:
- Event-driven — the producing service publishes a notification after writing, and the relay happens within milliseconds
- Timer fallback — a periodic check (default 10 seconds) catches any missed notifications
In-memory tags also provide:
- Status monitoring — the tag shows running/stopped/failed status like any other tag
- Stale detection — if the source service stops writing, the tag enters a failed state after a configurable timeout (default 60 seconds), with a clear error message showing how long ago the last write occurred
- Waiting state — before the source service writes for the first time, the tag shows a running status with an informational "Waiting for output value" message
Output Conflicts
When multiple sources (an AI model, a mapping, and a component) all try to write to the same output tag, Koios flags an output conflict on the tag's overview page. This is a warning — only one source's value will be written per scan. Review the tag's cross references to understand what's writing to it and resolve any unintended overlaps.
Key Concepts
What's Next
- Creating a Tag — step-by-step guide to adding a new tag
- Expression Tags — syntax reference for expression formulas
- Value Mapping — mapping raw device values to numeric outputs
- Troubleshooting a Tag — diagnosing errors and testing tag reads
