Key points
- A dashboard has sections; pipeline
outputitems publish entries into a named section. - Publication modes are
replace(default),append,snapshot, andseries. entry_keyis what letsreplaceandseriesfind the same entry across runs; it defaults to the output item name.- Source bindings connect a dashboard to the pipelines that feed it, which is what makes refresh possible.
- Refreshes can be scheduled, run on demand, canceled, and retried for only the failed parts.
- Creating a dashboard from the UI requires selecting at least one matching dashboard-output pipeline.
Before you start
- Access
- Dashboard write access in the owning team
- A source of data
- A pipeline that publishes a
type: dashboardfinal output, or an existing dashboard to read
Steps
- 01
Create the dashboard
A dashboard is a named container with sections. Pipelines publish entries into those sections.
Create a dashboardbash curl -sX POST "$NOPSAI_URL/v1/dashboards" \ -H "Authorization: Bearer $NOPSAI_TOKEN" \ -H "Content-Type: application/json" \ -d '{"name":"service-health","team_path":"platform","sections":[{"key":"releases","title":"Releases"}]}'Verify- The dashboard is listed by
GET /v1/dashboards.
- The dashboard is listed by
- 02
Publish into it from a pipeline
The publication contract lives in the pipeline, not in the dashboard: a final output item of
type: dashboardnames the dashboard, section, and entry key.Dashboard final outputyaml output: items: - name: Release health type: dashboard when: success prompt: Publish the release health entry for this service. dashboard: ref: platform/service-health section: releases entry_key: payments mode: seriesExpected resultseriesaccumulates one entry per run under the entry key;replacekeeps only the latest.
- 03
Check the publication history
Publication history is where a missing tile is diagnosed: it records what was published, when, and by which run.
Verify- The most recent run appears in the dashboard publication history.
How it works
GitOps applies dependency roots before dependents, so team-owned dashboards and notification routes resolve their team paths before pipeline dashboard outputs attach to dashboards created in the same sync.
Final-output rows for dashboard items can link directly to the configured dashboard and section when dashboard_target metadata is available.
ttl marks an entry stale after a duration, which is how a dashboard shows "this number is old" rather than quietly presenting outdated state as current.
Implementation evidence
doc/dashboards.mdDashboard model, publication, history, source bindings, and scheduled refresh.
services/nopsai/dashboard_schema.goDashboard, section, and publication schema.

