Dashboard concepts

Mach5 dashboards are persistent, namespaced resources made of query-backed panels on a grid canvas. Dashboards can be created manually, promoted from AI investigation, packaged in apps, or generated by automation.

Use dashboards when a team needs a durable view of operational data: summaries, trends, timelines, ranked lists, tables, maps, agent activity, or investigation evidence.

Dashboards list in Mach5

Dashboard structure

A dashboard has these top-level parts:

ConceptPurpose
MetadataName, description, tags, and source information.
RefreshControls automatic dashboard refresh.
Time rangeOptional shared time window for all panels.
ParametersShared inputs such as environment, service, user, severity, or time range.
LayoutGrid settings and optional tabs.
PanelsQuery-backed visualizations.
InteractionsClick, select, cross-filter, drilldown, navigation, and URL actions.

A minimal dashboard contains a description, layout, and at least one panel.

Minimal dashboard screenshot

{
  "description": "Security operations overview",
  "tags": ["security", "operations"],
  "refresh": {
    "enabled": true,
    "interval_seconds": 60
  },
  "layout": {
    "columns": 24,
    "row_height": 30
  },
  "panels": []
}

Sources

The source field describes where the dashboard came from.

OriginMeaning
manualCreated by a user or API call.
promotedPromoted from an AI investigation session.
aiGenerated by AI.
appShipped as part of a Mach5 app.
{
  "source": {
    "origin": "app",
    "app_id": "agent-runtime-attribution"
  }
}

Promoted dashboards can preserve the investigation context:

{
  "source": {
    "origin": "promoted",
    "promoted_from": {
      "session_id": "sess_01J...",
      "turn_id": "turn_07"
    }
  }
}

Refresh

Refresh controls how often the dashboard updates while open.

{
  "refresh": {
    "enabled": true,
    "interval_seconds": 30
  }
}

Use shorter refresh intervals for live operations. Use longer intervals for expensive queries or historical dashboards.

Panels can override the dashboard refresh interval with refresh_override_seconds.

Time range

Dashboards can define a shared time range.

Relative time range:

{
  "time_range": {
    "mode": "relative",
    "value": 24,
    "unit": "hours"
  }
}

Absolute time range:

{
  "time_range": {
    "mode": "absolute",
    "from_epoch_ms": 1735689600000,
    "to_epoch_ms": 1735776000000
  }
}

Supported relative units are minutes, hours, days, and weeks.

Parameters and filters

Parameters are shared dashboard inputs. They power filters, panel query placeholders, drilldowns, and cross-filtering.

Supported parameter types:

TypeUse it for
time_rangeShared time picker.
textFree-form filter input.
selectSingle choice from static or query-backed options.
multi_selectMultiple choices from static or query-backed options.
numberNumeric threshold, limit, or score.

Static select parameter:

{
  "name": "severity",
  "display_name": "Severity",
  "type": "select",
  "default_value": "high",
  "required": false,
  "config": {
    "kind": "select",
    "options": [
      { "value": "critical", "label": "Critical" },
      { "value": "high", "label": "High" },
      { "value": "medium", "label": "Medium" }
    ],
    "allow_custom": false
  }
}

Query-backed select parameter:

{
  "name": "service",
  "display_name": "Service",
  "type": "select",
  "config": {
    "kind": "select",
    "query": {
      "sql": "SELECT DISTINCT service AS value FROM runtime_events ORDER BY service",
      "value_column": "value",
      "label_column": "value",
      "refresh_on_dashboard_open": true
    }
  }
}

Number parameter:

{
  "name": "min_risk",
  "display_name": "Minimum risk",
  "type": "number",
  "default_value": "70",
  "config": {
    "kind": "number",
    "min": 0,
    "max": 100,
    "step": 5
  }
}

Text parameter:

{
  "name": "user_search",
  "display_name": "User search",
  "type": "text",
  "config": {
    "kind": "text",
    "placeholder": "alice@example.com"
  }
}

Layout

Dashboards use a grid layout. The default is 24 columns with a row height of 30 pixels.

{
  "layout": {
    "columns": 24,
    "row_height": 30,
    "tabs": [
      {
        "name": "Overview",
        "panel_ids": ["p_total_findings", "p_findings_over_time"]
      },
      {
        "name": "Evidence",
        "panel_ids": ["p_recent_events", "p_process_tree"]
      }
    ]
  }
}

Each panel defines its own position:

{
  "grid_pos": {
    "x": 0,
    "y": 0,
    "w": 8,
    "h": 4
  }
}

Panels

A panel combines a query, visualization, grid position, and optional interactions.

{
  "id": "p_total_findings",
  "title": "Total findings",
  "grid_pos": { "x": 0, "y": 0, "w": 6, "h": 4 },
  "query": {
    "source": {
      "type": "sql",
      "sql": "SELECT COUNT(*) AS total FROM findings WHERE severity = {{severity}}"
    },
    "parameter_bindings": [
      {
        "parameter_name": "severity",
        "query_placeholder": "{{severity}}"
      }
    ]
  },
  "visualization": {
    "type": "metric_card",
    "emphasis": "hero",
    "config": {
      "value_column": "total"
    }
  }
}

Query sources

Panels can query data through several sources.

Query sourceUse it for
sqlSQL queries over Mach5 indexes, tables, or views.
mqlMQL queries where MQL is preferred.
opensearchOpenSearch-compatible request bodies.
app_queryNamed queries packaged by a Mach5 app.
notebook_cellReuse a notebook cell result.

Visualizations

Supported visualization types include:

  • auto
  • data_table
  • time_chart
  • column_chart
  • area_chart
  • pie_chart
  • metric_card
  • level_chart
  • map
  • process_tree
  • network_graph
  • timeline
  • summary
  • ranked_list
  • agent_run_list
  • command_evidence_list
  • sensitive_command_catalog
  • log_source_coverage
  • network_flow_list

Visualization emphasis controls sizing and prominence:

EmphasisUse it for
heroTop-level KPI or primary visualization.
primaryMain dashboard panels.
detailEvidence or expanded detail panels.
supportingContext, helper tables, or secondary charts.

Common visualization config fields:

FieldPurpose
group_byColumn used to group series or categories.
max_seriesMaximum number of series to render.
columnsColumns to show in tables and evidence lists.
value_columnMetric or value column.
stackingnone, stack, or overlay.
show_legendWhether to show a legend.

Interactions

Interactions make dashboards active. A panel can cross-filter another panel, open an investigation, navigate to another dashboard, or open an external URL.

Supported triggers:

TriggerMeaning
clickUser clicks a row, point, or value.
selectUser selects a value from a column.

Supported actions:

ActionMeaning
cross_filterSet a dashboard parameter from a selected value.
drill_to_investigationOpen an AI investigation prompt.
navigate_to_dashboardNavigate to another dashboard with parameter mappings.
open_urlOpen an external URL from a template.

Example cross-filter:

{
  "trigger": {
    "type": "select",
    "column": "service"
  },
  "action": {
    "type": "cross_filter",
    "target_parameter": "service",
    "value_from": "service"
  }
}

For full configuration examples, see Dashboard configuration.

Analytics Cookies

Help us understand website usage.

Necessary storage remembers your choice. With your consent, Mach5 also uses PostHog analytics to measure website traffic and interactions.

Change this anytime from Cookie Settings in the footer. Privacy Notice.