> ## Documentation Index
> Fetch the complete documentation index at: https://docs.coreflux.org/llms.txt
> Use this file to discover all available pages before exploring further.

# Dashboards in the HUB

> Live panels bound to your broker data — written in the Dashboard Manager or generated by the AI Assistant.

<Frame caption="A published KPI panel running full-screen — a gauge, a live trend, and a numeric readout, all bound to broker topics">
  <img src="https://mintcdn.com/coreflux/ry-30sFxFVWzN72U/images/dashboard/overview-hero.png?fit=max&auto=format&n=ry-30sFxFVWzN72U&q=85&s=269c34293a365f1c597cbcd399f12cb8" alt="Coreflux dashboard panel titled Operational KPI Dashboard showing a Message Count gauge at 135 msg, a rising Message Count Trend line chart, and an Error Rate readout of 1.25 percent" width="1665" height="527" data-path="images/dashboard/overview-hero.png" />
</Frame>

Dashboards in Coreflux are **panels**: live screens assembled from components — gauges, charts, controls — each wired to data flowing through your broker. You write them in the **Coreflux HUB** Dashboard Manager, where the panel definition and its live result sit side by side, or you ask the **AI Assistant** to build one for you and refine it from there.

<Tip>
  **Like a control room sketched in plain text.** You describe a gauge, point it at a signal, and it shows that signal live from the moment you save — no wiring diagram, no deploy step.
</Tip>

## What you can build

* **KPI walls** — large readouts and trends for supervisors
* **Line and area overviews** — at-a-glance status for a process or zone
* **Machine detail** — gauges, indicators, and controls for a single asset
* **Operator stations** — buttons, toggles, and setpoints where people work the process
* **Shift and mobile views** — simplified layouts for tablets and shared screens

***

Panels are authored as **LoT (Language of Things)** definitions — the syntax is documented under [LoT PANEL](/latest/lot-language/panels/defining-panels), which versions with your broker. The rest of this page is a quick tour of what the HUB renders; every widget has a full reference linked at the end.

## Your first panel in 60 seconds

<Tabs>
  <Tab title="In the Dashboard Manager">
    Open **Dashboards** in the HUB, click **Create new panel**, and write the definition below. The panel renders live as you save — point a gauge at a topic and the needle starts moving:

    <Frame caption="The saved panel: a live gauge reading 82.0 °C from the temperature topic">
      <img src="https://mintcdn.com/coreflux/ry-30sFxFVWzN72U/images/dashboard/other/first-panel.png?fit=max&auto=format&n=ry-30sFxFVWzN72U&q=85&s=48f432ea78be15567897c387e374eac7" alt="The Sensor Monitor panel rendering a single radial gauge bound to the temperature topic" width="1665" height="553" data-path="images/dashboard/other/first-panel.png" />
    </Frame>

    ```lot wrap theme={"theme":"css-variables","languages":{"custom":["/languages/lot.json"]}}
    DEFINE PANEL SensorMonitor
    WITH VISIBILITY PUBLIC
    WITH STATE PUBLISHED
    WITH TITLE "Sensor Monitor"
    WITH LAYOUT "grid" COLUMNS 2

        ADD COMPONENT "TempGauge" WITH TYPE "gauge"
            SET RANGE FROM 0 TO 100
            SET UNIT "°C"
            BIND VALUE TO TOPIC "sensor/temperature"
    ```

    Every part of a definition is covered step by step in [Defining a Panel](/latest/lot-language/panels/defining-panels).
  </Tab>

  <Tab title="Ask the AI Assistant">
    Describe what you want in plain language:

    > "Build me a panel with a radial temperature gauge on `sensor/temperature`, range 0–100 °C, with a warning threshold at 75."

    The assistant creates the panel for you. Open it in the Dashboard Manager to see the definition it wrote — and adjust anything directly. See [AI Assistant](/hub/ai-assistant).
  </Tab>
</Tabs>

<Note>
  Include `WITH VISIBILITY PUBLIC` **and** `WITH STATE PUBLISHED` in every panel definition — panels saved without them may not appear in the Dashboard Manager list. See [Defining a Panel](/latest/lot-language/panels/defining-panels).
</Note>

## Tour of the main widgets

A quick taste of each family — every widget has a full reference page.

### Readouts

