Docs
/
Tags
/

Tag Introduction

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:

UsageDirectionDescription
InputRead from deviceKoios reads this tag's value from the device on each scan cycle. This is the default for most tags — sensor readings, status registers, database values.
OutputRead and writeKoios can write values back to the device through this tag. Output tags receive values from AI models, mappings, or components, and push them to the device on the next scan.

Tag Lifecycle

Tags follow a straightforward lifecycle:

  1. 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)
  2. Enable — activate the tag so it begins collecting or computing values
  3. 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
  4. 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:

StatusMeaning
RunningThe tag is actively producing values — being scanned from a device, evaluated from an expression, or relayed from a service
StoppedThe tag is disabled (or its parent device is disabled, for device tags)
FailedAn error occurred — check the error code and message for details

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

SettingDescriptionDefault
NameUnique identifier for the tag
DescriptionOptional note about the tag's purpose
EnabledWhether the tag is actively collecting or computing valuesOff
UsageInput (read-only) or Output (read/write)Input
Decimal PlacesHow many decimal places to show for numeric values (0–3)1
UnitsEngineering units displayed alongside the value (e.g. °C, PSI)
Range Min / MaxExpected value range — used for normalization in AI models and display scaling0–100

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:

ProtocolKey Settings
OPC-UANamespace, node identifier, identifier type, data type
Modbus TCPRegister address, register type, data type, byte/word swap
EtherNet/IP (Logix)Logix tag name, tag type
EtherNet/IP (Generic CIP)Assembly instance, byte offset, data type, bit number
SOAP (RDM)RDM device address, RDM parameter
REST (BOSS)BOSS device address, variable code, variable type
Microsoft SQLSQL query
See the protocol-specific tag creation guides for details on each.

Advanced Settings

SettingDescriptionDefault
Value MappingMaps raw device values to numeric outputs using ordered match rulesOff
Test OutputFor output tags — write a fixed test value instead of the live output, useful for commissioningOff
Write AlwaysFor output tags — retry the last output value on every scan, even if no new value has been receivedOff
RedundancyRead from a device set instead of a single device, enabling automatic failoverOff

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:

SettingDescriptionDefault
Compression EnabledWhether to compress this tag's historyOn
Compression DeviationMaximum deviation from the trend line, as a percentage of the tag's range0.1%
Maximum Time Between SamplesForce a sample after this many seconds regardless of compression60s

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.

Source TypeDescriptionHas Device?Usage
DeviceReads and writes values from a connected industrial device (OPC-UA, Modbus, etc.)YesInput or Output
ExpressionComputes its value from a formula that references other tagsNoRead-only
In MemoryReceives its value from a service — the predict engine, mapping service, or component engineNoRead/Write

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

ConceptDescription
ValueThe tag's current reading — from a device, a computed expression, or a service write
QualityFor OPC-UA tags, the server-reported data quality (Good, Bad, Uncertain)
TimestampWhen the value was last updated
RangeThe expected min/max values — used by AI models for normalization and compression band calculation
Compression overridePer-tag compression settings that override the global defaults
Value mappingAn ordered list of match rules that convert raw values to numeric outputs
Test outputA mode that writes a fixed value for commissioning output tags
ExpressionA formula that computes a tag's value from other tags
Cross referencesA view of everything that reads from or writes to a tag

What's Next