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.
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 and data source
Chart type and data source
- Chart type: Time series, Top list, or Big number.
- Data source: Requests (one row per model call), Spans, Tool executions, or Evals.
Measures
Measures
Pick an aggregator (Count, Sum, Average, Minimum, Maximum, Count distinct, or Percentile with a Add more than one measure to plot several series, and rename each series.
p between 0 and 1) and the field to aggregate. For ratios, write an expression instead:Filters and group by
Filters and group by
- 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, ortags.team.
Display
Display
- 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:
costis calculated at catalog list price in USD and is empty for unpriced requests.populationiscoding_agentsfor personal-key traffic andworkloadsfor everything else. Filter on it to separate developer tools from apps.memberis empty for traffic on shared keys.memberandapi_keyneed billing read access.tags.*needs payload read and billing read access.
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
workflowormodel. - 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
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
Cost per workflow
Cost per workflow
Time series on Requests, measure Sum of
cost, group by workflow, unit Cost, bars stacked, interval Day.Cost per customer or team
Cost per customer or team
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).Coding agent spend by person
Coding agent spend by person
Top list on Requests, measure Sum of
cost, row filter population = 'coding_agents', group by member.Coding agent cost by branch
Coding agent cost by branch
Top list on Requests, measure Sum of
cost, row filter population = 'coding_agents', group by tags.branch.Error rate by provider
Error rate by provider
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.p95 latency by model
p95 latency by model
Time series on Requests, Percentile of
latency with p 0.95, group by model, unit Duration.Cache hit rate
Cache hit rate
Big number on Requests, expression
sum(cached_input_tokens) / sum(input_tokens), unit Percent.