<Tabs>
  <Tab title="Gauge">
    A value with context: range, unit, and thresholds.

    <Frame caption="A radial gauge bound to the temperature topic, with a 75 °C warning threshold configured">
      <img src="https://mintcdn.com/coreflux/ry-30sFxFVWzN72U/images/dashboard/components/gauge-threshold.png?fit=max&auto=format&n=ry-30sFxFVWzN72U&q=85&s=b79957bdaedaf310c62a27d90117ddbb" alt="A radial temperature gauge reading 82.0 °C" width="815" height="529" data-path="images/dashboard/components/gauge-threshold.png" />
    </Frame>

    ```lot wrap theme={"theme":"css-variables","languages":{"custom":["/languages/lot.json"]}}
    ADD COMPONENT "TempGauge" WITH TYPE "gauge"
        SET RANGE FROM 0 TO 100
        SET UNIT "°C"
        BIND VALUE TO TOPIC "sensor/temperature"
    ```
  </Tab>

  <Tab title="Value">
    The big number — unit, decimals, wall-readable.

    <Frame caption="A formatted error-rate readout with two decimals">
      <img src="https://mintcdn.com/coreflux/ry-30sFxFVWzN72U/images/dashboard/components/value-error-rate.png?fit=max&auto=format&n=ry-30sFxFVWzN72U&q=85&s=06d34f7c733788d3397485f270a01bb9" alt="A numeric readout labeled Error Rate showing 1.25 percent" width="535" height="361" data-path="images/dashboard/components/value-error-rate.png" />
    </Frame>

    ```lot wrap theme={"theme":"css-variables","languages":{"custom":["/languages/lot.json"]}}
    ADD COMPONENT "ErrorRate" WITH TYPE "value"
        SET LABEL "Error Rate"
        SET UNIT "%"
        SET DECIMALS 2
        BIND VALUE TO TOPIC "kpi/operational/errorRate"
    ```
  </Tab>

  <Tab title="Indicator">
    State at a glance — values mapped to colors.

    <Frame caption="A status dot that turns green for running and red for stopped">
      <img src="https://mintcdn.com/coreflux/ry-30sFxFVWzN72U/images/dashboard/components/indicator-status.png?fit=max&auto=format&n=ry-30sFxFVWzN72U&q=85&s=9553919702a348c0ae388c8b11f18c0f" alt="A green machine status indicator dot for the running state" width="535" height="57" data-path="images/dashboard/components/indicator-status.png" />
    </Frame>

    ```lot wrap theme={"theme":"css-variables","languages":{"custom":["/languages/lot.json"]}}
    ADD COMPONENT "MachineStatus" WITH TYPE "indicator"
        BIND STATE TO TOPIC "machine/status"
        SET ON_VALUE "running" WITH COLOR "green"
        SET ON_VALUE "stopped" WITH COLOR "red"
    ```
  </Tab>

  <Tab title="Alert">
    A banner that appears when a condition is true.

    <Frame caption="An alert banner showing the live alarm message while the alarm flag is true">
      <img src="https://mintcdn.com/coreflux/ry-30sFxFVWzN72U/images/dashboard/components/alert.png?fit=max&auto=format&n=ry-30sFxFVWzN72U&q=85&s=e7dcc7473dfdd5371642458dddfb02f6" alt="An alert banner showing a pump pressure critical message" width="538" height="133" data-path="images/dashboard/components/alert.png" />
    </Frame>

    ```lot wrap theme={"theme":"css-variables","languages":{"custom":["/languages/lot.json"]}}
    ADD COMPONENT "AlarmBanner" WITH TYPE "alert"
        BIND VISIBLE TO TOPIC "pump/alarm_active"
        BIND CONTENT TO TOPIC "pump/alarm_message"
        SET VARIANT "critical"
    ```
  </Tab>
</Tabs>

### Charts and tables

<Tabs>
  <Tab title="Real-time trend">
    Builds a live trend from individual data points on a topic.

    <Frame caption="A realtime-chart building a line from values as they arrive">
      <img src="https://mintcdn.com/coreflux/ry-30sFxFVWzN72U/images/dashboard/components/realtime-chart-full.png?fit=max&auto=format&n=ry-30sFxFVWzN72U&q=85&s=5b5353a0f8f39c764ece8f5bd1f10db2" alt="A realtime line chart trending as message count points arrive" width="815" height="278" data-path="images/dashboard/components/realtime-chart-full.png" />
    </Frame>

    ```lot wrap theme={"theme":"css-variables","languages":{"custom":["/languages/lot.json"]}}
    ADD COMPONENT "MessageCountTrend" WITH TYPE "realtime-chart"
        SET LABEL "Message Count Trend"
        SET CHART_TYPE "line"
        SET UNIT "msg"
        BIND VALUE TO TOPIC "kpi/operational/messageCount"
            SET SERIES_LABEL "Message Count"
    ```
  </Tab>

  <Tab title="Table">
    Rows from a JSON array topic or query result.

    <Frame caption="A table populated from a JSON array topic">
      <img src="https://mintcdn.com/coreflux/ry-30sFxFVWzN72U/images/dashboard/components/table.png?fit=max&auto=format&n=ry-30sFxFVWzN72U&q=85&s=623c8fc914491f4a61a47c0e610b972e" alt="A table with time, barcode, product, and status columns showing recent scans" width="814" height="278" data-path="images/dashboard/components/table.png" />
    </Frame>

    ```lot wrap theme={"theme":"css-variables","languages":{"custom":["/languages/lot.json"]}}
    ADD COMPONENT "ScanHistory" WITH TYPE "table"
        BIND DATA TO TOPIC "barcode/history"
        SET COLUMNS "time, barcode, product, status"
    ```
  </Tab>
