Create a dashboard in the app
- Open Dashboards and select Manage. Use Add dashboard (
+) in the search field. - Enter a name (3–60 characters), an optional description (up to 1000 characters), and choose Global and Default only when their visibility or default behavior is intended. Select Save. The new dashboard opens empty.
- Select Unlock, then Widgets. Search the library, use a widget’s Add button or drag it onto the grid. Drag insertion previews how existing widgets will move.
- Select Configure on the new widget. Its tab opens in the widget panel; set the source and any controls listed below. Move or resize the widget while the grid is unlocked. A newly added widget waits for configuration before its content becomes interactive.
- Select the dashboard Save button to persist the complete layout and current built-in grid filters and sort. Select Lock to return to the operator view. Locking alone does not save edits.
Complete widget library
These are the 38 entries in the current Add Widgets palette. Names below match the app. Most built-in resource grids have no source picker: open the widget, apply its own filter and sort controls, then save the dashboard if that state should reopen. A widget can be visible in the palette yet show Insufficient permissions to a viewer without its required role. Resource ACLs remain in force independently of dashboard visibility.
The app can also render Endpoint Summary in existing stored dashboard definitions, but it is not an Add Widgets palette entry. The three Database source entries share one renderer for views or use the table renderer as appropriate; the seven AI Usage entries share one renderer with different initial chart settings. Do not substitute a palette label for the stored renderer type when using the Platform API.
Configure a widget
Every widget has Widget → Label, Presentation → Hide header, and Presentation → Hide actions, plus Remove. Hiding the header also clears Hide actions. Configuration opens in a tab beside Widgets while the dashboard is unlocked.Preserve an operator view
Embedded grids retain meaningful filter and sort state in the saved dashboard definition. Use this to build views such as:- failed Jobs for one settlement category;
- Endpoint latency and Trace evidence for a customer-facing API;
- pending Webhooks for one external integration;
- a restricted Storage folder for an operations team.
Custom widgets: inline or reusable code
An analytical widget generated in an Assistant conversation can be saved here through Convert to dashboard. Choose a new or existing dashboard, review the original code and inputs, and select a dynamic source or fixed snapshot. Dynamic inline code executes when the dashboard loads and refreshes; a snapshot preserves the displayed result. This is a user-directed save and requires dashboard write access. See Assistant charts, diagrams and tables. A Custom Widget renders code output as text, charts, tables, or empty space. Choose Inline code for logic used only by this dashboard. Choose Reusable component when the same logic needs its own Component lifecycle or will serve several dashboards. Configure:
Inline code runs in Sandbox debug mode; a reusable Component runs through its normal execution path. Debug mode is intended for inspection and suppresses many writes, but it is not a strict read-only security boundary. Treat inline code as executable, keep it read-only by design, and never embed secrets. Both sources return a matrix of rows containing elements of type
TEXT, CHART, TABLE, or EMPTY. Chart elements require an options object and a data array. Table elements require a data array and column definitions.
For a dashboard focused on one Endpoint and its related Jobs, pass verified Job template IDs through Inputs as JSON, for example {"templateIds":["verified-template-id"]}. The following inline JavaScript makes a bounded read, groups the returned runs by UTC day and returns a heading, chart, table and intentional spacer. It labels the result as partial when the 100-row cap may have omitted runs:
data is one flat array of panel objects. Each panel stores its position and size as x, y, cols, and rows; the custom widget’s returned rows and cell widths control only the layout inside that panel. A server-side Jobs History panel can retain its column filter and sort order when the dashboard is saved. A custom TABLE uses the returned data in the browser; its live table filters are not saved as dashboard state. Trace stores its own applied filters, including an optional Endpoint selection.
Refresh and source of truth
A dashboard is presentation, not a separate data store. Embedded grids reload through their owning APIs; custom widgets execute their inline code or Component according to widget refresh settings. If a number looks stale, check the owning Table/view, Endpoint, Job, cache, or widget result. For expensive repeatable aggregation, build a materialized view and refresh it through a Schedule. The dashboard then reads a governed precomputed result instead of repeatedly scanning the same large dataset.Real use case: order operations
An order-operations dashboard can combine:- an Endpoint performance panel filtered to checkout routes;
- a Database Data panel showing orders stuck in
PROCESSING; - Job History filtered to reconciliation failures;
- Webhooks filtered by warehouse correlation metadata;
- a custom widget summarizing balances, orders, and unsettled transactions.
Failure semantics
- Widget error means its inline code, Component, or result contract failed; inspect widget input and execution evidence.
- Empty widget can be an intentional
EMPTYresult; distinguish it from loading and failure. - Stale grid requires a source/API check; moving or re-saving the panel does not refresh authoritative data.
- Reload discards unsaved layout changes and reloads the saved preference.
- Concurrent edit is protected by dashboard versioning; reload before overwriting a newer preference.
Production checklist
- Give each dashboard one operational purpose.
- Expose decisions and exceptions, not raw volume alone.
- Keep filters, time range, and environment clear.
- Pin consequential reusable widgets to reviewed Component revisions; review inline code before sharing a dashboard.
- Set refresh intervals according to source cost and freshness needs.
- Test with an operator’s actual roles and ACLs.
- Link panels to underlying Job, resource, or Trace evidence.
- Lock and save the final layout.

