<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>The Context Window on Nicole van der Hoeven</title><link>https://nicolevanderhoeven.com/tags/the-context-window/</link><description>Recent content in The Context Window on Nicole van der Hoeven</description><generator>Hugo -- gohugo.io</generator><language>en-us</language><copyright>Nicole van der Hoeven</copyright><lastBuildDate>Thu, 05 Nov 2026 18:00:00 +0000</lastBuildDate><atom:link href="https://nicolevanderhoeven.com/tags/the-context-window/index.xml" rel="self" type="application/rss+xml"/><item><title>Build Apps on Your Data with Grafana Pages (The Context Window #07)</title><link>https://nicolevanderhoeven.com/blog/20261105-context-window-07-grafana-pages/</link><pubDate>Thu, 05 Nov 2026 18:00:00 +0000</pubDate><guid>https://nicolevanderhoeven.com/blog/20261105-context-window-07-grafana-pages/</guid><description>&lt;p&gt;My favourite announcement out of ObservabilityCON was &lt;a href="https://grafana.com/"&gt;Grafana Pages&lt;/a&gt; — a way to build a live, interactive data app right from your Grafana instance, with just prompts and no code. In this episode of &lt;em&gt;The Context Window&lt;/em&gt; — Grafana&amp;rsquo;s livestream series on AI in observability — I&amp;rsquo;m joined by my co-host &lt;strong&gt;Tiffany Clifford&lt;/strong&gt; and by &lt;strong&gt;Stephanie&lt;/strong&gt; and &lt;strong&gt;Tom&lt;/strong&gt; from Grafana&amp;rsquo;s AI department, who built Pages (it started as a hackathon project to give &lt;a href="https://notes.nicolevanderhoeven.com/Grafana+Assistant"&gt;Grafana Assistant&lt;/a&gt; a proper Linux sandbox, and turned into something much bigger). We dig into what Pages actually is, build one live from a prompt, and get into the stuff I find genuinely delightful about it: a page is still &lt;em&gt;real&lt;/em&gt; Grafana — same data sources, same RBAC, same production-ready panels — it&amp;rsquo;s just no longer you arranging things on a grid. We also cover personal data Pages (my sleep-vs-flight tracker, Stephanie&amp;rsquo;s StairMaster world tour), Pages vs dashboards, how it all works under the hood (React in a locked-down iframe, served from a micro-VM sandbox), and the current limitations and roadmap.&lt;/p&gt;
&lt;p&gt;Fun fact dropped mid-stream: the ObservabilityCON keynote itself was a Grafana Page. So was this presentation.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/TjzXIMfLSTg?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;h2 id="what-grafana-pages-is"&gt;What Grafana Pages is&lt;/h2&gt;
&lt;p&gt;As Tom put it, a Page is &amp;ldquo;all of Grafana, minus the panel grid.&amp;rdquo; It&amp;rsquo;s the same data sources, the same RBAC, the same underlying panels and visualization libraries — but instead of you arranging panels on a grid (or Assistant trying to squeeze your intent into what a dashboard can represent), you unlock Assistant and let it do the thing modern models are genuinely good at: writing code and building a website. You keep everything that makes Grafana production- and enterprise-ready, carefully worked out over nine years, and you add interactive, tailored, &lt;em&gt;pretty&lt;/em&gt; ways to look at your data.&lt;/p&gt;
&lt;p&gt;It builds on the Grafana-managed sandboxes announced in the same release — the same underlying layer of Linux compute for AI agents that also powers auto-remediation and investigations.&lt;/p&gt;
&lt;h2 id="seeing-it-on-grafana-play"&gt;Seeing it on Grafana Play&lt;/h2&gt;
&lt;p&gt;The fastest way to understand Pages is to go poke at it on &lt;a href="https://play.grafana.org/"&gt;Grafana Play&lt;/a&gt; — no login, no Cloud account needed. Stephanie showed a few:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;An &lt;strong&gt;observability-survey quiz game&lt;/strong&gt; in comic-book style, pulling real data already on Play — built from &lt;em&gt;one&lt;/em&gt; prompt (&amp;ldquo;make it higher-lower, comic-book style&amp;rdquo;).&lt;/li&gt;
&lt;li&gt;A &lt;strong&gt;quarterly-review&lt;/strong&gt; page, fully interactive with drill-downs by region and customer sentiment — also one prompt, with &amp;ldquo;make it look pretty&amp;rdquo; doing most of the design work.&lt;/li&gt;
&lt;li&gt;A teammate&amp;rsquo;s page that pulls your &lt;strong&gt;GitHub contribution data&lt;/strong&gt; and thanks you — and, because it uses the inline Assistant, renders the thank-you in the viewer&amp;rsquo;s native language (inferred from internal data).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The point Stephanie and Tom kept coming back to: Pages aren&amp;rsquo;t static. A page can fetch recent data every time you open it and tell you the most noteworthy events in the last 24 hours — so an on-call summary page genuinely updates itself.&lt;/p&gt;
&lt;h2 id="building-a-page-from-a-prompt"&gt;Building a Page from a prompt&lt;/h2&gt;
&lt;p&gt;We built one live on Play against the demo incident/outage data: &lt;em&gt;&amp;ldquo;Create a page to summarize what is noisy and needs attention from the on-call engineer — give us the top three things.&amp;rdquo;&lt;/em&gt; Assistant loops through alerts, shows the queries it&amp;rsquo;s running in a &lt;strong&gt;Sources&lt;/strong&gt; tab (no hand-waving about what it&amp;rsquo;s doing), takes live screenshots of the rendered page as it edits so it actually &lt;em&gt;knows&lt;/em&gt; how it looks, and comes back with dynamic top-three items. Making a page really is just that easy now.&lt;/p&gt;
&lt;h2 id="personal-data-pages"&gt;Personal data Pages&lt;/h2&gt;
&lt;p&gt;This is where I got carried away. I hooked up my two smart-ring data sources (Oura and Ultrahuman — both have API endpoints) and, from one prompt, got a whole page summarizing years of sleep: best month, worst month, seasonal breakdowns, the slightly-depressing reveal that I average just under seven hours. I didn&amp;rsquo;t ask for the blue-purple theming. I also didn&amp;rsquo;t ask it to correlate my &lt;strong&gt;flights&lt;/strong&gt; (TripIt + Flighty, ten years of data) with my sleep — it just did, because the flight data was there. A second prompt gave me an animated replay of every flight I&amp;rsquo;ve taken.&lt;/p&gt;
&lt;p&gt;Stephanie&amp;rsquo;s was my favourite: a &lt;strong&gt;StairMaster world tour&lt;/strong&gt;, ranking gyms she&amp;rsquo;s visited for work by how good the view is (so she doesn&amp;rsquo;t have to think about being on a StairMaster), complete with an out-of-order-machine mini-game and motivational quotes from ultrarunners. And a summit-conditions page pulling weather data for different mountains.&lt;/p&gt;
&lt;h2 id="pages-vs-dashboards"&gt;Pages vs dashboards&lt;/h2&gt;
&lt;p&gt;So when do you build a page instead of a dashboard? The honest answer from the team is: it&amp;rsquo;s early, and Pages already cover many dashboard use cases. Tom&amp;rsquo;s product-brain answer is &amp;ldquo;make it a page, period&amp;rdquo; — but if you have a well-understood dashboard that serves you well, there&amp;rsquo;s no urgent reason to change it, and dashboards still win where you need a &lt;strong&gt;dashboards-as-code&lt;/strong&gt; story (Pages has no as-code path yet). For me, I reach for a page when I want to tell a &lt;strong&gt;story&lt;/strong&gt; with data — a narrative, some annotation, something I&amp;rsquo;d present to my manager without drowning her in every metric. Pages is great at filtering down to the readable essentials without deleting anything.&lt;/p&gt;
&lt;p&gt;A nice pro tip from Tom: if you ever present real data on a big screen, Pages is for you — you can ask for presentation style and still get real panels backed by real data, instead of screenshotting them out. We&amp;rsquo;re both using Pages for KubeCon talks.&lt;/p&gt;
&lt;h2 id="remixing-editing-and-building-from-a-dashboard"&gt;Remixing, editing, and building from a dashboard&lt;/h2&gt;
&lt;p&gt;There are several ways to create a page:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Ask Assistant&lt;/strong&gt; directly in chat.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Create new page&lt;/strong&gt; with a starter example (service health, minimal, etc.) that pre-seeds the prompt with styling hints.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Remix&lt;/strong&gt; an existing page — reuses it as a reference and changes style, data sources, or format; saved as its own new page.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Start from a dashboard&lt;/strong&gt; — turn an existing dashboard into a page (handy when the dashboard is the ongoing stream and you want a &amp;ldquo;how was last quarter&amp;rdquo; narrative view).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Editing happens through Assistant too: highlight an element and it&amp;rsquo;s attached as context (it carries the DOM node / &lt;code&gt;data-page-id&lt;/code&gt;), so you can ask &amp;ldquo;how did you get this data?&amp;rdquo; or request a change to that specific element. &lt;strong&gt;Templates&lt;/strong&gt; are coming — define a house style once and have everyone in your org generate pages or presentations that match.&lt;/p&gt;
&lt;h2 id="sharing-and-access-control"&gt;Sharing and access control&lt;/h2&gt;
&lt;p&gt;Sharing today works a lot like Google Docs/Slides: add specific people, generate a link, or drop it in a folder (folder view/edit permissions carry over). But viewers &lt;strong&gt;must be logged into the Grafana instance&lt;/strong&gt; — there is &lt;strong&gt;no fully public &amp;ldquo;share with the world&amp;rdquo; option yet&lt;/strong&gt;, and no share-by-email-domain yet either. Both are open feature requests; the team explicitly asked for feedback on whether people want them.&lt;/p&gt;
&lt;p&gt;Crucially, &lt;strong&gt;data access still respects user permissions&lt;/strong&gt;. If you can open a page but don&amp;rsquo;t have access to its data sources, the page opens but shows no data — exactly like dashboards, because the queries still go through your regular data sources with full authorization and RBAC.&lt;/p&gt;
&lt;h2 id="how-pages-work-react-sandboxes-and-iframes"&gt;How Pages work: React, sandboxes, and iframes&lt;/h2&gt;
&lt;p&gt;A dashboard is configuration — a (very large) JSON blob that Grafana lays out into the panel grid at runtime. A Page is a layer lower: what the agent produces is &lt;strong&gt;React source code for a website&lt;/strong&gt;, which Grafana renders inside a heavily locked-down, isolated &lt;strong&gt;iframe&lt;/strong&gt;, piping through only carefully chosen data.&lt;/p&gt;
&lt;p&gt;But something has to safely compile that TypeScript/JSX and bundle it — running arbitrary model output is exactly the kind of unsafe operation you don&amp;rsquo;t want on your main infrastructure. So each conversation gets a thin &lt;strong&gt;Linux micro-VM&lt;/strong&gt;. The hard engineering problem was making it &lt;em&gt;fast&lt;/em&gt;: nobody waits two or three minutes for an EC2 to spin up before losing interest. The team got it to start in under 10 seconds, with each command finishing in under two.&lt;/p&gt;
&lt;p&gt;Tom clarified that &amp;ldquo;sandbox&amp;rdquo; is overloaded here — there are &lt;strong&gt;two&lt;/strong&gt;:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;The &lt;strong&gt;Linux micro-VM&lt;/strong&gt; used only &lt;em&gt;while building or editing&lt;/em&gt; a page. Once built, the output is just HTML in an S3 bucket — no VM involved anymore.&lt;/li&gt;
&lt;li&gt;The &lt;strong&gt;iframe isolation layer&lt;/strong&gt; inside Grafana, so AI-generated website content renders safely without leaking your data. You control what hosts a page can call out to, per page (important — not every page should be as shareable as, say, my health data). MCP server connections are supported too, and any viewer gets asked for permission before anything runs on their behalf.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="limitations-and-roadmap-no-promises"&gt;Limitations and roadmap (no promises)&lt;/h2&gt;
&lt;p&gt;Pages is in &lt;strong&gt;public preview across Grafana Cloud&lt;/strong&gt; (not OSS yet, and it will always require Assistant to drive the prompt → page step). Known rough edges and wishes, with the usual &amp;ldquo;nothing here is a commitment&amp;rdquo;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Multi-editing&lt;/strong&gt;: today you don&amp;rsquo;t know if someone else is editing the same page, so you can clobber each other. A &amp;ldquo;someone else is editing&amp;rdquo; warning is coming before GA, with proper multiplayer later. (We hit this building the KubeCon deck.)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Public sharing&lt;/strong&gt; and &lt;strong&gt;share-by-domain&lt;/strong&gt;: open questions, driven by feedback.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Storage&lt;/strong&gt;: pages and their remixes naturally form a graph of related code artifacts, so a Git-inspired storage model feels like the next natural step.&lt;/li&gt;
&lt;li&gt;Higher environment fidelity, templates (rolling out now), and more examples.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you want it for OSS — which I personally do — leave a comment so the team can champion it internally.&lt;/p&gt;
&lt;h2 id="resources"&gt;Resources&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://play.grafana.org/"&gt;Grafana Play&lt;/a&gt; — try the public Pages (games included), no login required&lt;/li&gt;
&lt;li&gt;&lt;a href="https://grafana.com/products/cloud/"&gt;Grafana Cloud&lt;/a&gt; — sign up free; Pages is in public preview&lt;/li&gt;
&lt;li&gt;&lt;a href="https://slack.grafana.com"&gt;Grafana Community Slack&lt;/a&gt; — there&amp;rsquo;s a Grafana Pages channel for feedback&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="related-reading"&gt;Related reading&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;My notes on &lt;a href="https://notes.nicolevanderhoeven.com/Grafana+Assistant"&gt;Grafana Assistant&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="more-from-the-context-window"&gt;More from The Context Window&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://nicolevanderhoeven.com/blog/20260626-context-window-05-ai-evaluation/"&gt;#05: An Overview of AI Evaluation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://nicolevanderhoeven.com/blog/20260603-context-window-04-cli-mcp/"&gt;#04: CLI and MCP Basics for AI Agents&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://nicolevanderhoeven.com/blog/20260422-context-window-03-ai-observability/"&gt;#03: All About AI Observability&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="transcript"&gt;Transcript&lt;/h2&gt;
&lt;h3 id="intro-guests-and-observabilitycon-recap"&gt;Intro, guests, and ObservabilityCON recap&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Nicole:&lt;/strong&gt;
Hi everyone, welcome to another episode of The Context Window. Today we&amp;rsquo;re talking about the hottest thing — in my opinion — to come out of ObservabilityCON: Grafana Pages. It&amp;rsquo;s a way to build a live, interactive data app right from your Grafana instance, with just prompts and no code. I&amp;rsquo;m not the only one excited about it, so — Tiffany, do you want to introduce yourself, my awesome co-host?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Tiffany:&lt;/strong&gt;
Hi, I&amp;rsquo;m Tiffany, a developer advocate. Until literally a couple of days ago I was focused on Tempo, Pyroscope, and AI — and now just AI, so I get to dive into all this really cool stuff. This one&amp;rsquo;s new to me anyway.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Stephanie:&lt;/strong&gt;
Hello, I&amp;rsquo;m Stephanie. I work in the AI department with Tom. We did a hackathon together for Pages and have been working on getting it released for ObservabilityCON. That&amp;rsquo;s been fun. Tom?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Tom:&lt;/strong&gt;
Hi, I&amp;rsquo;m Tom, also in the AI department — I&amp;rsquo;ve been at Grafana seven years. For the last couple of months Stephanie and I were toying with the idea of giving Assistant a proper Linux sandbox and a proper way to execute code. We didn&amp;rsquo;t even set out to build Pages — then we realized we could just let it write React code, and that gives you so much better visualizations and tailored outcomes than dashboards.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nicole:&lt;/strong&gt;
I&amp;rsquo;m Nicole van der Hoeven, a developer advocate mainly focused on AI right now. And I wanted to mention ObservabilityCON, which just passed — I wasn&amp;rsquo;t there in person, but a lot came out of it. The keynote on YouTube is really good.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Tom:&lt;/strong&gt;
Can I tell you a secret? The keynote is a Page. And, sneakily, so is this presentation. The three ObservabilityCON themes were autonomous operations — and look, there&amp;rsquo;s Grafana Pages right there — cloud economics, and context. We&amp;rsquo;ll focus on Pages.&lt;/p&gt;
&lt;h3 id="what-grafana-pages-is-1"&gt;What Grafana Pages is&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Stephanie:&lt;/strong&gt;
We started by working on sandboxing for coding agents, then in a hackathon realized we could use those sandboxes for Grafana Pages. It lets you see your data in more interactive ways — you can prompt Assistant with &amp;ldquo;I want to look at my business revenue for the past quarter,&amp;rdquo; or weather on a mountain, and it creates unique interactive ways to look at data.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Tom:&lt;/strong&gt;
If I had to describe it, it&amp;rsquo;s all of Grafana minus the panel grid. Same data sources, same RBAC, same underlying panels, same visualization libraries. It&amp;rsquo;s just no longer you arranging them on a grid, or Assistant trying to fuse your thoughts into what a dashboard can represent — we unlock Assistant and let it write code and build a website. But you&amp;rsquo;re not giving up the things that make Grafana production- and enterprise-ready, carefully worked out over nine years.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Tiffany:&lt;/strong&gt;
And the sandboxes you mentioned — is that the Grafana-managed sandboxes that also got released?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Tom:&lt;/strong&gt;
Those were coined more towards auto-remediation and investigations, where we use sandboxes to look at your source code and check a hypothesis for why something&amp;rsquo;s broken. But it&amp;rsquo;s the very same underlying layer of Linux compute for AI agents that powers Pages too.&lt;/p&gt;
&lt;h3 id="grafana-pages-examples-on-grafana-play"&gt;Grafana Pages examples on Grafana Play&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Nicole:&lt;/strong&gt;
The best way to understand Pages is to dive in on Grafana Play — this playground for all things Grafana. No login, no Cloud account. You can just mess around and see what people have already created.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Stephanie:&lt;/strong&gt;
Here&amp;rsquo;s an observability survey — we run one every year — turned into a game. It&amp;rsquo;s pulling in real data that&amp;rsquo;s already on Play, with little animations, streaks, ten questions. Maybe you think reading the survey is dry; a game could help. And this was &lt;em&gt;one&lt;/em&gt; prompt: &amp;ldquo;make me a higher-lower game, comic-book style.&amp;rdquo; I&amp;rsquo;m not a front-end engineer — I did not do this.&lt;/p&gt;
&lt;p&gt;Here&amp;rsquo;s a quarterly-review example, also one prompt, all interactive — drill into what the customer is thinking, different regions, fake sales data. I can&amp;rsquo;t get over how pretty it is. There&amp;rsquo;s also a Sources tab so you can see the queries behind the data. A teammate made one that pulls your GitHub data and thanks you for your contributions.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Tom:&lt;/strong&gt;
That one uses the inline Assistant, so the page itself can make model generations — it shows the thank-you in the viewer&amp;rsquo;s native language, guessed from internal data.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Stephanie:&lt;/strong&gt;
The powerful part is it&amp;rsquo;s not static. You can make a page that summarizes recent data, and it&amp;rsquo;s not hard-coding the summary — every time you open it, it first fetches recent data and tells you the most noteworthy events in the last 24 hours. I made an on-call rotation page that surfaces the most urgent things every time I look.&lt;/p&gt;
&lt;h3 id="build-a-grafana-page-from-a-prompt"&gt;Build a Grafana Page from a prompt&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Tom:&lt;/strong&gt;
Since it&amp;rsquo;s so easy to prompt — can we build one from scratch on Play?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Stephanie:&lt;/strong&gt;
You go to Pages, create a new page, pick from starter examples that give Assistant some styling direction so you don&amp;rsquo;t need a huge prompt.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nicole:&lt;/strong&gt;
Let&amp;rsquo;s say: &lt;em&gt;&amp;ldquo;Create a page to summarize what is noisy and needs attention from the on-call engineer — give us a summary of the top three things.&amp;rdquo;&lt;/em&gt; It&amp;rsquo;s so cool that making a page is now just that easy.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Stephanie:&lt;/strong&gt;
It&amp;rsquo;s looping through alerts, figuring out the alert states, and showing its queries in the Sources tab — so it&amp;rsquo;s not hand-wavy; you can check it&amp;rsquo;s actually doing what you asked.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Tom:&lt;/strong&gt;
Depending on what you ask, it can take a bit longer. Let&amp;rsquo;s leave it and jump to some other things.&lt;/p&gt;
&lt;h3 id="personal-data-pages-sleep-and-flight-tracking"&gt;Personal data Pages: sleep and flight tracking&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Nicole:&lt;/strong&gt;
I have two smart rings — Ultrahuman and Oura. I hooked up both data sources (they have API endpoints), and this whole page was one prompt: how much sleep I get each year, best and worst months, by season. I average just under seven hours. I didn&amp;rsquo;t ask for the blue-purple theming either.&lt;/p&gt;
&lt;p&gt;Then it added a travel page — I realized it&amp;rsquo;s correlating my flights with my sleep, because I have flight data in here too (TripIt and Flighty, ten years). I didn&amp;rsquo;t ask it to do that.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Tiffany:&lt;/strong&gt;
I was literally looking into TripIt yesterday — and apparently they closed the API in late September to anyone not already using it. I&amp;rsquo;m so glad you&amp;rsquo;ve been using it.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nicole:&lt;/strong&gt;
This replay — this one I &lt;em&gt;did&lt;/em&gt; ask for, so two prompts — animates all my flights, new countries, busiest month. Pages has been useful for more than the usual outages.&lt;/p&gt;
&lt;h3 id="grafana-pages-vs-dashboards"&gt;Grafana Pages vs dashboards&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Nicole:&lt;/strong&gt;
When would you build a page versus a dashboard? Are you all-Pages all the time now?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Tom:&lt;/strong&gt;
The product person in me says &amp;ldquo;make it a page, period.&amp;rdquo; Honestly we don&amp;rsquo;t fully know yet — Pages cover many dashboard use cases. If you have a well-understood dashboard that serves you well, there might be no immediate reason to change it. But in general Pages should replace most dashboard use cases, and if they fall short, that&amp;rsquo;s a reason to talk to us.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Stephanie:&lt;/strong&gt;
For dashboards, if you need a dashboards-as-code story — running the same dashboard across many clusters — we don&amp;rsquo;t have Pages-as-code right now, so dashboards still win there.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Tom:&lt;/strong&gt;
Pages will not come to OSS without Assistant — the way it works, you have to prompt Assistant to make it into a page. Assistant has a lot of smarts about correlating Grafana data; a vanilla model wouldn&amp;rsquo;t have the opinionated, docs-backed best practices.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Tom:&lt;/strong&gt;
Pages are very much a Grafana thing. Grafana has always stood for two things — that it&amp;rsquo;s pretty, and that it&amp;rsquo;s serious, as in real data, not made up. We tried hard to preserve both: lots of tuning so a small prompt gives a pretty page, and it still retains inspectability and real data rather than looking like LLM slop. If you just want to post something up, tools like Claude artifacts already exist.&lt;/p&gt;
&lt;h3 id="remix-a-page-or-create-one-from-a-dashboard"&gt;Remix a Page or create one from a dashboard&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Stephanie:&lt;/strong&gt;
The main way is prompting. There&amp;rsquo;s also &amp;ldquo;make your own,&amp;rdquo; where you prompt it much more specifically about the look. Templates are coming — define a style for your whole org&amp;rsquo;s presentations. And you can &lt;strong&gt;remix&lt;/strong&gt; a page: it uses the page as a reference and changes style, data sources, or format depending on what you ask; saved as its own new page.&lt;/p&gt;
&lt;p&gt;For editing, you highlight an element and it&amp;rsquo;s attached as context — the DOM node with its &lt;code&gt;data-page-id&lt;/code&gt; — so you can ask how it got the data, or request a change to that specific element. You can also start a page &lt;strong&gt;from a dashboard&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nicole:&lt;/strong&gt;
I tend to build a page when I want to tell a story with the data — some narrative, maybe annotation. My dashboards get cluttered; Pages lets me streamline to what&amp;rsquo;s readable without deleting anything. Great for explaining something to my manager.&lt;/p&gt;
&lt;h3 id="share-pages-and-control-access"&gt;Share Pages and control access&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Stephanie:&lt;/strong&gt;
To share, you can add specific people, say &amp;ldquo;anyone with this link,&amp;rdquo; or put it in a folder so folder permissions apply. There&amp;rsquo;s no fully public &amp;ldquo;share with the world&amp;rdquo; option today — that&amp;rsquo;s a feature request; let us know in the comments. And data access respects user permissions: if you can open a page but lack access to its data sources, it opens but shows no data, just like dashboards.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Tom:&lt;/strong&gt;
It&amp;rsquo;s best described as the Google Docs/Slides model — share with specific people or generate a link — but viewers must be logged into the Grafana instance. There&amp;rsquo;s no public option yet.&lt;/p&gt;
&lt;h3 id="how-pages-work-react-sandboxes-and-iframes-1"&gt;How Pages work: React, sandboxes, and iframes&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Tom:&lt;/strong&gt;
A dashboard is configuration — a big JSON blob Grafana lays out into the panel grid at runtime. A Page is lower-level: what the agent produces is React source code for a website, which we render in a heavily locked-down, isolated iframe, piping through carefully chosen data.&lt;/p&gt;
&lt;p&gt;Something has to safely compile that JSX and bundle it, which is unsafe to do with arbitrary model output — so each conversation gets a thin micro-VM. Making that scalable took most of the platform time: you don&amp;rsquo;t want to wait two or three minutes for an EC2. We got it to start in under 10 seconds, every command finishing in under two.&lt;/p&gt;
&lt;p&gt;The term &amp;ldquo;sandbox&amp;rdquo; is overloaded. There are two: the Linux micro-VM used while building or editing a page — once built, it&amp;rsquo;s just HTML in an S3 bucket, no VM anymore — and the iframe isolation layer inside Grafana, so AI-generated content renders safely without leaking your data.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Stephanie:&lt;/strong&gt;
There&amp;rsquo;s a setting for what a page can call out to, and you can control it per page — some things, like my health data, shouldn&amp;rsquo;t be broadly available. MCP server connections are supported too, and viewers are asked for permission before anything runs on their behalf.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Stephanie:&lt;/strong&gt;
Data sources still use the user&amp;rsquo;s permissions — if you don&amp;rsquo;t have access, it won&amp;rsquo;t show data. It builds on battle-tested, enterprise-ready foundations, so authorization and RBAC carry forward.&lt;/p&gt;
&lt;h3 id="limitations-roadmap-and-more-page-examples"&gt;Limitations, roadmap, and more Page examples&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Nicole:&lt;/strong&gt;
Beyond sharing, what other limitations should people be aware of?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Stephanie:&lt;/strong&gt;
Multi-editing is difficult — right now you don&amp;rsquo;t know if someone else is editing a page, so you can overwrite their work. Until GA, just tell people if you&amp;rsquo;re editing. We&amp;rsquo;ll have a &amp;ldquo;someone else is editing&amp;rdquo; warning before GA and proper multi-edit later. Templates are rolling out now.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Tom:&lt;/strong&gt;
Pages and remixed pages form a graph of relationships and are code artifacts, so some Git-inspired storage system feels like the natural next step — but it needs careful thinking.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nicole:&lt;/strong&gt;
I have an unnecessary setup where Alloy on my laptop sends metrics about my Obsidian notes into Loki and Prometheus — and I have a page for all of it: top topic this month, a GitHub-style contribution heat map, a graph view. I didn&amp;rsquo;t ask for any of the styling; I just said &amp;ldquo;here&amp;rsquo;s some data, build me a page.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Stephanie:&lt;/strong&gt;
My favourite is my StairMaster world tour — I do mountaineering, so as I travel for work I find StairMasters with pretty views. One prompt ranked the gyms by view, added a mini-game for out-of-order machines, and pulled motivational quotes from ultrarunners. I also made one for summit weather conditions on different mountains.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nicole:&lt;/strong&gt;
There&amp;rsquo;s a Grafana Play page on Singapore weather and haze that&amp;rsquo;s beautiful — it shows wind direction and air quality across regions, with a 72-hour replay. I have family in Singapore, so I care about the air quality. Amazing stuff.&lt;/p&gt;
&lt;p&gt;If you want to try this, sign up for a free Grafana Cloud account — Pages is in public preview, nothing to contact anyone about — or just play with the ones on Grafana Play. And please give feedback: there&amp;rsquo;s a Grafana Pages channel in the community Slack and a Reddit post. Comment on the video too, especially if you want it for OSS so we can champion it internally.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nicole:&lt;/strong&gt;
Thank you all for joining — this was a fun one. The next Context Window livestream is later this month with William Dumont, about Assistant Watchers. Stay tuned.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Tom:&lt;/strong&gt;
Thanks for building this amazing tool — it&amp;rsquo;s my favourite feature on Grafana now.&lt;/p&gt;</description></item><item><title>Context Engineering Fundamentals (The Context Window #06)</title><link>https://nicolevanderhoeven.com/blog/20261002-context-window-06-context-engineering-fundamentals/</link><pubDate>Fri, 02 Oct 2026 18:00:00 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20261002-context-window-06-context-engineering-fundamentals/</guid><description>&lt;p&gt;What actually counts as &amp;ldquo;context&amp;rdquo; for an AI agent — and how does it find the right things to put in a limited window? In this episode of &lt;em&gt;The Context Window&lt;/em&gt; — Grafana&amp;rsquo;s livestream series on AI in observability — I dig into &lt;strong&gt;context engineering fundamentals&lt;/strong&gt; with &lt;a href="https://www.linkedin.com/in/ben-sully/"&gt;Ben Sully&lt;/a&gt; and &lt;a href="https://www.linkedin.com/in/ioanna-armouti/"&gt;Ioanna Armouti&lt;/a&gt;. We treat the context window as an &lt;strong&gt;attention budget&lt;/strong&gt;, walk through Assistant Search and semantic retrieval, embeddings, and how you actually &lt;em&gt;evaluate&lt;/em&gt; whether the retrieved context was any good.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/Vn04wQ0T9PU?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;h2 id="what-we-cover"&gt;What we cover&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;What counts as context&lt;/strong&gt; — and why the context window behaves more like an &lt;em&gt;attention budget&lt;/em&gt; than just a size limit.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Finding the right context&lt;/strong&gt; — Assistant Search, semantic retrieval, and embeddings: how an agent surfaces what it needs instead of being handed everything.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Evaluating retrieved context&lt;/strong&gt; — because retrieval that &lt;em&gt;looks&lt;/em&gt; relevant isn&amp;rsquo;t the same as retrieval that &lt;em&gt;is&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The tool tax and tool deferral&lt;/strong&gt; — every tool definition costs context, so when do you load it versus defer it?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Progressive disclosure and long-term memory&lt;/strong&gt; — giving the agent what it needs, when it needs it.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Why removing 80% of a system prompt can change nothing&lt;/strong&gt; — a nice illustration that more context is not automatically better context.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="resources"&gt;Resources&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://notes.nicolevanderhoeven.com/Context+Engineering"&gt;My notes on Context Engineering&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://notes.nicolevanderhoeven.com/Context"&gt;My notes on Context&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://notes.nicolevanderhoeven.com/Grafana+Assistant"&gt;My notes on Grafana Assistant&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>An Overview of AI Evaluation (The Context Window #05)</title><link>https://nicolevanderhoeven.com/blog/20260626-context-window-05-ai-evaluation/</link><pubDate>Fri, 26 Jun 2026 18:00:00 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20260626-context-window-05-ai-evaluation/</guid><description>&lt;p&gt;How do you know if an AI agent is actually any good — and whether the change you just made to it made it &lt;em&gt;better&lt;/em&gt; or &lt;em&gt;worse&lt;/em&gt;? In this episode of &lt;em&gt;The Context Window&lt;/em&gt; — Grafana&amp;rsquo;s livestream series on AI in observability — I&amp;rsquo;m joined by &lt;a href="https://www.linkedin.com/in/yasirekinci/"&gt;Yas Ekinci&lt;/a&gt;, an engineer on Grafana&amp;rsquo;s AI team who has spent the last several months focused almost entirely on evaluation. We talk about why trusting AI is so hard (non-deterministic models, oversized PRs, and the shift from &lt;em&gt;writing&lt;/em&gt; code to &lt;em&gt;reviewing&lt;/em&gt; it), the difference between online and offline evals, how we actually test &lt;a href="https://notes.nicolevanderhoeven.com/Grafana+Assistant"&gt;Grafana Assistant&lt;/a&gt;, and &lt;code&gt;o11y-bench&lt;/code&gt;, the open observability benchmark we announced at GrafanaCON. We recorded this one ahead of Yas&amp;rsquo;s two-month leave — so consider it a deep dive banked for the road.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/_XGLBqVpL-Y?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;h2 id="the-final-answer-problem"&gt;The &amp;ldquo;final answer problem&amp;rdquo;&lt;/h2&gt;
&lt;p&gt;A recurring theme — and one close to my testing heart — is what I call the final answer problem. As a tester I&amp;rsquo;m used to looking at an outcome and asking &amp;ldquo;did this pass or fail?&amp;rdquo; But with AI, a plausible-looking answer isn&amp;rsquo;t enough. If the &lt;em&gt;process&lt;/em&gt; was wrong, you can&amp;rsquo;t trust the outcome even when it looks right — and a plausible-but-wrong answer is the dangerous case, because nothing on the surface tells you it&amp;rsquo;s wrong. Yas&amp;rsquo;s example: a broken Tempo tool that returned no spans, while the agent still answered convincingly by guessing from metadata. Plausible ≠ correct.&lt;/p&gt;
&lt;p&gt;This is also why the bottleneck has moved. The cost of &lt;em&gt;writing&lt;/em&gt; code has collapsed, so the burden now sits on review. Developers, as I like to put it, are becoming &lt;strong&gt;shepherds of intent&lt;/strong&gt; — less about typing the code, more about making sure the intent is clear and faithfully implemented.&lt;/p&gt;
&lt;h2 id="what-evals-are-and-online-vs-offline"&gt;What evals are, and online vs offline&lt;/h2&gt;
&lt;p&gt;An eval is simply a test of whether an AI agent behaves the way you want — from &amp;ldquo;who are you?&amp;rdquo; → &amp;ldquo;I&amp;rsquo;m Grafana Assistant&amp;rdquo; all the way up to multi-step querying and dashboarding. The point is to know &lt;em&gt;with confidence&lt;/em&gt; whether a change made the agent better, which is what lets you improve it consistently over time.&lt;/p&gt;
&lt;p&gt;There are two complementary flavours, and they map neatly onto testing concepts we already have:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Online evals&lt;/strong&gt; — scoring a sample of real production conversations, usually with an LLM-as-a-judge. Great as a pulse check (it&amp;rsquo;ll catch a quality drop when a model provider silently swaps models), but it only tests the deployed variant and is hard to verify. Closest analogy: traditional observability / RUM.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Offline evals&lt;/strong&gt; — a &amp;ldquo;golden set&amp;rdquo; of tasks run during development and CI against a controlled, reproducible environment. You can test every change, prompt, and implementation, and drill into specific skills (PromQL vs LogQL, dashboarding). Closest analogy: integration testing.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="how-we-test-grafana-assistant"&gt;How we test Grafana Assistant&lt;/h2&gt;
&lt;p&gt;Assistant evals run a real agent-plus-tools &lt;em&gt;harness&lt;/em&gt; against a real-ish environment (a Grafana with data sources, alerts, and dashboards), then grade the full transcript with &amp;ldquo;graders&amp;rdquo; or &amp;ldquo;verifiers.&amp;rdquo; The hard tension is that the environment has to be &lt;strong&gt;real and reproducible&lt;/strong&gt; at the same time. Because Assistant is a front-end plugin that runs some tools in the browser, the team uses Playwright to replicate real browser behaviour — which is where I made my pitch for k6&amp;rsquo;s browser module (now approaching Playwright parity) as a dogfooding option. The internal eval tool is a CLI called &lt;strong&gt;LLM Spec&lt;/strong&gt;, now on its third major iteration after the lessons from o11y-bench.&lt;/p&gt;
&lt;h2 id="o11y-bench"&gt;o11y-bench&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://grafana.com/blog/o11y-bench-open-benchmark-for-observability-agents/"&gt;&lt;code&gt;o11y-bench&lt;/code&gt;&lt;/a&gt; is our public benchmark, announced at GrafanaCON, with six task categories: dashboarding, investigation, logs, metrics, and traces. A few things I think make it genuinely interesting:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;It&amp;rsquo;s built on the &lt;strong&gt;Harbor&lt;/strong&gt; framework (also used by terminal-bench), which separates harness from environment from tasks — so you can swap harnesses and compare, say, &lt;code&gt;gcx&lt;/code&gt; + Claude Code against the Grafana MCP.&lt;/li&gt;
&lt;li&gt;The leaderboard includes open models (Qwen 3.6, Kimi), not just the frontier labs.&lt;/li&gt;
&lt;li&gt;It distinguishes &lt;strong&gt;pass@3&lt;/strong&gt; (got it right at least once in three runs — rough capability) from &lt;strong&gt;pass^3&lt;/strong&gt; (got it right all three times — reliability). The 10–20% gaps between the two are the whole reliability story in a single number.&lt;/li&gt;
&lt;li&gt;It runs against a &lt;strong&gt;synthetic environment&lt;/strong&gt; (Prometheus, Loki, Tempo in Docker) with generated data, so the correct answer is known in advance — and it uses &lt;strong&gt;fact-based rubrics&lt;/strong&gt;, where the grader runs its own known-good queries against the environment and checks the agent&amp;rsquo;s answer against them. That&amp;rsquo;s how you catch the subtle, plausible-but-wrong failures.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The internal eval set is a superset that adds scenarios drawn from real (private) conversations and Assistant-specific behaviour — like Slack&amp;rsquo;s not-quite-markdown formatting — while o11y-bench stays generic and harness-independent, grading on outcome rather than method.&lt;/p&gt;
&lt;h2 id="the-evaluation-loop"&gt;The evaluation loop&lt;/h2&gt;
&lt;p&gt;Yas&amp;rsquo;s blog post (the first engineering post on Grafana&amp;rsquo;s new community &lt;em&gt;Unprompted&lt;/em&gt; blog) and our GrafanaCON talk both center on the &lt;strong&gt;evaluation loop&lt;/strong&gt;: measure → make changes (new tools, prompt tweaks, bug fixes) → measure again. The crucial bit is that the loop can be driven by a coding agent — via an &lt;code&gt;LLM Spec Improve&lt;/code&gt; skill — because you can&amp;rsquo;t unit-test natural-language &amp;ldquo;programming&amp;rdquo; the way you test code. There&amp;rsquo;s no clean relationship between the instructions you write and what the model does, so the only way to know the impact of a change is to run the loop.&lt;/p&gt;
&lt;h2 id="where-its-going"&gt;Where it&amp;rsquo;s going&lt;/h2&gt;
&lt;p&gt;We closed on open questions and wishes: higher environment fidelity, more and harder tasks (very likely an o11y-bench 2.0), and getting more contributors — including PMs writing evals to capture desired product behaviour. I floated a k6-extension-style community model for evaluators, and using o11y-bench to support &lt;strong&gt;bring-your-own-model&lt;/strong&gt;, so users can see exactly where a smaller or local model falls short instead of assuming Assistant is broken. Yas&amp;rsquo;s industry hope is the neat one: if labs tune their models against o11y-bench, observability and Grafana performance improve across the board — free fine-tuning out of the box.&lt;/p&gt;
&lt;h2 id="resources"&gt;Resources&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://grafana.com/blog/o11y-bench-open-benchmark-for-observability-agents/"&gt;Introducing o11y-bench: an open benchmark for observability agents&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/grafana/o11y-bench"&gt;o11y-bench on GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.anthropic.com/engineering/demystifying-evals"&gt;Anthropic: Demystifying evals&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://slack.grafana.com"&gt;Grafana Community Slack&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="related-reading"&gt;Related reading&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;My notes on &lt;a href="https://notes.nicolevanderhoeven.com/Grafana+Assistant"&gt;Grafana Assistant&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://contexthorizon.substack.com/p/unlearnings-from-building-grafana"&gt;My Context Horizon piece: &lt;em&gt;Unlearnings from building Grafana Assistant&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="more-from-the-context-window"&gt;More from The Context Window&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://nicolevanderhoeven.com/blog/20260603-context-window-04-cli-mcp/"&gt;#04: CLI and MCP Basics for AI Agents&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://nicolevanderhoeven.com/blog/20260422-context-window-03-ai-observability/"&gt;#03: All About AI Observability&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="transcript"&gt;Transcript&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Nicole:&lt;/strong&gt;
Hey everyone. Welcome to another episode of The Context Window. This is a semi-regular podcast — we try to make it every month — and it&amp;rsquo;s all about the things going on with AI at Grafana. Usually this is live, and you might think looking at this that it&amp;rsquo;s live, but it&amp;rsquo;s actually prerecorded, because Yas has a busy schedule ahead and I wanted to get him on here before he left. So hi, I&amp;rsquo;m Nicole van der Hoeven, a senior developer advocate at Grafana Labs, and I&amp;rsquo;m assigned to the AI team these days. And one of the people on the AI team is — this person over here. How do you say your last name, actually?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Yas:&lt;/strong&gt;
Oh, it&amp;rsquo;s Ekinci.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nicole:&lt;/strong&gt;
Ekinci. I was totally confused because I just found out you speak Dutch. Did not know that.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Yas:&lt;/strong&gt;
I&amp;rsquo;m based in Belgium, and I was like, &amp;ldquo;Nicole van der Hoeven&amp;rdquo; — okay, that sounds familiar enough to me.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nicole:&lt;/strong&gt;
Yeah, it&amp;rsquo;s the name of my ex-husband, but it&amp;rsquo;s okay, we still like him. So tell us what you do on the AI team.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Yas:&lt;/strong&gt;
I&amp;rsquo;m an engineer on the AI team — I&amp;rsquo;m getting to five years at Grafana next week. When I joined, this was pre-AI; we had the machine learning team building predictive models, forecasting, that kind of stuff. As the AI wave came, we all got absorbed into this newer, larger AI department. It&amp;rsquo;s been quite varied — the assistant, the AI agent inside Grafana — but especially the latter half of this year I&amp;rsquo;ve been more and more focused specifically on evals: how do we figure out the quality and reliability of these things we&amp;rsquo;re deploying?&lt;/p&gt;
&lt;p&gt;AI is a very useful tool. It has utility — it&amp;rsquo;s not like NFTs. We use it day to day. My job has changed drastically over the last two years. But you still notice it needs guidance and sometimes has reliability issues. The trend is that the guidance has come down — a year or two ago I&amp;rsquo;d steer an agent 50, 60, 70 times in a session; now it&amp;rsquo;s more like five or ten. But you still need to do it. If you just blindly vibe-code your way out of this, you&amp;rsquo;re not going to end up in a good place.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nicole:&lt;/strong&gt;
It moves so quickly. Whenever someone tells me they tried AI and it didn&amp;rsquo;t do what they wanted, I ask, &amp;ldquo;Well, when was that?&amp;rdquo; Because if it was six months ago — try it again. In this episode we&amp;rsquo;ll talk all about evals, but first, some announcements. Assistant is now available for OSS and self-hosted Grafana, and I made a video showing how to do that. There&amp;rsquo;s also a new Medium blog for Grafana Labs called &lt;em&gt;Unprompted&lt;/em&gt; — a community-focused blog — and Yas wrote the first engineering post, about building an evaluation loop. And we&amp;rsquo;ve started AI weekly videos: the AI team has a weekly meeting, Mat Ryer had the idea to publish excerpts, usually the demo part. Just be warned we demo things that may never make it to production — you&amp;rsquo;re getting it raw, warts and all.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Yas:&lt;/strong&gt;
I need to make sure I don&amp;rsquo;t wear my PJs anymore for the AI weekly.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nicole:&lt;/strong&gt;
A bit of quick AI news: Warp is now open source. There are new models — GPT-5.5, Gemini 3.1 Ultra with a two-million-token context window, Anthropic&amp;rsquo;s Claude Mythos security preview. And there&amp;rsquo;s a great article by Matt Shumer called &amp;ldquo;Something Big Is Happening,&amp;rdquo; where he says, &amp;ldquo;I am no longer needed for the actual technical work of my job&amp;rdquo; — which hits hard — and advises leaning into what&amp;rsquo;s hardest to replace.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Yas:&lt;/strong&gt;
It&amp;rsquo;s still that guidance thing — you need a human in the loop to guide it. But if you ask me how much code I&amp;rsquo;ve manually written lately, the actual technical piece is very close to zero. We&amp;rsquo;ll talk about how that&amp;rsquo;s different for evals, because evals don&amp;rsquo;t work as well as coding does there.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nicole:&lt;/strong&gt;
So why is it so hard to trust AI? Why don&amp;rsquo;t we just YOLO it and accept everything?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Yas:&lt;/strong&gt;
A mix of things. Everybody knows these models are non-deterministic and not perfect — these aren&amp;rsquo;t new problems; underneath it&amp;rsquo;s all machine learning, numbers and math and stats. Every time you talk to it you might get a slightly different response. The second part is it writes &lt;em&gt;a lot&lt;/em&gt; of code. You can 10x your output — send ten agents at ten different features and launch all those PRs — but then someone needs to review them, and the PRs are typically big and over-engineered. One thing I always do at the end of a piece of work is ask it to find a simpler way and simplify. Bigger PRs plus so many changes makes it hard to keep a mental model of the whole thing. And interestingly, I&amp;rsquo;ll use AI to help review a PR — which gets you back to the same problem: if you use AI to review the AI, how much can you trust that?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nicole:&lt;/strong&gt;
I like the phrase that developers are becoming shepherds of intent — we&amp;rsquo;re not writing the code so much as making sure the intent is clear and implemented. And this is the difference between process and outcome — what I call the final answer problem. I come from performance testing; I&amp;rsquo;m used to looking at the outcome and asking did it pass or fail. But now, even if the outcome looks right, if the process was wrong I don&amp;rsquo;t trust it. And the reverse too: right process, wrong outcome, something else is broken.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Yas:&lt;/strong&gt;
Tests are interesting here, because most of those tests are also AI-generated — and the AI doesn&amp;rsquo;t shy away from just changing the test to make its branch pass. For any branch I review, I still look at all the changes; I won&amp;rsquo;t blindly rubber-stamp. That&amp;rsquo;s probably the biggest bottleneck right now.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nicole:&lt;/strong&gt;
One approach to trusting AI is human evaluation — thumbs up/thumbs down, or something like LMArena where you compare two answers blind. Useful, but not scalable; you can&amp;rsquo;t run it in CI.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Yas:&lt;/strong&gt;
On the eval side they&amp;rsquo;re all complementary. So, what &lt;em&gt;is&lt;/em&gt; an eval? It&amp;rsquo;s testing whether the AI agent behaves like you want. A simple one: ask &amp;ldquo;who are you?&amp;rdquo; and expect &amp;ldquo;I&amp;rsquo;m Grafana Assistant.&amp;rdquo; There are much more complicated ones around querying and dashboarding. At its core, an eval is how you figure out if the agent is any good — and the reason we do it is so that when we make changes, we know if it&amp;rsquo;s better. Answer that with confidence and you have a path to improve consistently over time.&lt;/p&gt;
&lt;p&gt;We split into online and offline. Online — we recently launched AI observability for agents — is about measuring how the deployed agent does against real production conversations from real users. Valuable, because you get a score based on real behaviour, but hard to verify; we typically use an LLM as a judge, so it&amp;rsquo;s not as robust. Offline is used more during development, in CI — much more controlled. You have a golden set of evals covering the behaviour you expect in production, and because you always test the same set, you can see whether changes make it better, and dig into PromQL vs LogQL, or dashboarding. Online is a great pulse check — it can catch quality dropping when Anthropic swaps a model — but it only tests the deployed variant. Offline can test all your changes, your implementation, and all your prompts.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nicole:&lt;/strong&gt;
It took me a while to translate these, because the testing industry already has this — we call it pre-prod and production testing. Pre-prod is everything from unit to system integration testing in dev and staging; you can really hammer the thing. Production you have to be more careful — synthetic monitoring, real user monitoring — same idea with an AI flavour.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Yas:&lt;/strong&gt;
Definitely. Online is much more like traditional observability — you&amp;rsquo;re observing a system that happens to be powered by AI, turning natural language into a number you track over time and alert on. Offline is closer to an integration test: you give it a task, it runs the whole agent against a real environment, you get something out, and then separately you grade that outcome.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nicole:&lt;/strong&gt;
We did an AI observability episode without you — you were at GrafanaCON — so I&amp;rsquo;ll link that. Let&amp;rsquo;s talk more about offline evals, since we haven&amp;rsquo;t covered those.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Yas:&lt;/strong&gt;
Offline is a bit of a beast. There&amp;rsquo;s a good Anthropic post called &amp;ldquo;Demystifying evals.&amp;rdquo; Back when we had simple single-turn LLM calls — incident summary was one of the first — the prompt was &amp;ldquo;here&amp;rsquo;s the context of the incident, summarize this,&amp;rdquo; and grading checked readability, completeness, appropriate length. Easy enough to set up. Agents get more complicated, because every time you run a task the agent can take very different trajectories — five steps one time, seven the next. The agent plus its tools is roughly the harness; it runs against an environment — a real Grafana with data sources, a certain alert and dashboard state — and keeps interacting using the tools until it&amp;rsquo;s done. Then we take the whole transcript and grade it with graders, sometimes called verifiers, to verify it actually got the task right.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nicole:&lt;/strong&gt;
So how do you do it for Assistant, given how broad that environment is?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Yas:&lt;/strong&gt;
We have the public benchmark we released recently and our internal evals — same approach, different number of tasks and some different data sources. We want an environment as real as possible, but with the tension that we also need to control it so a benchmark is reproducible. If two people run it and get different scores, which one was right? We started, like everybody, with manual tests — listing data sources to confirm a tool is wired up, some CPU questions, showing logs — with a human as the judge. That&amp;rsquo;s fine at four or five scenarios; you can&amp;rsquo;t do it as a human at 500. Assistant is a front-end plugin — some tools run in your browser, which is good for auth and security but makes testing hard — so we use Playwright to replicate real behaviour and pull the telemetry out. The internal eval tool is a CLI we call LLM Spec, and it can run against cloud instances or a local controlled environment.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nicole:&lt;/strong&gt;
Before the environment — did you consider using k6 instead of Playwright?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Yas:&lt;/strong&gt;
Interesting — yes and no. k6 is also a tool the assistant needs to use, but our goal isn&amp;rsquo;t to load test; it&amp;rsquo;s to hook into the plugin and get the messages and telemetry out, so we have a Playwright harness.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nicole:&lt;/strong&gt;
There&amp;rsquo;s actually a browser module for k6 going towards feature parity with Playwright.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Yas:&lt;/strong&gt;
I did not know that. Might be interesting.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nicole:&lt;/strong&gt;
Just dogfood all the things. I&amp;rsquo;d love to work with you on that. Okay, the environment.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Yas:&lt;/strong&gt;
We test against cloud instances — for incidents especially, it&amp;rsquo;s a lot of data. And we run LLM Spec against a local controlled environment, which is quite similar to the open benchmark we published.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nicole:&lt;/strong&gt;
You&amp;rsquo;ve mentioned o11y-bench — the benchmark announced at the last GrafanaCON. That was fast.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Yas:&lt;/strong&gt;
o11y-bench has tasks across six categories — dashboarding, investigation, logs, metrics, traces. We wanted to bring our internal approaches outward, and it was a learning opportunity: we used a framework called Harbor, also used by the makers of terminal-bench. The nice thing is it separates harness from environment from tasks — so the default harness is a simple system prompt plus the Grafana MCP, but the folks working on GCX run Claude Code plus GCX against o11y-bench and compare GCX with MCP. There&amp;rsquo;s a leaderboard with a bunch of models, including open ones like Qwen 3.6 and Kimi.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nicole:&lt;/strong&gt;
They&amp;rsquo;re getting good. Qwen 3.6 is awesome — not top five, but for an open-weight model, impressive.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Yas:&lt;/strong&gt;
And this is the interesting part: sort on pass@3 and it looks different from pass^3. pass@3 runs each task three times and passes if it gets it right one out of three — rough capability. pass^3 means you need three out of three on every task — reliably solving it, not just getting lucky once. You see 10–20% differences between the two scores.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nicole:&lt;/strong&gt;
That&amp;rsquo;s awesome. And this is public, right?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Yas:&lt;/strong&gt;
Yep — the repo&amp;rsquo;s on GitHub with all the tasks. We run o11y-bench against a synthetic environment — a Prometheus, Loki, and Tempo in Docker — and we generate the data, so every run uses the same data and we know what the answer should be before we even run it. We also do fact-based rubrics: separately from what the agent does, the grading side runs its own known-good queries against the environment and checks whether the agent&amp;rsquo;s answer matches. That matters because these agents fail in subtle ways. We once made a change to the Tempo tool that broke the spans — the agent got no spans but still answered, fairly realistically, from metadata. Without testing for it you&amp;rsquo;d never catch it; the text looked plausible.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nicole:&lt;/strong&gt;
That&amp;rsquo;s exactly process versus outcome. If the answer were negative two seconds it&amp;rsquo;s obviously wrong, but a plausible answer is the dangerous one.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Yas:&lt;/strong&gt;
Exactly, and that happens a lot.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nicole:&lt;/strong&gt;
An early Assistant once told me it created a dashboard, and it didn&amp;rsquo;t look right — turned out it couldn&amp;rsquo;t find the data source so it just used dummy data.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Yas:&lt;/strong&gt;
Same thing happened to me locally — I broke all the tools, and it still came up with tool calls it couldn&amp;rsquo;t execute because of rough instructions in the system prompt.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nicole:&lt;/strong&gt;
So what&amp;rsquo;s missing in o11y-bench that means you still need an internal one?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Yas:&lt;/strong&gt;
Two levels. First, some scenarios are based on real conversations or our own internal environments — anything involving private data can&amp;rsquo;t go public. Second, there are very Assistant-specific things we want to test — Slack, for instance, has its own version of markdown that looks like markdown but isn&amp;rsquo;t, and early Slack Assistant struggled to write it consistently, so we wrote tests for that. The internal set is a superset; the public set is still part of it. The public set is generic observability tasks — asking questions about your data, dashboarding, basic Grafana API checks — and because the harness is independent, we can test GCX, MCP, our assistant, or any other agent against it, grading on the outcome rather than how it was solved.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nicole:&lt;/strong&gt;
We talked about your blog post — let&amp;rsquo;s define the evaluation loop.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Yas:&lt;/strong&gt;
At its core: measure the current state, see where it works and where it doesn&amp;rsquo;t, make changes — a new tool, tool instructions, the system prompt, bug fixes — then measure again, and again. The key is that loop can be driven by a coding agent, not us manually. If your evals are robust enough to pass a clean feedback signal back, the agent can keep improving until it hits 100%, and then you make harder tasks or increase coverage. At scale it&amp;rsquo;s nearly impossible for one human to understand the whole system and make targeted improvements, because an agent isn&amp;rsquo;t programmed as code — it&amp;rsquo;s programmed with natural language, and there&amp;rsquo;s no clear relationship between the instructions and what the model does. The only way to probe that is to run a bunch of these loops.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nicole:&lt;/strong&gt;
Is the loop equally implemented for o11y-bench and LLM Spec?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Yas:&lt;/strong&gt;
It&amp;rsquo;s implemented internally. o11y-bench is really just the measurement part — we&amp;rsquo;ve used it for GCX and MCP, but more manually. In LLM Spec we have an &lt;code&gt;LLM Spec Improve&lt;/code&gt; skill — you pick the agent, and it runs measure-improve-measure-improve.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nicole:&lt;/strong&gt;
Where are you going next — no promises?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Yas:&lt;/strong&gt;
I&amp;rsquo;ve done a lot on the harnesses — the Playwright stuff, and there was an LLM Spec 1.0, then a 2.0 revamp for speed and robustness, then o11y-bench, and the learnings from that went into what I&amp;rsquo;d call LLM Spec 3.0. The two big challenges now are environment fidelity — more an issue for internal evals — and the number and quality of tasks: how do we cover more of Grafana? We weren&amp;rsquo;t sure o11y-bench would be a recurring thing, but there&amp;rsquo;s a lot of interest, so we&amp;rsquo;ll probably do an o11y-bench 2.0. And I want more people contributing — I was talking at the PM all-hands about getting product managers to write evals, because the tasks capture desired behaviour: when someone asks about my product, how should the agent ideally respond?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nicole:&lt;/strong&gt;
What I&amp;rsquo;d love is something like the k6 extension model applied to evaluators. When Grafana acquired k6 — I was on k6 — k6 had extensions and modules, and we got a lot of cool community extensions. I think evaluators would be the same. After my Madrid talk, all the questions about the evaluator section were &amp;ldquo;can we add this, can we add that, why isn&amp;rsquo;t this in the template?&amp;rdquo; — and it could be.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Yas:&lt;/strong&gt;
It would be nice to do that across both o11y-bench and the internal ones — there are open questions on making them work together; internally we&amp;rsquo;re in Go, o11y-bench is on Harbor in Python, but the tasks and most verifiers are language-independent by design. A fourth thing is getting to a better golden set over time — we haven&amp;rsquo;t yet automated going from real AI-observability conversations to verifiable offline tasks. As the product changes, your tasks might not stay relevant — imagine k6 didn&amp;rsquo;t exist and now people ask Assistant about k6. Bridging online and offline in a more automated way would be the fourth big thing.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nicole:&lt;/strong&gt;
I also have a wish for o11y-bench beyond being a benchmark — with no internal knowledge and no promises: it could be a step toward making Assistant bring-your-own-model. One barrier is that people try Assistant with a tiny local model and conclude it doesn&amp;rsquo;t work, when really you need certain models. A standardized way to measure that and show users where their model falls short — versus where the latest Opus sits on the leaderboard — lets them make an informed decision.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Yas:&lt;/strong&gt;
I&amp;rsquo;d go beyond Assistant — we&amp;rsquo;ve got GCX and MCP too. If you want to use your own models with them, the benchmark should reflect, for observability tasks, which are the best models and the best &lt;em&gt;open&lt;/em&gt; models. It gets to your point: people can make a more informed decision.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nicole:&lt;/strong&gt;
Where are we still missing things as an industry, not just as a company?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Yas:&lt;/strong&gt;
Just recently a new benchmark called DeepSWE was released, and it&amp;rsquo;s a bit controversial because it flips the ranking from the most popular software-engineering benchmark — where Opus was always leading, here GPT-5.5 leads by a margin. So there&amp;rsquo;s something to be said about the reliability of the benchmarks themselves, since labs test and sometimes tune their models against them. That might actually be good for o11y-bench — I&amp;rsquo;d &lt;em&gt;want&lt;/em&gt; a lab to tune against it, so we get free fine-tuning out of the box: as newer models use o11y-bench to tune on observability tasks, they get better at using Grafana and solving observability problems.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nicole:&lt;/strong&gt;
Thank you — we just hit time. It was really informative, and I&amp;rsquo;m glad we both found time; this got rescheduled for various reasons. A great overview of all the evals we&amp;rsquo;re doing.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Yas:&lt;/strong&gt;
Thanks — it&amp;rsquo;s nice to step out of the day-to-day and talk about this stuff.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nicole:&lt;/strong&gt;
And if you&amp;rsquo;re watching, leave any eval questions in the comments and I&amp;rsquo;ll bug Yas to answer them. Thanks everyone for watching.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Yas:&lt;/strong&gt;
Bye.&lt;/p&gt;</description></item><item><title>CLI and MCP Basics for AI Agents (The Context Window #04)</title><link>https://nicolevanderhoeven.com/blog/20260603-context-window-04-cli-mcp/</link><pubDate>Wed, 03 Jun 2026 18:00:00 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20260603-context-window-04-cli-mcp/</guid><description>&lt;p&gt;MCP vs CLI: which one should your AI agent actually use? In this episode of &lt;em&gt;The Context Window&lt;/em&gt; — Grafana&amp;rsquo;s livestream series on AI in observability — I&amp;rsquo;m joined by &lt;a href="https://www.linkedin.com/in/tiffanyjerniganm/"&gt;Tiffany Jernigan&lt;/a&gt; and three of the engineers and PMs behind Grafana&amp;rsquo;s agent tooling: Ben Sully (who wrote the Grafana MCP server), and Ward Bekker and Dafydd Thomas from the team building &lt;code&gt;gcx&lt;/code&gt;. We get into the two main ways an AI agent can reach the outside world — the Model Context Protocol (MCP) and good old command-line interfaces — and look at when each one makes sense, the tradeoffs around context windows, tool sprawl, token cost, and reliability. We walk through Grafana&amp;rsquo;s cloud and open-source MCP servers along with &lt;code&gt;gcx&lt;/code&gt;, the Grafana Cloud CLI built for agents, do a live side-by-side demo of both creating an SLO, and talk about how we benchmark them against each other with o11y-bench.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/ZR6U4TN8-Cw?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;h2 id="timestamps"&gt;Timestamps&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;00:00:00 — Introductions&lt;/li&gt;
&lt;li&gt;00:02:49 — The last month in AI news&lt;/li&gt;
&lt;li&gt;00:10:19 — What is Grafana Assistant?&lt;/li&gt;
&lt;li&gt;00:12:30 — What does it mean for Assistant to use tools?&lt;/li&gt;
&lt;li&gt;00:13:30 — What is MCP?&lt;/li&gt;
&lt;li&gt;00:16:56 — What is a CLI in an AI context?&lt;/li&gt;
&lt;li&gt;00:19:17 — What are skills?&lt;/li&gt;
&lt;li&gt;00:24:37 — Can you use a custom MCP server with Grafana Assistant?&lt;/li&gt;
&lt;li&gt;00:25:55 — Why team MCP?&lt;/li&gt;
&lt;li&gt;00:28:22 — The context-window cost of MCP tool definitions&lt;/li&gt;
&lt;li&gt;00:31:50 — Tool discoverability&lt;/li&gt;
&lt;li&gt;00:39:25 — What is gcx, and why a CLI?&lt;/li&gt;
&lt;li&gt;00:46:13 — Demo: creating an SLO with MCP vs gcx&lt;/li&gt;
&lt;li&gt;00:52:58 — Benchmarking MCP vs gcx with o11y-bench&lt;/li&gt;
&lt;li&gt;00:58:10 — How MCP and gcx relate to Grafana Assistant&lt;/li&gt;
&lt;li&gt;01:02:35 — k6 MCP vs Grafana MCP&lt;/li&gt;
&lt;li&gt;01:03:00 — When to use which (decision guide)&lt;/li&gt;
&lt;li&gt;01:04:29 — Adding the OSS Grafana MCP to Assistant&lt;/li&gt;
&lt;li&gt;01:05:41 — Turtles all the way down&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="resources"&gt;Resources&lt;/h2&gt;
&lt;h3 id="mcp-and-cli-for-agents"&gt;MCP and CLI for agents&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://modelcontextprotocol.io"&gt;Model Context Protocol&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/grafana/mcp-grafana"&gt;Grafana MCP server (OSS)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/grafana/gcx"&gt;gcx — the Grafana Cloud CLI&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://grafana.com/blog/o11y-bench-open-benchmark-for-observability-agents/"&gt;Introducing o11y-bench: an open benchmark for observability agents&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://slack.grafana.com"&gt;Grafana Community Slack&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="related-reading"&gt;Related reading&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://contexthorizon.substack.com/p/unlearnings-from-building-grafana"&gt;My Context Horizon piece: &lt;em&gt;Unlearnings from building Grafana Assistant&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="more-from-the-context-window"&gt;More from The Context Window&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://nicolevanderhoeven.com/blog/20260422-context-window-03-ai-observability/"&gt;#03: All About AI Observability&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>All About AI Observability (The Context Window #03)</title><link>https://nicolevanderhoeven.com/blog/20260422-context-window-03-ai-observability/</link><pubDate>Wed, 22 Apr 2026 18:00:00 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20260422-context-window-03-ai-observability/</guid><description>&lt;p&gt;In this episode of &lt;em&gt;The Context Window&lt;/em&gt; — Grafana&amp;rsquo;s livestream series on AI in observability — I&amp;rsquo;m joined by &lt;a href="https://www.linkedin.com/in/tiffanyjerniganm/"&gt;Tiffany Jernigan&lt;/a&gt; and the engineers behind the product, &lt;a href="https://www.linkedin.com/in/alexandersniffin/"&gt;Alexander Sniffin&lt;/a&gt; and &lt;a href="https://www.linkedin.com/in/jack-gordley/"&gt;Jack Gordley&lt;/a&gt;, for a deep dive into AI Observability in Grafana Cloud. We unpack what it actually is (a new way to instrument your AI apps and see canonical data about them, sitting alongside your existing telemetry), what an evaluation is in this context (and the difference between online evals on live traffic and offline evals on dataset conversations), and we walk through real demos: setting up AI Observability and evaluators, the analytics view, instrumenting a local coding agent, and Jack&amp;rsquo;s system prompt analysis tool. We also talk about the things nobody else is talking about — like LLM-as-judge as a method, evaluators that catch the most bugs, and the cheating-LLM phenomenon.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/vzygCuuf7JQ?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;h2 id="timestamps"&gt;Timestamps&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;00:00:00 — Introductions&lt;/li&gt;
&lt;li&gt;00:02:00 — The last month in AI news&lt;/li&gt;
&lt;li&gt;00:11:09 — What is AI Observability in Grafana Cloud?&lt;/li&gt;
&lt;li&gt;00:19:20 — What is an evaluation?&lt;/li&gt;
&lt;li&gt;00:21:05 — The origin of AI Observability&lt;/li&gt;
&lt;li&gt;00:25:09 — Demo: Setting up AI Observability and evaluators&lt;/li&gt;
&lt;li&gt;00:32:04 — What is LLM as judge?&lt;/li&gt;
&lt;li&gt;00:38:43 — Demo: AI Observability Analytics&lt;/li&gt;
&lt;li&gt;00:40:52 — AI O11y is based on OpenTelemetry&lt;/li&gt;
&lt;li&gt;00:42:17 — Demo: Instrumenting a local coding agent&lt;/li&gt;
&lt;li&gt;00:47:18 — Potential future agentic use cases&lt;/li&gt;
&lt;li&gt;00:52:00 — Evaluators that catch the most bugs&lt;/li&gt;
&lt;li&gt;01:02:23 — Demo: System prompt analysis&lt;/li&gt;
&lt;li&gt;01:05:11 — Guess the prompt&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="resources"&gt;Resources&lt;/h2&gt;
&lt;h3 id="news-from-the-episode"&gt;News from the episode&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.anthropic.com/news/claude-opus-4-7"&gt;Claude Opus 4.7 release&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://deepmind.google/models/gemma/gemma-4/"&gt;Gemma 4&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://qwen.ai/blog?id=qwen3.6"&gt;Qwen 3.6&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://grafana.com/blog/o11y-bench-open-benchmark-for-observability-agents/"&gt;Introducing o11y-bench: an open benchmark for observability agents&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.blog/news-insights/company-news/updates-to-github-copilot-interaction-data-usage-policy/"&gt;Updates to GitHub Copilot interaction data usage policy&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://gra.fan/gcon26"&gt;GrafanaCON 2026 announcements&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="ai-observability"&gt;AI Observability&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://grafana.com/docs/grafana-cloud/machine-learning/ai-observability/"&gt;AI Observability docs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://grafana.com/docs/grafana-cloud/machine-learning/ai-observability/introduction/#online-evaluation"&gt;Online evaluations on Grafana Cloud&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://grafana.com/docs/grafana-cloud/machine-learning/ai-observability/introduction/#opentelemetry-integration"&gt;OpenTelemetry integration with AI Observability&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/grafana/sigil-sdk"&gt;The Sigil SDK&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="mentioned"&gt;Mentioned&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://opencode.ai"&gt;OpenCode&lt;/a&gt; — the open-source coding agent Jack instruments&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.anthropic.com/research/emotion-concepts-function"&gt;Anthropic: Emotion concepts and their function in a large language model&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://openclaw.ai"&gt;OpenClaw&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="related-reading"&gt;Related reading&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://contexthorizon.substack.com/p/high-int-low-wis-what-llm-benchmarks"&gt;My Context Horizon piece on benchmarks: &lt;em&gt;High INT, Low WIS — What LLM benchmarks miss&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://contexthorizon.substack.com/p/unlearnings-from-building-grafana"&gt;My Context Horizon piece on Grafana Assistant: &lt;em&gt;Unlearnings from building Grafana Assistant&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item></channel></rss>