Monitoring
Where to find it: Workspace → Operation → Monitoring (/operation/monitoring). It needs the monitoring:read permission; without it, this page is not reachable. It is per-project, so pick the project in the sidebar's project selector first. If no project is selected, the page just shows "Select a project to view its resource health."
Think of this page as your at-a-glance view of whether the resources ACE discovered for the active project are actually working. Each one is checked by real commands run against your infrastructure, not just a status your cloud provider reports.
What do the stat tiles show?
Three clickable tiles sit at the top:
- Healthy: count of resources whose latest check verdict is up.
- Down: count of resources whose latest check verdict is down.
- Awaiting first check: count of resources with no completed check yet (includes ones still being generated or that failed to generate).
Click a tile to filter the Resource health list below to just that state, and switch to the Resource health tab if you were on Incidents. Click the same tile again to clear the filter. The active tile gets a highlighted border.
What the tabs do
Below the tiles, a tab bar shows:
- Resource health: every monitored resource. The badge next to the tab label shows the total resource count (not affected by any filter).
- Incidents: only shown if you have the
incident:readpermission. The badge shows the number of incidents that have not been merged into another incident (this includes resolved ones, so it is not a strict "open" count).
If you do not have incident:read, the Incidents tab does not render at all and the Resource health list is shown regardless of which tab is selected.
The Resource health tab
Loading: a spinner with "Loading health checks…".
Error: "Couldn't load health checks." if the request fails.
Empty: if there are no health checks at all, you will see "No health checks yet" with a note that health checks are generated automatically as resources are discovered. Run a discovery scan, or trigger the backfill for resources found before monitoring was enabled.
Filtered view: if you got here via a stat tile, a banner reads Filtered to <up|down|pending> (<count>) with a Clear filter link on the right. If the filter matches nothing, it shows "No resources match this filter."
Each row shows:
- The resource's name (falls back to its identifier, then its ID, then "Unknown resource" if there is no resource record at all).
- An outline badge with the resource type (or "resource" if unknown).
- A line below with the provider, and the region if one is set.
- On the right, one badge:
- If the check is still being set up (
status: pending): "Validating command (attempt N/10)…", "Generating command (attempt N/10)…", or, before the first progress update arrives, "Queued…". - If command generation failed (
status: failed): "Generation failed". - Otherwise, the verdict badge: "Up" (success), "Down" (destructive), or "No data yet" (no completed run).
- If the check is still being set up (
- A time-ago timestamp ("Xs/m/h/d ago") next to the badge, if a run has completed.
Click a row to expand it in place. The chevron flips from right to down. Expanded content, in order:
- Command: the exact shell command generated for this check, if one exists yet.
- A warning line if generation failed:
Command generation failed after N attempt(s): <reason>. - If the latest run is Down and has an analysis, a highlighted box with the AI's explanation of why the resource is down.
- Recent runs: every stored run for this check, each showing its verdict badge,
exit <code> · <duration>ms, and a time-ago stamp. Down runs get a subtle red background, others a subtle green one. If there are no runs yet, it just says "No executions yet."
Pagination appears only when there is more than one page (10 rows per page by default). Controls: a Rows per page dropdown (10/20/50/100, and changing it jumps back to page 1), a "Showing X–Y of Z resources" count, and page-forward and page-back controls.
The Incidents tab
Shown only with incident:read. This is the same incident list used on the dedicated Incidents page, embedded here so you can check open problems without leaving the dashboard. Incidents that have been merged into another incident are never shown, here or there.
Empty: "No incidents" with a note that incidents surface here when a health check fails or an alert comes in from a connected pipeline or tool.
Filters: up to three dropdowns (Severity, Status, Type), each defaulting to "All". A dropdown only appears if there are at least two distinct values for that field among the current incidents; for example, if every incident is "open", the Status dropdown does not show up at all. If your filters match nothing, it shows "No incidents match the current filters."
Each row shows the incident's source ID (monospace, truncated, so hover for the full value), a search icon if a leading emoji was stripped from the title, the title itself (hover for the full text if truncated), and a View PR ↗ link if a URL was embedded in the raw title (opens in a new tab, and does not also trigger the row click). A one-line summary appears below the title if the incident has one. On the right: a severity badge, a status badge, a type badge (if set), a "×N" badge if it has recurred more than once, a source badge (if set), and a time-ago stamp for when it was detected.
Clicking anywhere on a row (other than View PR) opens the incident's detail page at /operation/incidents/<projectId>/<incidentId>.
Pagination works the same way as the Resource health tab (10 per page by default, same Rows-per-page control).
For everything else about incidents (severity and status meaning, flapping, merging, the Agent analysis panel, creating an issue from an incident, and the dedicated Incidents page), see the Incidents guide.
Who can do this?
monitoring:read: required to open this page at all.incident:read: required for the Incidents tab to appear.