Tags & Data Sources

Dashboards don't connect directly to databases or APIs. Instead, they bind to tags. Tags are the universal data layer that sits between your data sources and your dashboards.

What Are Tags?

A tag is a named value that updates in real time. Examples:

default.temperature        → 72.5
default.pump.speed         → 1450
default.alarms.high_temp   → true

Every chart, gauge, text block, or color binding in your dashboard reads from tags. When a tag value changes, every dashboard bound to it updates instantly.

Connecting Data Sources

Tags can pull data from multiple source types:

SourceDescription
ManualSet values directly — good for setpoints, constants, and testing
SQLPoll a PostgreSQL, MySQL, or other SQL database on an interval
HTTPPoll a REST API endpoint and extract values from the JSON response
InfluxDBQuery InfluxDB v2 with Flux
PrometheusQuery Prometheus with PromQL
SimulationGenerate synthetic data for demos and testing
ComputedCalculate values from other tags using JavaScript

No matter what the source is, your dashboard binds to the tag the same way. If you swap a simulated source for a real database later, the dashboard doesn't need to change.

Live Data Flow

Data source (database, API, device, etc.)
  → Tag system
  → WebSocket stream
  → Your dashboard updates in real time

The editor preview and the published dashboard both use the same live data stream, so what you see while building is what your users see in production.

Historian

Control Seat automatically records tag history to ClickHouse. You can query historical data for:

  • Raw points — every recorded value in a time range
  • Last values — the most recent value for a set of tags
  • Aggregates — averages, min, max, and count over time buckets

Historian data powers time-series charts and historical replay features.

Example Tag

{
  "path": "process.pump.speed",
  "type": "float64",
  "writable": true,
  "source_kind": "sql"
}

Why Tags?

  • One naming model — dashboards use tag paths regardless of the underlying source
  • Portable bindings — swap data sources without changing dashboards
  • Controlled writes — write operations go through a managed path, not raw device APIs
  • Shared address space — live values, historian, simulation, and computed values all use the same tag paths