Skip to main content
Dashboards turn the RevoEngine control plane into an operator-specific workspace. A dashboard can combine live resource grids, performance and identity charts, Trace, Storage, and custom widgets on one movable grid.

Create a dashboard in the app

  1. Open Dashboards and select Manage. Use Add dashboard (+) in the search field.
  2. 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.
  3. 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.
  4. 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.
  5. 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.
Use Manage to open, search, rename, change visibility/default, or delete a saved dashboard. Home is the built-in view; create a named dashboard before adding widgets. Reload discards unsaved layout changes and reloads the saved preference. The grid has 20 columns; palette sizes are starting footprints and may be enlarged for dense data. Widgets are shown only when the viewer has their required roles and resource access.

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.
An unloaded or permission-denied panel is not a valid zero. The dashboard preference grants no access to an embedded resource that the viewer cannot otherwise read.

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.
Each panel can have a dynamic label and can hide its local header or buttons. File and Storage panels can start at a configured path; path locking and drag controls can prevent a focused workspace from becoming a general file browser.

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:
Keep the chosen time window and timezone visible, bound pagination, and mark totals as partial if a cap omits rows. A Jobs Performance panel summarizes the instance, so use a custom chart for a trend restricted to one Endpoint’s related Jobs. Save the matching filters and sort separately on the server-side Jobs History panel; Trace needs the Endpoint’s own ID.
Use a pinned Component digest when an incident or executive dashboard must keep a reviewed revision. Use Latest when new active revisions should be picked up automatically.
The outer dashboard grid has 20 columns. In the Platform API, a dashboard preference’s 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.
Operators begin with the decision surface and open the underlying row, Job, or Trace only when investigation is required.

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 EMPTY result; 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.
See Observability for incident workflows and Limits and quotas for runtime boundaries.
Last modified on September 27, 2026