</Tabs>

### Controls

<Tabs>
  <Tab title="Toggle">
    On/off switch that tracks the live state of its bound topic.

    <Frame caption="A pump-enable toggle reflecting the live pump state">
      <img src="https://mintcdn.com/coreflux/ry-30sFxFVWzN72U/images/dashboard/components/toggle-pump.png?fit=max&auto=format&n=ry-30sFxFVWzN72U&q=85&s=7e5aa0ef6d5fa569af39fbca00c45118" alt="A pump enable toggle switched on" width="815" height="50" data-path="images/dashboard/components/toggle-pump.png" />
    </Frame>

    ```lot wrap theme={"theme":"css-variables","languages":{"custom":["/languages/lot.json"]}}
    ADD COMPONENT "PumpControl" WITH TYPE "toggle"
        SET LABEL "Pump Enable"
        BIND STATE TO TOPIC "zone1/pump/state"
    ```
  </Tab>

  <Tab title="Button">
    Click to act — publish a command to any topic, or navigate to another panel.

    <Frame caption="A button that publishes a start command when clicked">
      <img src="https://mintcdn.com/coreflux/ry-30sFxFVWzN72U/images/dashboard/components/button.png?fit=max&auto=format&n=ry-30sFxFVWzN72U&q=85&s=cd6b3b083b4e42d4d4d0c42ce1976ef1" alt="A Start Production button on a dashboard" width="815" height="66" data-path="images/dashboard/components/button.png" />
    </Frame>

    ```lot wrap theme={"theme":"css-variables","languages":{"custom":["/languages/lot.json"]}}
    ADD COMPONENT "StartButton" WITH TYPE "button"
        SET LABEL "Start Production"
        ON CLICK DO
            PUBLISH TOPIC "factory/commands/start" WITH 1
    ```
  </Tab>

  <Tab title="Slider">
    Numeric value tracked live on a range.

    <Frame caption="A 0–100 % speed slider tracking the live conveyor speed">
      <img src="https://mintcdn.com/coreflux/ry-30sFxFVWzN72U/images/dashboard/components/slider-speed.png?fit=max&auto=format&n=ry-30sFxFVWzN72U&q=85&s=d28f7e799225dc20c6812dfa4b9b5ead" alt="A conveyor speed slider set to 65 percent" width="815" height="86" data-path="images/dashboard/components/slider-speed.png" />
    </Frame>

    ```lot wrap theme={"theme":"css-variables","languages":{"custom":["/languages/lot.json"]}}
    ADD COMPONENT "SpeedSlider" WITH TYPE "slider"
        SET RANGE FROM 0 TO 100
        SET UNIT "%"
        BIND VALUE TO TOPIC "zone1/conveyor/speed"
    ```
  </Tab>
</Tabs>

## What dashboards can do

* **Live bindings** — bind to MQTT topics, LoT Model fields, or database queries; widgets update the moment values change. See [Data Binding](/latest/lot-language/panels/data-binding).
* **Interactive controls** — buttons and entry fields that publish commands, invoke Actions, and trigger Routes. See [Actions & Events](/latest/lot-language/panels/actions-events).
* **Multi-page navigation** — buttons and cards that jump between panels with `NAVIGATE`, for overview-to-detail drill-downs. See [Defining a Panel](/latest/lot-language/panels/defining-panels#navigation).
* **Share on any screen** — a panel URL runs full-screen on wall TVs, tablets, and kiosks, no app install. See [Dashboards in the HUB](/hub/dashboards/overview).

## Next Steps

<CardGroup cols={2}>
  <Card title="Build your first dashboard" icon="rocket" href="/latest/quick-start/building-dashboards">
    A 10-minute guided walk from topic to published panel.
  </Card>

  <Card title="Component reference" icon="table-cells" href="/hub/dashboards/components/display">
    Every widget, every property, every bind target.
  </Card>
</CardGroup>
