Skip to main content
Manage Upstack dashboard views from the command line. Wraps the /api/dashboard/views/* endpoints — see the API reference and the per-endpoint pages under the Dashboards group for full request/response shapes.

Subcommands

list

List dashboard views for the configured pixel.

show

Fetch a single view with its full configuration as JSON.

build

The high-level builder — pass a list of measures, get a finished dashboard with auto-laid-out sparkline tiles. The most common command for AI agents and quick “give me a dashboard with these KPIs” workflows.
Optional flags: The CLI resolves each measure’s friendly shortTitle from GET /api/measures (cached) before posting, so widget titles read nicely in the web app.

create

Advanced — create a view from a full DashboardViewConfiguration body. Use build instead unless you have a specific configuration to load (e.g. exported from another pixel).
The file must contain { type, name, configuration, order? }.

update

Partial update — only fields you pass are changed.

copy

Duplicate a view.

delete

Delete a view. Prompts for confirmation; --yes skips the prompt.

Sections

A view’s widgets are grouped into sections — labelled blocks the web app renders with a header, optional collapse/hide, per-section density/pacing overrides, and a chosen layout mode. The CLI exposes every section operation the web app supports. Every section subcommand follows a GET → mutate → PATCH flow internally: it fetches the view’s current configuration, applies the mutation locally, then sends the full new configuration back via PATCH /api/dashboard/views/{id}. You don’t need to construct the JSON yourself.

section list

Print the sections in a view as a table (id, ordinal, layout mode, widget count, title, flags like pinned / hidden / collapsed).

section add

Create a new section. By default, appends to the bottom of the non-pinned sections.

section rename / clone / delete

clone deep-copies the section’s widgets with fresh ids and appends the new section directly after the source. delete migrates any widgets from the deleted section into the first remaining non-pinned section so widgets aren’t lost. The Pinned section can’t be renamed, cloned, or deleted directly — it’s managed via pin/unpin.

section reorder

Move a non-pinned section to a 0-based position among the other non-pinned sections.

section collapse / expand / hide / unhide

Toggle the display state of a section.
collapse keeps the header but hides the section’s widgets. hide removes the entire section from rendering (config is preserved).

section layout

Set the section’s layout mode. Accepted values: auto, 1_column, 2_columns, 3_columns, 4_columns (matches the backend enum exactly; the CLI lowercases input so capitalization in your shell is fine).

section density / pacing

Per-section overrides for density (compact or normal) and pacing. Pass inherit (density) or --inherit (pacing) to clear the override and fall back to view-level defaultSettings.

section move-widget

Move a widget from its current section into another non-pinned section. Use pin/unpin instead to move widgets in and out of the Pinned section.

section migrate

Legacy views created before sections were introduced have a flat configuration.widgets array and no configuration.sections. Run migrate to wrap those widgets in a single Main section so the CLI’s other section commands can operate on them.
Safe to call on views that already have sections (no-op).

Pins

Pinning copies a widget into a dedicated Pinned section that always renders first in the view (it has ordinal: -1 and sectionType: "PINNED"). The Pinned section is created on the first pin and removed when its last widget is unpinned — you never create or delete it yourself.
Pinning the same widget twice is rejected — call unpin first if you want to re-pin a modified original.