Skip to main content
Dashboards in Caveman Cloud are boards of charts over your project’s traffic: cost per workflow, latency by model, errors by provider, coding agent spend by branch, or any field you label. You can build them by hand in the chart editor, start from a built-in, or have your coding agent read the traffic and build the whole board. Any chart can also become an alert. Dashboards belong to a project. Open Dashboards in the console sidebar and pick the project at the top. Viewing dashboards needs trace metadata read access, and some roles cannot create them; see Access and limits.

Start from a built-in dashboard

Every project includes two read-only dashboards. Clone one to edit it. Coding agent insights fills in once developers connect with personal keys (setup). Cost by branch needs CAVE_TAGS set.

Create a dashboard

1

Name it and choose what it reads

Click New dashboard, enter a name (up to 120 characters), and choose what it reads: Logs (requests, spans, tools) or Experiments (evaluation scores).
2

Add your first chart

Pick a preset, take one of the charts Suggested for this project (read off the project’s recent traffic), or open the chart editor.
3

Arrange the board

Add sections with New section, drag charts into place (or move them with Alt and the arrow keys), and resize them. Widths snap to 3, 4, 6, 8, or 12 columns, and heights to 1 to 3 rows.
From the dashboard menu you can also Rename, Duplicate, Star, Pin to sidebar, or Delete it.

Build a chart in the editor

The chart editor has a Presets tab and a full editor. Every saved chart must compile, and the editor validates it as you go.
  • Chart type: Time series, Top list, or Big number.
  • Data source: Requests (one row per model call), Spans, Tool executions, or Evals.
Pick an aggregator (Count, Sum, Average, Minimum, Maximum, Count distinct, or Percentile with a p between 0 and 1) and the field to aggregate. For ratios, write an expression instead:
Add more than one measure to plot several series, and rename each series.
  • Row filter keeps matching rows, for example model = 'gpt-4o' and error = false.
  • Trace filter keeps rows whose trace matches, for example tags.customer = 'acme'.
  • Group by splits the chart by a field, such as model, workflow, member, or tags.team.
  • Unit: Count, Duration, Cost, Percent (0 to 1 ratio), or Bytes.
  • Visualization: Lines or Bars, with bars Stacked or Side by side.
  • Time interval: Auto, Hour, Day, or Week.
  • Sort and Rows for top lists: value high to low or low to high, or name A to Z or Z to A, with a row limit.

Request fields

These fields are available on the Requests source. Use them in measures, filters, and group by. Notes:
  • cost is calculated at catalog list price in USD and is empty for unpriced requests.
  • population is coding_agents for personal-key traffic and workloads for everything else. Filter on it to separate developer tools from apps.
  • member is empty for traffic on shared keys.
  • member and api_key need billing read access. tags.* needs payload read and billing read access.
The Spans source adds span_type, tool_name, status, and attributes.*. Tool executions has tool_name, outcome, agent, and workflow. Evals has evaluator, suite, criterion, score, passed, and verdict.

Use a dashboard

  • Time range: choose Past 1 hour up to Past 90 days (limited by your plan’s retention), or drag across a chart to zoom into a span.
  • Filter or search: one filter bar applies to every chart on the board.
  • Group every chart by: regroup the whole board by one field, such as workflow or model.
  • Live: refreshes every chart in place every 30 seconds. Use it for wall screens.
  • Drill into traces: click any point to see the requests behind it.
  • Chart menu: edit, fullscreen, chart-level filters, copy, export the data, or Export to dashboard to copy the chart into another dashboard or project.

Share dashboard configs

Use Download dashboard config or Copy dashboard config to export a board as JSON, and Import dashboard config to paste one exported from any project. A config looks like this:
dashboard.json
Keep shared configs in version control to give every team the same board.

Alert on a chart

Choose Create alert from a chart’s menu and set: Caveman checks the measure on a cadence derived from the window (between every 1 and 15 minutes). When an alert fires and when it resolves, your organization’s owners and admins get an Inbox item and an email. An alert keeps its own copy of the chart, evaluated as a big number with the dashboard’s filters baked in, so later edits to the dashboard do not change it. For hard spend limits, use budgets instead.

Let your coding agent build it

Your coding agent can build dashboards through the Caveman MCP server (setup). Click Build with agent on an empty Dashboards page to copy a ready-made prompt, or write your own:
Prompt
The agent should verify each chart with a query before saving it, because saved charts must compile.

Recipes

Time series on Requests, measure Sum of cost, group by workflow, unit Cost, bars stacked, interval Day.
Top list on Requests, measure Sum of cost, group by tags.customer or tags.team, sort value high to low, 10 rows. Requires sending x-cave-tags (App analytics).
Top list on Requests, measure Sum of cost, row filter population = 'coding_agents', group by member.
Top list on Requests, measure Sum of cost, row filter population = 'coding_agents', group by tags.branch.
Time series on Requests, expression count_if(error) / count(), group by provider, unit Percent (the unit expects a 0 to 1 ratio). Add an alert above your error budget.
Time series on Requests, Percentile of latency with p 0.95, group by model, unit Duration.
Big number on Requests, expression sum(cached_input_tokens) / sum(input_tokens), unit Percent.

Next steps