Building Agentic AI Assistant for Observability Platform
grafana · Tech · 2026 · source Agentic: yes · promotional bias: low · source-backed · extracted with prompt 0.5.4 (schema v2)
Generated from extraction.json — do not edit by hand. Every claim cites verbatim source evidence; stated means the quote directly asserts the claim, implied means it supports it indirectly.
Problem
Domain: Observability platform assistance
Grafana Labs needed an assistant that could help users query observability data, change dashboards, investigate incidents, and learn Grafana while operating inside the user's current Grafana context.
Constraints:
- Grafana has many features, data sources, tools, and workflows, so context-window and tool-selection pressure is high.
- Prompts were coupled to model versions such as Claude 3.5 versus 3.7.
- The team needed fast iteration in a changing LLM landscape without overengineering too early.
- Human oversight and traceability mattered because the assistant can query data and modify dashboards.
Architecture
Grafana built an agentic chat assistant that runs in the browser as a sidebar and performs tool calling in the frontend. The assistant uses Claude, Grafana context, tool descriptions/schemas, error feedback loops, natural-language tool responses, tool overloading for workflow-like operations, and visible intermediate steps so users can inspect and guide investigations.
Diagram confidence: explicit (topology described by the source).
flowchart LR grafana-user[Grafana User] --> assistant-sidebar[Assistant Sidebar] assistant-sidebar --> browser-agent-loop[Browser Agent Loop] assistant-sidebar --> grafana-context[Grafana Context] grafana-context --> browser-agent-loop browser-agent-loop --> claude[Claude] browser-agent-loop --> grafana-tools[Grafana Tools] grafana-tools --> tool-error-feedback[Tool Error Feedback] tool-error-feedback --> browser-agent-loop grafana-tools --> grafana-data-sources[Grafana Data Sources] grafana-tools --> dashboards[Dashboards] dashboards --> grafana-user
Components
| Component | Role | Interacts with |
|---|---|---|
Grafana User |
Person asking questions, changing dashboards, investigating incidents, or learning Grafana. | Assistant Sidebar |
Assistant Sidebar |
Agentic chat UI that follows the user around their Grafana stack. | Grafana User, Browser Agent Loop, Grafana Context |
Browser Agent Loop |
Client-side agent loop and tool-calling runtime. | Assistant Sidebar, Claude, Grafana Tools, Tool Error Feedback |
Claude |
Primary LLM provider/model family used for the assistant. | Browser Agent Loop |
Grafana Context |
Current stack/page/dashboard/data-source context available because the assistant runs inside Grafana. | Assistant Sidebar, Browser Agent Loop |
Grafana Tools |
Query, dashboard editing, investigation, data-source, and validation tools exposed to the assistant. | Browser Agent Loop, Grafana Data Sources, Tool Error Feedback, Dashboards |
Tool Error Feedback |
Errors returned to the LLM so it can repair bad queries or tool inputs. | Browser Agent Loop |
Grafana Data Sources |
Observability backends such as Prometheus/Loki and other Grafana-supported sources. | Grafana Tools, Dashboards |
Dashboards |
Visualizations and panels the assistant can query or modify. | Grafana Tools, Grafana User |
Data flow
A user opens the sidebar inside Grafana, the assistant receives current page/context plus its system prompt and tools, calls browser-side tools to query data or modify dashboards, feeds tool results and errors back to the LLM for iterative repair, and displays intermediate data/steps so the human can keep oversight.
3 supporting quotes
Why this architecture
Grafana kept the first architecture simple and frontend-first because the hackathon needed a working proof quickly, the assistant benefits from being inside the user's current Grafana context, and overbuilding multi-agent architectures before learning from real use would be risky.
3 supporting quotes
Models used: Claude 3.5 · Claude 3.7 · Claude · Gemini
Scale
- The initial assistant came from a one-week hackathon project.“basically the first version we built came from a hackathon project and so you have a week to basically build something or tell a story actually and thanks to curser and the fact that you you know you you are both very um talented engineers as well but we're able to actually build something real.”transcript, stated
- The assistant's system prompt and tools consumed about 40k tokens together at one point.“the system prompt itself I think it's uh I think it's 20k uh token which is quite which is a lot uh and the tools are also 20k so we are at 40k”transcript, stated
- The team discussed million-token context windows but cautioned that larger context does not automatically solve complex workflows.“think the 1 million like type of context window that we we're seeing now in cloud and and Gemini are awesome for uh you know tasks that are dealing with massive data set rather than mass complex uh workflow because the the the intelligence actually start to fall off”transcript, stated
- Grafana's feature surface spans areas like IRM, alerting, data sources, and dashboards.“graphana uh feature wise it's big like you have like IRM you have alerting each data source dashboarding is massive”transcript, stated
Alternatives considered (roads not taken)
Start with a fully designed backend system
Rejected because: The team wanted a small proof first and the LLM tooling space was changing too quickly for a months-long design phase.
Keep LangChain TypeScript in the browser
Rejected because: The team hit limitations and wanted more flexibility/control than the framework provided.
Expose every possible Grafana action as a separate tool
Rejected because: Too many tools confuse the model and consume too much context.
Swallow tool errors
Rejected because: Returning errors lets the LLM correct syntax, inputs, and tool use.
Use multi-agent architecture immediately
Rejected because: The team considered multi-agent complexity, context handoff, telephone-game effects, and multiple voices too costly without a strong reason.
Patterns
tool-use-orchestration (agent architecture)
The assistant loops over browser-side tool calls for querying, dashboard changes, and investigations.
observability-tracing (observability)
The assistant itself operates inside an observability platform and exposes investigation steps/data so users can trace work.
context-compaction (context management)
Tool overloading and workflow routing are used to reduce tool/context footprint in a large product surface.
prompt-versioning (prompt operations)
The team learned prompts were coupled to Claude model versions and provider-specific behavior.
human-in-the-loop-gate (governance)
The assistant shows steps and data so users remain in control rather than delegating observability work invisibly.
eval-driven-development (quality)
The team explicitly discusses evaluation as test-like guardrails because adding tools can break behavior.
Tradeoffs
Prototype architecture
Chose Browser-first agent loop over Backend-first production architecture.
Rationale: The browser context let the team prove usefulness quickly in a hackathon while keeping the assistant close to user context.
Framework dependency
Chose Remove LangChain for custom control over Keep a general agent framework in the browser.
Rationale: The team wanted intuitive control and freedom from framework assumptions.
Tool response format
Chose Natural-language tool responses over JSON, stringified JSON, or XML responses.
Rationale: The LLM performed better with natural-language descriptions of tool results.
Tool grouping
Chose Overloaded workflow-like tools as an interim solution over Separate tool for every data-source operation.
Rationale: Combining operations reduced context/tool count but the team acknowledged it was a hacky midpoint.
Gotchas (what bit them)
Prompts can become tied to a specific model version.
Root cause: Prompts optimized for Claude 3.5 behaved differently on Claude 3.7 or other providers.
Resolution: Treat model changes as prompt-engineering events, not drop-in swaps.
Too many tools confuse agents and consume context.
Root cause: Grafana's product surface has many data sources and actions, multiplying tool descriptions.
Resolution: Start broad to learn, then narrow workflows, overload related tools, or route to specialized workflows.
Swallowed tool errors prevent self-correction.
Root cause: The LLM cannot repair bad inputs or syntax if it never sees the error.
Resolution: Return tool errors to the model so it can iterate like a person debugging.
Multi-agent architectures add context-handoff and voice consistency problems.
Root cause: Multiple agents create telephone-game effects and may speak/act as separate voices.
Resolution: Prefer a single agent or workflow-style tools until there is a strong reason to split.
Evaluation
Grafana evaluates the assistant through hackathon/user adoption, tool-use behavior, prompt/model-version comparisons, error-feedback loops, workflow/tool changes, and explicit evaluation tests as tool additions risk regressions.
Metrics: Tool-call success · Query/dashboard task completion · Prompt behavior by model version · Context/tool token budget · Evaluation regression failures · Human-visible investigation steps
Outcomes
- Grafana shipped an assistant sidebar that can answer questions, query data, and change dashboards.
- The team found client-side prototyping effective and later hardened architecture decisions.
- The assistant design surfaced concrete lessons around prompt/model coupling, tool count, error feedback, natural-language tool responses, and multi-agent complexity.
The transcript is a design discussion rather than a metrics-heavy launch report; it reports architecture and lessons more than adoption volume.