Dashboards 3.0
Dashboards 3.0 is a ground-up rebuild of the Harness dashboarding experience. Moving away from Looker and LookML, the new dashboards are powered by an internal dashboarding technology and a unified data platform purpose-built to drive all data-intensive capabilities across the Harness platform.
| AI-Powered | Dashboard Agent + MCP |
| Query Language | HQL (Harness Query Language) |
| Multi-DB | StarRocks, AlloyDB, BigQuery |
| Widget Types | 10+ |
What Has Changed
Dashboards 3.0 replaces the previous Looker-based dashboarding system with an internally-built technology. This gives Harness full control over the dashboarding experience, removes external dependencies, and enables deeper integration with the platform's AI capabilities.
| Aspect | Previous (Looker) | Dashboards 3.0 |
|---|---|---|
| Technology | Looker + LookML | Internal dashboarding engine |
| Query Language | LookML | HQL (Harness Query Language) |
| AI Integration | None | Dashboard Agent + Knowledge Graph via MCP |
| Data Platform | External (Looker) | Unified Harness Data Platform |
| Backend Support | Single database | StarRocks, AlloyDB, BigQuery, PostgreSQL, MySQL |
Unified Data Platform
Dashboards 3.0 is built on a new unified data platform that Harness has developed to power all data-intensive capabilities across the platform. This platform provides a single interface for querying heterogeneous data sources — events, entities, metrics, and views — across multiple database backends.
Data Sources
| Source Type | Description | Examples |
|---|---|---|
event | Time-series and log data | Spans, logs, cost events, clickstream |
entity | Business objects and transactional data | Pipeline executions, artifacts, API entities |
metric | Aggregated and analytical data | Aggregated cost metrics, performance metrics |
view | Virtual tables that expand to CTEs at query time | Custom views like successful_pipelines |
Query Architecture
HQL queries are parsed, planned, and automatically translated to optimized SQL for the target database backend.
HQL Query String
↓
Parser (ANTLR4)
↓
Query Plan (Protobuf)
↓
Query Planner
↓
SQL Generator (JOOQ)
↓
Database Execution
AI-Powered Dashboard Creation
Harness users can create widgets and dashboards manually or using AI. The AI-powered creation flow is powered by the Dashboard Agent and the Knowledge Graph Tool, both exposed via Harness MCP (Model Context Protocol).
Step 1 — Describe Your Dashboard: Use the AI Assistant to describe the dashboard or widget you need in natural language. For example: "Show me pipeline failure rates by team over the last 30 days."
Step 2 — Dashboard Agent Generates HQL: The Dashboard Agent uses the Knowledge Graph Tool to understand your data model and generates the appropriate HQL query and widget configuration.
Step 3 — Review and Customize: Review the generated dashboard, adjust the HQL queries, change widget types, or refine the layout before saving.
The Knowledge Graph Tool exposes the Harness semantic data model via MCP (Model Context Protocol), allowing the Dashboard Agent to understand entity relationships, available fields, and data types across your entire Harness deployment. This enables the AI to generate accurate HQL queries without requiring you to know the underlying schema.
Widget Types
Dashboards 3.0 supports a wide range of visualization widgets. Each widget is backed by an HQL query and can be created manually or generated by AI.
| Widget Type | Best For |
|---|---|
| Line Chart | Trends over time (e.g., deployment frequency, cost trends) |
| Bar Chart | Comparing categories (e.g., failures by pipeline, cost by region) |
| Pie Chart | Proportional distribution (e.g., status breakdown, resource allocation) |
| Scatter Plot | Correlation analysis (e.g., latency vs. throughput) |
| Table | Detailed data views with sorting and filtering |
| Number / KPI | Single metric display (e.g., total deployments, success rate) |
| Area Chart | Volume trends over time with filled areas |
| Stacked Bar | Breakdown of categories within a group |
| Heatmap | Density visualization (e.g., deployment activity by hour/day) |
| Gauge | Progress toward a target (e.g., SLA compliance, coverage %) |
Harness Query Language (HQL)
HQL is a domain-specific query language designed for querying the Harness Data Platform. It provides a unified interface for querying events, entities, metrics, and views across multiple database backends with pipe-based operations and SQL-like semantics. HQL queries are automatically translated to optimized SQL for the target database.
Key Features
Unified query interface — Query multiple data sources with a single language.
Pipe-based operations — Chain operations using the pipe (|) operator.
SQL-like semantics — Familiar syntax for filtering, grouping, aggregating, and joining.
Type safety — Strong typing with support for events, entities, metrics, and views.
Automatic SQL generation — HQL is translated to optimized SQL for StarRocks, AlloyDB, BigQuery, PostgreSQL, and MySQL.
CTE support — Common Table Expressions for complex, readable queries.
Basic Syntax
Every HQL query starts with find followed by a data source, then pipes operations in sequence.
// Basic structure
find [source] [type] [alias] | [operation] | [operation] | ...
// Simple query
find event "ccm:unified_table"
// Query with operations
find event "ccm:unified_table"
| filter cost > 100
| select { region, sum(cost) as total_cost }
| group_by region
| order_by total_cost desc
| limit 10
Examples
Pipeline execution statistics (last 30 days)
find entity "pipeline:pipeline_execution"
| filter start_time >= ago(30d)
| select {
date_trunc('day', start_time) as day,
status,
count() as execution_count,
count(case when is_successful = true then 1 end) as successful_count
}
| group_by date_trunc('day', start_time), status
| order_by day desc, execution_count desc
Cost analysis by region and cloud provider
find event "ccm:unified_table"
| filter startTime >= ago(30d)
| select {
region,
cloudProvider,
sum(awsBlendedCost) as total_cost,
count() as record_count
}
| group_by region, cloudProvider
| order_by total_cost desc
| limit 20
Error rate analysis with CTEs
with error_events as (
find event logs
| filter level = "ERROR"
| filter timestamp >= ago(24h)
)
find error_events
| select {
date_trunc('hour', timestamp) as hour,
count() as error_count
}
| group_by date_trunc('hour', timestamp)
For the complete HQL language guide including all operations, functions, CTEs, joins, and best practices, see the Harness Query Language (HQL) Reference.