/observe
GitHubGet started

Ask for a dashboard. Get one that works.

The agent takes an inventory of the metric families in scope before it plans, saves one panel at a time, and ends with a version and a link. Every family in scope, apart from runtime metrics, ends in a panel or a stated reason, and every panel the agent adds or changes is run before the save.

observe.example.com/b/7c2e91a4-5b0d-4e8f-9a1c-3d6f2b8e4a17
/Dashboards/Checkout health
Overview
Requests/s
1.9kreq/s
Error ratio
0.4% OK
p95 latency
212ms
Pods ready
3
Traffic
Requests by pod
checkout-0checkout-1checkout-2
Latency by route
/checkout/cart
Errors by route
routeerrorsratio/checkout410.9%/cart30.1%/product/{id}00.0%/search10.0%
Internals
DB pool in use
in use
Queue depth
18
Payment success
99.1% OK
Reservations/s
64req/s
Cache hit ratio
94%
checkout health by pod, last 6h
Ran 15 steps in 38s
Checkout health12 panels from promOpen dashboard
Saved as version 1, just now
Request 7c2e91a4
Ask for another change to Checkout health
Each change is saved as a new version of the dashboard.

A build, played back.

Every family in scope is accounted for.

Before it plans, the agent takes an inventory of every metric family in scope: a job, a service, a namespace, or a table. Every family in scope, apart from runtime metrics, ends in a panel or a stated reason, and the save result lists anything uncovered. Runtime metrics are counted, not listed.

12 families12 panels0 uncovered
list_metrics scope={job="checkout"}
family series planned ashttp_requests_total 18 Requests/s · Errors by routehttp_request_duration_seconds 54 p95 latency · Latency by routecheckout_orders_total 6 Queue depthcheckout_payment_total 9 Payment successinventory_reservations_total 6 Reservations/sdb_pool_in_use 3 DB pool in usedb_pool_max 3 DB pool in usekube_pod_status_ready 3 Pods ready…2 runtime families counted12 families · 12 planned · 0 uncovered
observe.example.com/d/4f1c8a2e-93b7-4d1a-b6e5-0c2f7d9a1e34/versions
← Back to dashboardCheckout health: history
VersionSummaryAuthorSavedActions
v7LatestAdd errors by route to the Traffic row and move p95 latency to the top.Priya2 hours agoViewCompare
v6Set a threshold of 18 on DB pool in use.PriyayesterdayViewCompareRestore
v5Repair the CPU by pod query after container_cpu was renamed.Tom2 days agoViewCompareRestore
v4Add payment errors from Loki to the Overview row.Tom3 days agoViewCompareRestore
v3Show request rate per route instead of per pod.Priyalast weekViewCompareRestore
Changes from v6 to v7Fromv6Tov7
Panel "Errors by route"Added
Panel "p95 latency by route"Reordered

Every change is a version.

A build becomes one version. A follow-up in the chat, an edit in the panel editor, an agent repair, each is another, with a diff and a restore. A comment can be sent to the agent, and its change is a version too.

In the browser, the terminal, or your own agent.

The tools behind the built-in agent are served over MCP too. Claude Code and other MCP clients build, read and repair dashboards with the same metric inventory. Same save checks everywhere.

observe.example.com/c/3b9d01c2-6a4e-4f0b-8d21-9e7c5a1f4b60
Add errors by route and pin the p95 panel on top.
Ran 6 steps in 14s
  1. Discoveringlist_metricsListed 3 metrics on prom
  2. Checking querieslint_queryChecked a query on prom: 0 errors
  3. Running queriesquery_rangeRan a query on prom: 4 series
  4. Savingupdate_panels 3Saved panel 13: Errors by route (row Traffic)Moved 1 panel in the build (13 in all)Saved version 7 (3 rows, 13 panels)
p95 latency by route
Errors by route
Checkout health13 panels from promOpen dashboard
Saved as version 7, just now
Request 3b9d01c2
Checkout healthAsk for another change to Checkout healthchlokipromtempo
Each change is saved as a new version of the dashboard.
zsh
$ observe "queue health, last 6h"Panel 1 of 7: Queue depth (timeseries)Panel 2 of 7: Oldest order age (stat)Panel 3 of 7: Workers busy (timeseries)…Saved version 1 https://observe.example.com/d/9b2e/queue-health $ observe logs '{app="orders"} |= "retry"' --datasource loki --tail
Claude Code · mcp: slashobserve
› build a dashboard for the payments service ⚙︎ list_datasources⚙︎ list_metrics scope={job="payments"} 9 families · 2 runtime⚙︎ lint_query · query_range ×9⚙︎ create_dashboard saved /d/c41a/payments · uncovered: []

Runs on AWS
with Docker and Postgres.

git clone https://github.com/slashobserve/slashobserve && cd slashobserve && make demo

Try it on a laptop first: make demo brings up a shop, Prometheus, ClickHouse, Loki, Tempo and three reference dashboards in about two minutes. Add a model key when you want the agent.

Read the quick start