<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Ai on Nicole van der Hoeven</title><link>https://nicolevanderhoeven.com/tags/ai/</link><description>Recent content in Ai 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/ai/index.xml" rel="self" type="application/rss+xml"/><item><title>The Defiant Jazz Incident</title><link>https://nicolevanderhoeven.com/projects/defiant-jazz/</link><pubDate>Fri, 30 Oct 2026 00:00:00 +0000</pubDate><guid>https://nicolevanderhoeven.com/projects/defiant-jazz/</guid><description>&lt;p&gt;&lt;strong&gt;The Defiant Jazz Incident&lt;/strong&gt; is a murder mystery you solve with observability tools. It&amp;rsquo;s set on the Sleep Floor at Kipsake, a company that rents your sleep: at night, its Dreamers sleep in pods while their sleepwalking selves work the floor. During the Cocoa Hour, the floor&amp;rsquo;s middle-of-the-night holiday party, the power goes out for five minutes. When it comes back, the night supervisor is dead in the elevator.&lt;/p&gt;
&lt;p&gt;Kipsake recorded everything it could: badges, doors, chat, sleep rings, power, microphones, cameras, sleep bands, and personnel records. Your job is to work out who did it, and the only way to do that is through the telemetry.&lt;/p&gt;
&lt;h2 id="how-it-works"&gt;How it works&lt;/h2&gt;
&lt;p&gt;The case file is a set of logs, metrics, and traces. A loader sends them to &lt;a href="https://grafana.com/oss/loki/"&gt;Grafana Loki&lt;/a&gt;, Prometheus or Mimir, and &lt;a href="https://grafana.com/oss/tempo/"&gt;Grafana Tempo&lt;/a&gt;, either in Grafana Cloud or in a local Docker stack, and you investigate from there with whatever you like: Grafana itself, Grafana Assistant, an MCP server, &lt;code&gt;gcx&lt;/code&gt;, or the AI agent of your choice. The data is deliberately messy. Some devices lose clock sync during the outage, some records arrive late, and not everyone on the Sleep Floor remembers what their body did.&lt;/p&gt;
&lt;p&gt;The game itself comes in two forms. A terminal version is for demos and playtests: you watch the testimonies and choose what to investigate, while an AI that only sees the telemetry answers your questions. A web version is made to embed in a Grafana dashboard panel right next to the data.&lt;/p&gt;
&lt;h2 id="why-a-murder-mystery"&gt;Why a murder mystery?&lt;/h2&gt;
&lt;p&gt;Investigating an incident is investigating an incident, whether the victim is a production service or a night supervisor. You start with a vague report, a pile of signals that don&amp;rsquo;t quite agree, and a clock that can&amp;rsquo;t be fully trusted, and you have to build a timeline you can defend. A case with a known answer is a safe way to practice that, to compare how different tools and AI agents cope with it, and to see how good a question you have to ask before the data answers.&lt;/p&gt;
&lt;h2 id="no-spoilers"&gt;No spoilers&lt;/h2&gt;
&lt;p&gt;The repository keeps the solution in clearly marked files, and the README tells you which ones to avoid if you want to play. This page deliberately says nothing about who did it.&lt;/p&gt;
&lt;h2 id="try-it"&gt;Try it&lt;/h2&gt;
&lt;p&gt;The &lt;a href="https://github.com/nicolevanderhoeven/defiantjazz"&gt;repository&lt;/a&gt; has everything: the case brief, the telemetry, the loader, and both versions of the game.&lt;/p&gt;</description></item><item><title>Asimov</title><link>https://nicolevanderhoeven.com/projects/asimov/</link><pubDate>Wed, 02 Apr 2025 00:00:00 +0000</pubDate><guid>https://nicolevanderhoeven.com/projects/asimov/</guid><description>&lt;p&gt;&lt;strong&gt;Asimov&lt;/strong&gt; is the companion project to my talk &lt;em&gt;Asimov&amp;rsquo;s Zeroth Law of Robotics&lt;/em&gt;. It&amp;rsquo;s an AI app built to be observed and tested: &lt;strong&gt;The Silent Enterprise&lt;/strong&gt;, a single-player Star Trek text adventure. You play Data, and Claude is the game master. Every model call, dice roll, and turn shows up as telemetry in a Grafana that you can run on your own machine or in Grafana Cloud, and a k6 test suite, some of it judged by Claude, checks whether the AI follows the rules.&lt;/p&gt;
&lt;p&gt;The game master has some known flaws, kept on purpose. It sometimes narrates a rescue that didn&amp;rsquo;t happen, or &amp;ldquo;destroys&amp;rdquo; a drone that&amp;rsquo;s still standing. The point of the demo is catching those flaws with telemetry, tests, and online evaluators.&lt;/p&gt;
&lt;h2 id="the-idea"&gt;The idea&lt;/h2&gt;
&lt;p&gt;Isaac Asimov&amp;rsquo;s three Laws of Robotics govern how robots behave. The talk argues for a law that comes before all of them: a robot must be observable, and, in its newest version, testable. AI systems fail differently from traditional software. There&amp;rsquo;s no single correct output to assert against, a response can be fluent and completely wrong, and models drift. You can&amp;rsquo;t test what you can&amp;rsquo;t see, and you can&amp;rsquo;t trust what you can&amp;rsquo;t test.&lt;/p&gt;
&lt;h2 id="whats-in-it"&gt;What&amp;rsquo;s in it&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;The game.&lt;/strong&gt; A Go program with a command-line interface and an HTTP API. The game engine owns the rules and the state. Claude interprets the player&amp;rsquo;s input, makes the game master&amp;rsquo;s own rolls through a tool, and narrates, so a narration that contradicts the saved state is a defect that can be caught.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Telemetry.&lt;/strong&gt; Traces, metrics, and logs go over OpenTelemetry to a local Grafana stack (Tempo, Prometheus, and Loki, with the game&amp;rsquo;s dashboard already loaded) or to Grafana Cloud. Generations can also go to Grafana Cloud&amp;rsquo;s Agent Observability, where online evaluators judge a sample of them.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tests.&lt;/strong&gt; A k6 suite with code checks, LLM judges, dice-trajectory evals, and whole playthroughs. All of it can run for free against a mock game master and judge.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;No account needed to start.&lt;/strong&gt; You can play offline with no API key, and see the local monitoring stack with one command and Docker.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The screenshot above is the game&amp;rsquo;s local Grafana dashboard.&lt;/p&gt;
&lt;h2 id="the-talks"&gt;The talks&lt;/h2&gt;
&lt;p&gt;I&amp;rsquo;ve given the talk, in several versions, at KubeCon Europe 2025, Dutch Cloud Native Day 2025, Newcrafts 2025, ExpoQA Madrid 2026, and HUSTEF 2026. The write-ups are linked below. The earlier talks used a Python and Flask version of the app, which has since been rewritten in Go.&lt;/p&gt;
&lt;h2 id="try-it"&gt;Try it&lt;/h2&gt;
&lt;p&gt;The &lt;a href="https://github.com/nicolevanderhoeven/asimov"&gt;repository&lt;/a&gt; has a quick start for playing offline, a Docker-only path, and release binaries for Windows, macOS, and Linux.&lt;/p&gt;</description></item><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>AI Tools We Use Every Day on the Grafana AI Team</title><link>https://nicolevanderhoeven.com/blog/20261030-ai-tools-we-use-every-day/</link><pubDate>Fri, 30 Oct 2026 09:00:00 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20261030-ai-tools-we-use-every-day/</guid><description>&lt;p&gt;What AI tools do the people &lt;em&gt;building&lt;/em&gt; AI features actually reach for day to day? I asked around the Grafana AI team to find out which tools have genuinely stuck — the ones we open without thinking — versus the ones that didn&amp;rsquo;t survive contact with real work.&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/w6cBB1Tte5I?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="resources"&gt;Resources&lt;/h2&gt;
&lt;ul&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>What Does a Grafana AI Offsite Look Like?</title><link>https://nicolevanderhoeven.com/blog/20261028-ai-offsite-short/</link><pubDate>Wed, 28 Oct 2026 09:00:00 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20261028-ai-offsite-short/</guid><description>&lt;p&gt;A quick behind-the-scenes short: what actually happens when Grafana&amp;rsquo;s AI team gets together in person for an offsite.&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/M7XARf69mg4?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="resources"&gt;Resources&lt;/h2&gt;
&lt;ul&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>Roundtable: How We Really Use AI in Testing (HUSTEF 2026)</title><link>https://nicolevanderhoeven.com/blog/20261008-ai-testing-roundtable-hustef/</link><pubDate>Thu, 08 Oct 2026 14:00:00 +0200</pubDate><guid>https://nicolevanderhoeven.com/blog/20261008-ai-testing-roundtable-hustef/</guid><description>&lt;p&gt;On the final day of &lt;a href="https://hustef.com/"&gt;HUSTEF 2026&lt;/a&gt; in Budapest, I joined the conference&amp;rsquo;s roundtable on AI in testing — &lt;em&gt;&amp;ldquo;AI Open Space Experiences: a roundtable with speakers on their experiences with AI testing.&amp;rdquo;&lt;/em&gt; It was five of us on stage: me plus &lt;strong&gt;Marta Firlej&lt;/strong&gt;, &lt;strong&gt;Kristoffer Nordström&lt;/strong&gt;, &lt;strong&gt;Callum Akehurst-Ryan&lt;/strong&gt;, and &lt;strong&gt;Maryia Tuleika&lt;/strong&gt;, with Marta moderating.&lt;/p&gt;
&lt;p&gt;The format was refreshingly honest — &amp;ldquo;how we &lt;em&gt;really&lt;/em&gt; use AI, with no bullshit.&amp;rdquo; Marta had run the same &amp;ldquo;AI open space&amp;rdquo; exercise with the Polish testing community, crowdsourcing the actual, un-hyped ways people use AI (information gathering, functionality discovery, generating tests and code, TDD, recruitment, presentation prep, even designing furniture and planning holidays), and then opened it up to the panel and the room. Here&amp;rsquo;s roughly how I answered her questions:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What do you use AI for?&lt;/strong&gt; Mostly two things at work: analysing codebases and test code to understand what something actually does, and filling gaps on teams without a dedicated quality engineer — baking my testing knowledge into an AI the team can ask questions of. On the personal side, I&amp;rsquo;ve run some weird experiments: I&amp;rsquo;m a lifelong note-taker with decades of context (journals, therapy notes, eight years of WhatsApp history with my partner), so I&amp;rsquo;ve fed it all into a &lt;em&gt;local, open-weight&lt;/em&gt; model and asked things like &lt;em&gt;&amp;ldquo;what do I claim to believe, and where have I acted contrary to that — cite your evidence?&amp;rdquo;&lt;/em&gt; It&amp;rsquo;s a surprisingly honest mirror. I&amp;rsquo;m in a privileged spot with effectively unlimited AI access right now, and I know it won&amp;rsquo;t last, so I want to find out what&amp;rsquo;s safe and what isn&amp;rsquo;t while I can.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;How do you stay up to date?&lt;/strong&gt; Honestly, I don&amp;rsquo;t — not by chasing model releases or news. I keep up with how &lt;em&gt;other people&lt;/em&gt;, especially in testing, are using AI, and I lean on my coworkers (we&amp;rsquo;re at the forefront of this at work, so stepping outside that bubble is a useful reality check). I do have a scheduled Claude Code task that scrapes my ~34 AI-related Slack channels into a daily digest of just the things I care about.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;One piece of advice?&lt;/strong&gt; Don&amp;rsquo;t trust AI too much, and don&amp;rsquo;t believe you&amp;rsquo;re as far behind as you think. Almost no one has really tried this stuff; it&amp;rsquo;s genuinely early, everyone&amp;rsquo;s learning, and your foundational testing skills transfer. Just pick it up, play, and if it&amp;rsquo;s not for you, move on.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Anything you&amp;rsquo;d never use AI for?&lt;/strong&gt; Communicating with people as a &lt;em&gt;proxy&lt;/em&gt;. I&amp;rsquo;ll use it to translate or to help me sound more fluent (I live across multiple languages — Portugal, Dutch, English), but I never want it to craft a whole message I didn&amp;rsquo;t think of. I don&amp;rsquo;t want to lose the discipline of actually talking to a human.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ethical dilemmas?&lt;/strong&gt; Yes — which is exactly why I keep my use mostly in the context of work, and try not to generate imagery or anything that&amp;rsquo;s obviously lifting from artists who deserve to be paid for it. There&amp;rsquo;s no hard line; it&amp;rsquo;s a sliding scale, and I have to keep questioning myself. (A Mastodon line stuck with me: &lt;em&gt;the strange future where the humans do the menial tasks and the robots write poetry and paint.&lt;/em&gt; I try not to let AI stop me from making art.)&lt;/p&gt;
&lt;p&gt;The best part of these panels is always the disagreement and the texture — five people who use AI daily and still land in very different places on trust, ethics, and what it&amp;rsquo;s actually &lt;em&gt;for&lt;/em&gt;. Thanks to Marta for moderating and to Kristoffer, Callum, and Maryia for a genuinely good conversation.&lt;/p&gt;
&lt;h2 id="resources"&gt;Resources&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://hustef.com/"&gt;HUSTEF 2026&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;My HUSTEF keynote: &lt;a href="https://nicolevanderhoeven.com/blog/20261007-asimovs-zeroth-law-testing-for-ai-hustef/"&gt;&lt;em&gt;Asimov&amp;rsquo;s Zeroth Law of Robotics: Testing for AI&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Asimov's Zeroth Law of Robotics: Testing for AI (HUSTEF 2026)</title><link>https://nicolevanderhoeven.com/blog/20261007-asimovs-zeroth-law-testing-for-ai-hustef/</link><pubDate>Wed, 07 Oct 2026 10:00:00 +0200</pubDate><guid>https://nicolevanderhoeven.com/blog/20261007-asimovs-zeroth-law-testing-for-ai-hustef/</guid><description>&lt;p&gt;This week I gave a keynote at &lt;a href="https://hustef.com/nicole_van_der_hoeven_2026/"&gt;HUSTEF 2026&lt;/a&gt; in Budapest, Hungary. The talk is called &lt;em&gt;Asimov&amp;rsquo;s Zeroth Law of Robotics: Testing for AI&lt;/em&gt; — a testing-focused evolution of a talk I&amp;rsquo;ve been giving (and rewriting) for a while, previously as &lt;em&gt;Observability for AI&lt;/em&gt; at &lt;a href="https://nicolevanderhoeven.com/blog/20250402-asimovs-zeroth-law-of-robotics/"&gt;KubeCon EU 2025&lt;/a&gt; in London, &lt;a href="https://nicolevanderhoeven.com/blog/20250703-asimovs-zeroth-law-dutch-cloud-native-day/"&gt;Dutch Cloud Native Day 2025&lt;/a&gt; in Utrecht, &lt;a href="https://nicolevanderhoeven.com/blog/20251106-asimovs-zeroth-law-newcrafts/"&gt;NewCrafts&lt;/a&gt; in Paris, and &lt;a href="https://nicolevanderhoeven.com/blog/20260526-asimovs-zeroth-law-expoqa-madrid/"&gt;ExpoQA Madrid 2026&lt;/a&gt;. Here&amp;rsquo;s the abstract:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;A robot may not harm humans. A robot must obey humans. A robot must protect its own existence. These are Isaac Asimov&amp;rsquo;s three Laws of Robotics, created to govern the ethical programming of artificial intelligences. From the Butlerian Jihad to Skynet to cylons, we&amp;rsquo;ve been immortalizing our collective nightmares about artificial intelligence for years. But there&amp;rsquo;s an unmentioned law that comes as a prerequisite to all of that: &lt;strong&gt;a robot must be testable.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;AI systems fail differently than traditional software. There&amp;rsquo;s no single correct output to assert against. A response can be fluent and completely wrong. Models drift silently over time. And yet we&amp;rsquo;re shipping AI into production — often without knowing what &amp;ldquo;passing&amp;rdquo; even looks like.&lt;/p&gt;
&lt;p&gt;Observability is what makes testing possible. When we can see inside our AI systems — trace the chain of reasoning, measure what changed, surface what failed — we can start to write evaluations, define what &amp;ldquo;good&amp;rdquo; looks like, and catch regressions we didn&amp;rsquo;t know to look for.&lt;/p&gt;
&lt;p&gt;In this talk, I explore what it means to test AI in the real world, drawing on lessons from building and evaluating an AI assistant for a large-scale observability platform. I&amp;rsquo;ll cover how evaluations work as the AI equivalent of a test suite, what to measure, how to catch hallucinations, and how to know when your model has regressed.&lt;/p&gt;
&lt;p&gt;You cannot test what you cannot see — and you cannot trust what you cannot test.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src="https://nicolevanderhoeven.com/assets/20261007-hustef-01.jpg" alt="Wide shot of me presenting the keynote at HUSTEF 2026, with the title slide reading “The Zeroth Law of Robotics: A robot must be testable” on the big screen above a full audience." loading="lazy" decoding="async"&gt;
&lt;/p&gt;
&lt;p&gt;The big shift in this version is right there in the Zeroth Law itself. In earlier iterations I argued that &lt;em&gt;a robot must be observable&lt;/em&gt;. That&amp;rsquo;s still true — observability is the only way to see the reasoning behind a system and find out what actually happened. But I&amp;rsquo;ve come to think that pure knowledge isn&amp;rsquo;t the same as trust. You can know exactly what a system did and still not trust it. The only way to trust something is to put it through its paces: to know how it behaves in the situations you foresee, and even the ones you don&amp;rsquo;t. So the Zeroth Law has become &lt;strong&gt;a robot must be &lt;em&gt;testable&lt;/em&gt;.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I framed the whole thing around Asimov&amp;rsquo;s short story &lt;em&gt;Runaround&lt;/em&gt; (from &lt;em&gt;I, Robot&lt;/em&gt;) and its robot, Speedy. Speedy&amp;rsquo;s smuggler owners sent him to collect selenium on Mercury, and he got stuck in a loop — circling the selenium pool, unable to resolve the conflict between obedience (the second law) and self-preservation (the third). His owners couldn&amp;rsquo;t predict his behaviour and couldn&amp;rsquo;t reason about it, so they had to do the only thing left: go out into the danger zone and fix him in production. Speedy wasn&amp;rsquo;t untestable because his owners were incompetent or lacked the tools — he was untestable because he was never &lt;em&gt;built&lt;/em&gt; to be tested. That&amp;rsquo;s the trap I think a lot of AI systems are walking into right now.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://nicolevanderhoeven.com/assets/20261007-hustef-02.jpg" alt="Me looking up at a slide of an armoured robot running across the surface of Mars while I present." loading="lazy" decoding="async"&gt;
&lt;/p&gt;
&lt;p&gt;The through-line for a testing audience: AI is rewriting &lt;em&gt;how&lt;/em&gt; software gets built, but it doesn&amp;rsquo;t rewrite the discipline of trust. Trust that a system does what we say it does, and that when it breaks we know why and can fix it — that&amp;rsquo;s always been the job, and it isn&amp;rsquo;t going anywhere. There&amp;rsquo;s a whole generation of AI engineers shipping software they haven&amp;rsquo;t tested and can&amp;rsquo;t explain, and when someone says &amp;ldquo;the agent does this,&amp;rdquo; our job is still to ask &lt;em&gt;how do you know?&lt;/em&gt; Testing isn&amp;rsquo;t just going to survive the age of AI — testing is the reason AI gets to survive, if we make it testable.&lt;/p&gt;
&lt;p&gt;I demoed this with my TTRPG side project: an AI Dungeon Master, instrumented and put under test. It turns out that writing evals for something non-deterministic forces you to confront your real requirements. I thought I knew exactly when a dungeon master should call for a dice roll — I GM myself! — but trying to put it into words (&amp;ldquo;in &lt;em&gt;this&lt;/em&gt; situation I&amp;rsquo;d roll, but in &lt;em&gt;that&lt;/em&gt; one I wouldn&amp;rsquo;t, because I want to keep the story moving&amp;rdquo;) surfaced decisions I&amp;rsquo;d never had to make explicit. Those are things we&amp;rsquo;d normally discover much later, in production. Having to figure them out up front is a win.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://nicolevanderhoeven.com/assets/20261007-hustef-03.jpg" alt="Me grinning during the talk, holding a microphone and presenter clicker." loading="lazy" decoding="async"&gt;
&lt;/p&gt;
&lt;p&gt;The Q&amp;amp;A was genuinely great and ranged well beyond the slides:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&amp;ldquo;When has an AI been tested &lt;em&gt;enough&lt;/em&gt;?&amp;rdquo;&lt;/strong&gt; Same answer as for anything else — it&amp;rsquo;s a mix of risk and budget. If it were a life-critical robot like Speedy, you test every scenario the people relying on it need. For my little demo app, less so.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Testers vs. developers in the age of AI.&lt;/strong&gt; I said I&amp;rsquo;d fire developers before testers — provocatively, but the point stands: anyone can write code now. What made a good developer good was never the coding; it was communicating with business &lt;em&gt;and&lt;/em&gt; engineers, translating requirements, finding creative-but-safe solutions. Testers already think at that level and translate across teams, which makes them &lt;em&gt;more&lt;/em&gt; important in the age of AI, not less.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Defining expected results for non-deterministic systems&lt;/strong&gt;, multi-turn evals (I give the simulated user a &lt;em&gt;personality&lt;/em&gt; — adversarial, cooperative, beginner — rather than a script), and the broader shift from imperative to declarative: we no longer instruct step by step, we declare the end state we want, the way we do with Kubernetes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Convincing colleagues not to fear AI.&lt;/strong&gt; I don&amp;rsquo;t, really. AI is here to stay; the question isn&amp;rsquo;t whether you approve of it, it&amp;rsquo;s whether you want to stay in this industry and help make it safe and trustworthy — or sit on the sidelines.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I also recommended the book &lt;a href="https://link.amazon/B0e4SIur8"&gt;&lt;em&gt;Slow AI&lt;/em&gt;&lt;/a&gt;, which lands where I do: not an AI apologist, not a boycott, but a clear-eyed list of what AI is and isn&amp;rsquo;t good for — and the reminder to keep checking whether a given use of AI is making you &lt;em&gt;more&lt;/em&gt; capable or less.&lt;/p&gt;
&lt;p&gt;The demo app (the instrumented AI DM) lives on &lt;a href="https://nicole.to/asimov"&gt;GitHub&lt;/a&gt;, and I keep refining it with each iteration of this talk.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ll update this post with the recording once HUSTEF publishes it.&lt;/p&gt;
&lt;h2 id="resources"&gt;Resources&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://nicole.to/hustef"&gt;Slides&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://nicole.to/asimov"&gt;Demo app on GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://link.amazon/B0e4SIur8"&gt;&lt;em&gt;Slow AI&lt;/em&gt; (book)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Previous versions of this talk: &lt;a href="https://nicolevanderhoeven.com/blog/20250402-asimovs-zeroth-law-of-robotics/"&gt;KubeCon EU 2025&lt;/a&gt; · &lt;a href="https://nicolevanderhoeven.com/blog/20250703-asimovs-zeroth-law-dutch-cloud-native-day/"&gt;Dutch Cloud Native Day 2025&lt;/a&gt; · &lt;a href="https://nicolevanderhoeven.com/blog/20251106-asimovs-zeroth-law-newcrafts/"&gt;NewCrafts 2025&lt;/a&gt; · &lt;a href="https://nicolevanderhoeven.com/blog/20260526-asimovs-zeroth-law-expoqa-madrid/"&gt;ExpoQA Madrid 2026&lt;/a&gt;&lt;/li&gt;
&lt;/ul&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>When to use Grafana Assistant vs MCP vs GCX: Grafana GCX</title><link>https://nicolevanderhoeven.com/blog/20260821-when-to-use-grafana-gcx/</link><pubDate>Fri, 21 Aug 2026 09:00:00 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20260821-when-to-use-grafana-gcx/</guid><description>&lt;p&gt;Three AI tools people confuse: Assistant, MCP, and GCX. &lt;a href="https://nicolevanderhoeven.com/blog/20260819-when-to-use-grafana-mcp/"&gt;Last time&lt;/a&gt; I talked about the easy hand — the MCP server. Now the &lt;em&gt;power&lt;/em&gt; hand: &lt;strong&gt;GCX&lt;/strong&gt;, a CLI built for AI agents.&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/bWtlNE8GdAI?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;p&gt;If Assistant is the brain and Grafana MCP is the easy hand, then GCX is the &lt;strong&gt;power hand&lt;/strong&gt; — a CLI built for an agent to drive. (Quick refresher: a &lt;strong&gt;CLI&lt;/strong&gt; is a command line interface — no clicking, just typed commands.)&lt;/p&gt;
&lt;p&gt;So when does GCX win?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;When you&amp;rsquo;re using terminal coding agents&lt;/strong&gt; — Claude Code, Cursor, Codex. It writes code, pulls the exact log or metric, and verifies against it — without leaving the editor.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;When you need &lt;em&gt;everything.&lt;/em&gt;&lt;/strong&gt; GCX wraps the &lt;em&gt;entire&lt;/em&gt; Grafana Cloud API — SLOs, Synthetics, IRM, k6, Fleet — the esoteric corners MCP skips. The full banana.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;When you want automation and CI/CD.&lt;/strong&gt; Dry-run mode, JSON output, and exit codes an agent can act on — built for GitOps.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Do you need Grafana Assistant for this? &lt;strong&gt;No — not even a subscription.&lt;/strong&gt; Bring your own brain, same as MCP: metrics, logs, dashboards, and alerts run on nothing but a service account token. You only really pay for Assistant if you call &lt;code&gt;gcx assistant&lt;/code&gt; directly — which taps its reasoning, billed separately.&lt;/p&gt;
&lt;p&gt;So there&amp;rsquo;s your map: &lt;strong&gt;Assistant&amp;rsquo;s the brain, MCP&amp;rsquo;s the easy hand, GCX is the power hand.&lt;/strong&gt; It&amp;rsquo;s not one versus another — they work really well together to give you the best choice in how to access your Grafana stack.&lt;/p&gt;
&lt;h2 id="transcript"&gt;Transcript&lt;/h2&gt;
&lt;p&gt;I&amp;rsquo;m differentiating Assistant, Grafana MCP and GCX and in this one I&amp;rsquo;m talking about &lt;strong&gt;GCX&lt;/strong&gt;. If Assistant is the brain and Grafana MCP is the easy hand, then GCX is the power hand — a CLI built for AI agents.&lt;/p&gt;
&lt;p&gt;Quick refresher: a &lt;strong&gt;CLI&lt;/strong&gt; is a command line interface — no clicking, just typed commands. GCX is a CLI built for an agent to drive.&lt;/p&gt;
&lt;p&gt;So when does GCX win?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;When you&amp;rsquo;re using terminal coding agents&lt;/strong&gt; — Claude Code, Cursor, Codex. It writes code, pulls the exact log or metric, and verifies against it — without leaving the editor.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;When you need &lt;em&gt;everything.&lt;/em&gt;&lt;/strong&gt; GCX wraps the &lt;em&gt;entire&lt;/em&gt; Grafana Cloud API — SLOs, Synthetics, IRM, k6, Fleet — the esoteric corners MCP skips — the full banana.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;When you want to do automation and CI/CD.&lt;/strong&gt; Dry-run mode, JSON output, exit codes an agent can act on — built for GitOps.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Do you need Grafana Assistant for this? &lt;strong&gt;No — not even a subscription.&lt;/strong&gt; Bring your own brain, same as MCP: metrics, logs, dashboards, alerts run on nothing but a service account token. You only really pay for Assistant if you call &lt;code&gt;gcx assistant&lt;/code&gt; directly — which taps its reasoning, billed separately.&lt;/p&gt;
&lt;p&gt;So there&amp;rsquo;s your map: &lt;strong&gt;Assistant&amp;rsquo;s the brain, MCP&amp;rsquo;s the easy hand, GCX is the power hand.&lt;/strong&gt; It&amp;rsquo;s not one versus another. They actually work really well together to give you the best choice in how to access your Grafana stack.&lt;/p&gt;
&lt;h2 id="resources"&gt;Resources&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://notes.nicolevanderhoeven.com/GCX"&gt;My notes on GCX&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://nicolevanderhoeven.com/blog/20260817-when-to-use-grafana-assistant/"&gt;When to use Grafana Assistant&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://nicolevanderhoeven.com/blog/20260819-when-to-use-grafana-mcp/"&gt;When to use Grafana MCP&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>When to use Grafana Assistant vs MCP vs GCX: Grafana MCP</title><link>https://nicolevanderhoeven.com/blog/20260819-when-to-use-grafana-mcp/</link><pubDate>Wed, 19 Aug 2026 09:00:00 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20260819-when-to-use-grafana-mcp/</guid><description>&lt;p&gt;Three AI tools people confuse: Assistant, MCP, and GCX. &lt;a href="https://nicolevanderhoeven.com/blog/20260817-when-to-use-grafana-assistant/"&gt;Last time&lt;/a&gt; I talked about the brain — Assistant. Now hand number one: &lt;strong&gt;the MCP server&lt;/strong&gt;, the &lt;em&gt;easy&lt;/em&gt; hand.&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/HDmJyo9cyf8?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;p&gt;Grafana MCP — Model Context Protocol — lets &lt;em&gt;any&lt;/em&gt; AI client reach into Grafana. The magic part: &lt;strong&gt;you bring your own brain.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Using MCP requires &lt;strong&gt;two pieces&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The &lt;strong&gt;client&lt;/strong&gt; is your AI app — the brain you bring: claude.ai, ChatGPT, Cursor.&lt;/li&gt;
&lt;li&gt;The &lt;strong&gt;server&lt;/strong&gt; is the door into Grafana that exposes the tools.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;There are two ways to get that server. The easiest is the &lt;strong&gt;Grafana Cloud hosted&lt;/strong&gt; one — already running, auth built in, just connect and go. But you can also &lt;strong&gt;self-host&lt;/strong&gt; the open-source one on your own infra.&lt;/p&gt;
&lt;p&gt;So when do you reach for Grafana MCP?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;When you&amp;rsquo;re using hosted chat tools with no terminal&lt;/strong&gt; — claude.ai, ChatGPT, your phone. No shell means no CLI, so MCP is the only way in.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;When you want to bolt Grafana onto a tool you already use&lt;/strong&gt; — already in Cursor or Claude? Just add the server. No new workflow.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;When you want the best discovery out of the box&lt;/strong&gt; — the tools describe themselves up front, so even smaller or cheaper models just &lt;em&gt;know&lt;/em&gt; what&amp;rsquo;s available. No trial-and-error.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;One honest catch: those tool definitions &lt;em&gt;can&lt;/em&gt; eat some context if you load everything — but modern hosts fix that with lazy tool search.&lt;/p&gt;
&lt;p&gt;MCP is deliberately curated — it doesn&amp;rsquo;t expose &lt;em&gt;every&lt;/em&gt; corner of Grafana. So what do you do when you need the esoteric stuff? That&amp;rsquo;s exactly what the power hand, &lt;strong&gt;GCX&lt;/strong&gt;, is for — next up.&lt;/p&gt;
&lt;h2 id="transcript"&gt;Transcript&lt;/h2&gt;
&lt;p&gt;Three AI tools people confuse: Assistant, MCP, GCX. Last time, I talked about the brain — Assistant. Now hand number one: &lt;strong&gt;the MCP server,&lt;/strong&gt; the &lt;em&gt;easy&lt;/em&gt; hand.&lt;/p&gt;
&lt;p&gt;Grafana MCP — Model Context Protocol — lets &lt;em&gt;any&lt;/em&gt; AI client reach into Grafana. The magic part: &lt;strong&gt;you bring that AI client - you bring your own brain.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Using MCP requires &lt;strong&gt;two pieces.&lt;/strong&gt; The &lt;strong&gt;client&lt;/strong&gt; is your AI app — the brain you bring: claude.ai, ChatGPT, Cursor. The &lt;strong&gt;server&lt;/strong&gt; is the door into Grafana that exposes the tools.&lt;/p&gt;
&lt;p&gt;Two ways to get that server: the easiest way is to use the &lt;strong&gt;Grafana Cloud hosted&lt;/strong&gt; one — already running, auth built in, just connect and go. But you can also &lt;strong&gt;self-host&lt;/strong&gt; the open-source one on your own infra.&lt;/p&gt;
&lt;p&gt;So when do you reach for Grafana MCP?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;When you&amp;rsquo;re using hosted chat tools with no terminal&lt;/strong&gt; — claude.ai, ChatGPT, your phone. No shell means no CLI, so MCP is the only way in.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;When you want to bolt Grafana onto a tool you already use&lt;/strong&gt; — already in Cursor or Claude? Just add the server. No new workflow.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;When you want the best discovery out of the box&lt;/strong&gt; — the tools describe themselves up front, so even smaller or cheaper models just &lt;em&gt;know&lt;/em&gt; what&amp;rsquo;s available. No trial-and-error.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;One honest catch: those tool definitions &lt;em&gt;can&lt;/em&gt; eat some context if you load everything — but modern hosts fix that with lazy tool search.&lt;/p&gt;
&lt;p&gt;But MCP is deliberately curated — it doesn&amp;rsquo;t expose &lt;em&gt;every&lt;/em&gt; corner of Grafana. So what do you do when you need the esoteric stuff? That&amp;rsquo;s exactly what the power hand is for. Next up is &lt;strong&gt;GCX.&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id="resources"&gt;Resources&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/grafana/mcp-grafana"&gt;Grafana MCP server&lt;/a&gt;&lt;/li&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://notes.nicolevanderhoeven.com/GCX"&gt;My notes on GCX&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>When to use Grafana Assistant vs MCP vs GCX: Grafana Assistant</title><link>https://nicolevanderhoeven.com/blog/20260817-when-to-use-grafana-assistant/</link><pubDate>Mon, 17 Aug 2026 09:00:00 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20260817-when-to-use-grafana-assistant/</guid><description>&lt;p&gt;Grafana has three AI things people keep confusing — Assistant, MCP, and GCX. They&amp;rsquo;re not competitors. Think of it as &lt;strong&gt;a brain and two hands.&lt;/strong&gt; In this short, I start with the brain: &lt;strong&gt;Grafana Assistant&lt;/strong&gt;.&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/xo7meD4Yn0k?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;p&gt;Assistant isn&amp;rsquo;t just a chatbot — it&amp;rsquo;s the &lt;em&gt;reasoning layer&lt;/em&gt;. It manages context and knows your Grafana: your dashboards, your data sources, a knowledge graph of your infrastructure. Instead of clicking around, you tell Assistant &lt;em&gt;what&lt;/em&gt; you want to do and it figures out the &lt;em&gt;how&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Reach for the Assistant when the work is &lt;strong&gt;visual or exploratory&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Building a dashboard?&lt;/strong&gt; Assistant.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&amp;ldquo;Teach me how to do this&amp;rdquo; or &amp;ldquo;where is this in the UI&amp;rdquo;?&lt;/strong&gt; Assistant.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A real incident that needs root-cause analysis across multiple data sources?&lt;/strong&gt; Assistant. That&amp;rsquo;s its sweet spot — it forms a hypothesis, correlates your signals, and can even open a pull request with the fix.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Here&amp;rsquo;s the key thing though: Assistant is Grafana&amp;rsquo;s &lt;em&gt;own&lt;/em&gt; brain — but it&amp;rsquo;s &lt;strong&gt;not the only brain that can drive Grafana.&lt;/strong&gt; That&amp;rsquo;s where the two hands come in, and I&amp;rsquo;ll cover the first of those (the MCP server) next.&lt;/p&gt;
&lt;h2 id="transcript"&gt;Transcript&lt;/h2&gt;
&lt;p&gt;Grafana has three AI things people keep confusing — Assistant, MCP, and GCX. I&amp;rsquo;m going to talk a bit about each one so you know which one is best for your use case.&lt;/p&gt;
&lt;p&gt;Spoiler: They&amp;rsquo;re not competitors. Think of it as &lt;strong&gt;a brain and two hands.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Let&amp;rsquo;s start with &lt;strong&gt;Grafana Assistant&lt;/strong&gt;, which is the brain.&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s not just a chatbot — it&amp;rsquo;s the &lt;em&gt;reasoning layer&lt;/em&gt;. It manages context, it knows your Grafana: your dashboards, your data sources, a knowledge graph of your infrastructure. So instead of you clicking around to do something, you can say what you want to do to Assistant and it figures out the &lt;em&gt;how.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Reach for the Assistant when the work is &lt;strong&gt;visual or exploratory.&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;If you&amp;rsquo;re building a dashboard? Assistant.&lt;/li&gt;
&lt;li&gt;&amp;ldquo;Teach me how to do this&amp;rdquo; or &amp;ldquo;where is this in the UI&amp;rdquo;? Assistant.&lt;/li&gt;
&lt;li&gt;You have a real incident where you need root-cause analysis across multiple data sources? Assistant.
&lt;ul&gt;
&lt;li&gt;That&amp;rsquo;s its sweet spot — it forms a hypothesis, correlates your signals, and can even open a pull request with the fix.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Here&amp;rsquo;s the key thing though: Assistant is Grafana&amp;rsquo;s &lt;em&gt;own&lt;/em&gt; brain — but it&amp;rsquo;s &lt;strong&gt;not the only brain that can drive Grafana.&lt;/strong&gt; That&amp;rsquo;s where the two hands come in… and I&amp;rsquo;ll show you those next.&lt;/p&gt;
&lt;h2 id="resources"&gt;Resources&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://grafana.com/products/cloud/ai-tools/"&gt;Grafana Assistant&lt;/a&gt; (product page)&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;li&gt;&lt;a href="https://notes.nicolevanderhoeven.com/GCX"&gt;My notes on GCX&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://contexthorizon.substack.com/p/unlearnings-from-building-grafana"&gt;Unlearnings from building Grafana Assistant&lt;/a&gt; — my Context Horizon piece&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>AI Week Day 5: Collaborating (Grafana AI Week — Friday)</title><link>https://nicolevanderhoeven.com/blog/20260731-ai-week-friday-collaborating/</link><pubDate>Fri, 31 Jul 2026 09:00:00 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20260731-ai-week-friday-collaborating/</guid><description>&lt;p&gt;The final day of AI Week is about &lt;strong&gt;collaborating&lt;/strong&gt; — using AI right where your team already works, no context switching required. &lt;strong&gt;Grafana Assistant in Slack is now generally available&lt;/strong&gt;: investigate issues, ask follow-up questions, and query your metrics and logs from the channel where the incident conversation is already happening. And that&amp;rsquo;s just one place Assistant now meets you — also announced: the &lt;strong&gt;Grafana mobile app is GA&lt;/strong&gt; (with Assistant on mobile in public preview), &lt;strong&gt;Assistant Desktop&lt;/strong&gt; in public preview, &lt;strong&gt;Microsoft Teams&lt;/strong&gt; support in private preview, and context-aware &lt;strong&gt;Assistant Search&lt;/strong&gt; in public preview. Add it all up and Assistant is now wherever you are: the Grafana UI, the API, your terminal, your coding agent, Slack, Teams, mobile, desktop, and search. That&amp;rsquo;s a wrap on five days of announcements.&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/obBh4pMrHCM?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="transcript"&gt;Transcript&lt;/h2&gt;
&lt;p&gt;It&amp;rsquo;s the final day of Grafana Labs&amp;rsquo; AI Week, and Friday is all about &lt;strong&gt;collaborating&lt;/strong&gt; — using AI right where your team already works, no context switching required.&lt;/p&gt;
&lt;p&gt;Today, &lt;strong&gt;Grafana Assistant in Slack is generally available.&lt;/strong&gt; Investigate issues, ask follow-up questions, query your metrics and logs — all from the channel where your incident conversation is already happening.&lt;/p&gt;
&lt;p&gt;And that&amp;rsquo;s just one place Assistant now meets you. Today we also announced: the &lt;strong&gt;Grafana mobile app is GA&lt;/strong&gt;, with Assistant on mobile in public preview. &lt;strong&gt;Assistant Desktop&lt;/strong&gt; is in public preview. &lt;strong&gt;Microsoft Teams&lt;/strong&gt; support is in private preview. And &lt;strong&gt;Assistant Search&lt;/strong&gt; — deeper, context-aware search — is in public preview too.&lt;/p&gt;
&lt;p&gt;Add it all up, and Assistant is now wherever you are: the Grafana UI, the API, your terminal, your coding agent, Slack, Teams, mobile, desktop, and search.&lt;/p&gt;
&lt;p&gt;That&amp;rsquo;s a wrap on five days of announcements — and I know it was a &lt;em&gt;lot&lt;/em&gt;. So if you missed a day, or you just want the full picture of where AI at Grafana stands today, I made a video for exactly that: everything you can do with AI in Grafana Cloud, including everything we shipped this week. It&amp;rsquo;s linked below and pinned in the comments.&lt;/p&gt;
&lt;p&gt;One last time: &lt;strong&gt;grafana.ai&lt;/strong&gt; for all of it. Thanks for spending AI Week with me.&lt;/p&gt;</description></item><item><title>Observability and AI explained</title><link>https://nicolevanderhoeven.com/blog/20260731-observability-and-ai-explained/</link><pubDate>Fri, 31 Jul 2026 09:00:00 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20260731-observability-and-ai-explained/</guid><description>&lt;p&gt;&amp;ldquo;AI observability&amp;rdquo; gets thrown around a lot, and it can mean one of two very different things. So in this video I map out the whole landscape of AI-related work at Grafana across the entire software development lifecycle — and show how AI and observability come together in two directions: &lt;strong&gt;AI for observability&lt;/strong&gt; (AI that helps you observe your systems) and &lt;strong&gt;observability for AI&lt;/strong&gt; (observing the AI itself).&lt;/p&gt;
&lt;p&gt;The framing is deliberate: AI in observability isn&amp;rsquo;t about replacing engineers. It&amp;rsquo;s about handing back the exhausting parts of the job — the 3am triage, the repetitive queries, the report nobody wanted to write — so you can spend your energy on the work only humans can do.&lt;/p&gt;
&lt;p&gt;I walk through each phase of the lifecycle and where the tools fit:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Planning&lt;/strong&gt; — clarity about what&amp;rsquo;s really going on, with &lt;a href="https://notes.nicolevanderhoeven.com/Grafana%20Assistant"&gt;Grafana Assistant&lt;/a&gt;: not just a chatbot, but an agent that knows your telemetry, writes your queries, and builds your dashboards.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Building&lt;/strong&gt; — momentum without losing control: Assistant, the open-source &lt;a href="https://notes.nicolevanderhoeven.com/GCX"&gt;GCX&lt;/a&gt; CLI, the Grafana MCP server, the specialized Loki/Tempo/k6 MCP servers, and the AI SDK for building your own agents in Go.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Operating&lt;/strong&gt; — staying calm under load: Investigations for agentic incident triage, Assistant Automations and the Watcher Agent for staying proactive, plus &lt;a href="https://notes.nicolevanderhoeven.com/Grafana%20Machine%20Learning"&gt;Grafana Machine Learning&lt;/a&gt; (Metrics Forecasting, Outlier Detection) and Adaptive Telemetry.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Testing &amp;amp; evaluating&lt;/strong&gt; — &lt;a href="https://notes.nicolevanderhoeven.com/Doubt%20is%20a%20form%20of%20care"&gt;doubt is a form of care&lt;/a&gt;: &lt;a href="https://notes.nicolevanderhoeven.com/k6%20%28tool%29"&gt;k6&lt;/a&gt; and agentic testing on the systems side, and Agent Observability plus the open-source o11y-bench benchmark on the &amp;ldquo;observing your AI&amp;rdquo; side.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Collaborating&lt;/strong&gt; — bringing it all to where your team already works: Assistant in Slack (and coming to Teams), on mobile, on the desktop, and via API/MCP, plus Assistant Search across your Grafana artifacts.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you&amp;rsquo;re new to the Grafana stack itself, start with my open source observability video for the non-AI foundations that all of this builds on.&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/OTmgMF6gD1k?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="resources"&gt;Resources&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;My notes on &lt;a href="https://notes.nicolevanderhoeven.com/Grafana%20Assistant"&gt;Grafana Assistant&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;My notes on &lt;a href="https://notes.nicolevanderhoeven.com/GCX"&gt;GCX&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;My notes on &lt;a href="https://notes.nicolevanderhoeven.com/k6%20%28tool%29"&gt;k6&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://o11ybench.ai"&gt;o11ybench.ai&lt;/a&gt; — the open leaderboard for AI agents doing observability work&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>AI Week Day 4: Evaluating (Grafana AI Week — Thursday)</title><link>https://nicolevanderhoeven.com/blog/20260730-ai-week-thursday-evaluating/</link><pubDate>Thu, 30 Jul 2026 09:00:00 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20260730-ai-week-thursday-evaluating/</guid><description>&lt;p&gt;Day four of AI Week is all about &lt;strong&gt;evaluating&lt;/strong&gt; — because building an agent is the easy part; &lt;em&gt;trusting&lt;/em&gt; it is where things get hard. The headline: &lt;strong&gt;Grafana Agent Observability is now generally available&lt;/strong&gt; — the tool Grafana built for itself while scaling Assistant, once it grew too complex to evaluate with unit tests. Instrument your agent with the SDK and your conversations, tool calls, traces, latency, token use, and cost all become observable in one place; add evaluators (LLM judges plus deterministic checks) to score quality on live traffic, feed low-scoring conversations into your test suite, and gate CI on experiments comparing a candidate against a baseline. And because evaluator metrics land in Prometheus, you can get paged when a bad prompt change tanks quality. The fun bonus: &lt;strong&gt;k6 agentic testing&lt;/strong&gt; — describe a browser test in plain language and an agent embedded in k6 drives the browser, no script required (they proved it by getting it to beat Wordle).&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/FOHdEm-_DEQ?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="transcript"&gt;Transcript&lt;/h2&gt;
&lt;p&gt;It&amp;rsquo;s day four of Grafana Labs&amp;rsquo; AI Week, and Thursday is all about &lt;strong&gt;evaluating&lt;/strong&gt; — because building an agent is the easy part. &lt;em&gt;Trusting&lt;/em&gt; it is where things get hard.&lt;/p&gt;
&lt;p&gt;The big news: &lt;strong&gt;Grafana Agent Observability is now generally available.&lt;/strong&gt; This is the tool we built for ourselves while scaling Grafana Assistant, when it grew too complex to evaluate with unit tests. Now it&amp;rsquo;s available to everyone on Grafana Cloud.&lt;/p&gt;
&lt;p&gt;Here&amp;rsquo;s how it works: instrument your agent with the SDK, and your conversations, tool calls, traces, latency, token use, and cost all become observable in one place. Then add evaluators — LLM judges plus deterministic checks — to score quality on live traffic. Low-scoring conversations feed your test suite, and experiments let you compare a candidate against a baseline before you ship — you can even make it a CI gate. And because evaluator metrics land in Prometheus, you can get paged if a bad prompt change tanks quality in production.&lt;/p&gt;
&lt;p&gt;But my favorite part of today? &lt;strong&gt;k6 agentic testing.&lt;/strong&gt; Describe a browser test in plain natural language, and an agent embedded in k6 drives the browser for you — no script at all. And to prove it, we gave it one job: beat Wordle. Go watch that video. I&amp;rsquo;ll wait.&lt;/p&gt;
&lt;p&gt;Everything&amp;rsquo;s at &lt;strong&gt;grafana.ai&lt;/strong&gt; — see you tomorrow for the finale: using AI where your team already works.&lt;/p&gt;</description></item><item><title>Investigations Arena: how we test Assistant investigations</title><link>https://nicolevanderhoeven.com/blog/20260730-investigations-arena/</link><pubDate>Thu, 30 Jul 2026 09:00:00 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20260730-investigations-arena/</guid><description>&lt;p&gt;How do you test an AI agent whose whole job is to investigate incidents — when every investigation is different and &amp;ldquo;correct&amp;rdquo; isn&amp;rsquo;t a single deterministic answer? In this interview I sit down with &lt;strong&gt;Will&lt;/strong&gt;, a software engineer at Grafana who&amp;rsquo;s spent the last year focused on AI: the Grafana Assistant, investigations, and memory features.&lt;/p&gt;
&lt;p&gt;The story here is how the team got from Investigations V1 to a much better V2. V1 hit a ceiling, and the demo environment they&amp;rsquo;d been testing against turned out to be the problem — the cases were too easy and too far from the messy reality of a production cluster. So they built an &lt;strong&gt;arena&lt;/strong&gt;: think competitive bot programming, but the &amp;ldquo;game&amp;rdquo; is investigating real incidents in Grafana&amp;rsquo;s own production environment. Different AI agents, each with its own strategy and tools, all take a swing at the same incident, and an LLM-as-judge scores their answers against a human-verified root cause.&lt;/p&gt;
&lt;p&gt;What&amp;rsquo;s interesting is that the &lt;em&gt;score&lt;/em&gt; wasn&amp;rsquo;t even the most valuable output at first — the &lt;strong&gt;insights&lt;/strong&gt; were. Watching which strategies worked, which tools returned so much noise that they poisoned the context, and which agents wandered off is what let the team optimize bit by bit into the V2 release. The arena also compares more than models: different harnesses running Sonnet vs. Opus, Claude Code with the Grafana MCP, even just hitting the public API directly with &lt;code&gt;curl&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;A couple of my favorite moments: Will explains the &lt;strong&gt;guardrails&lt;/strong&gt; that stop agents from &amp;ldquo;cheating&amp;rdquo; (they can only look at data from within the incident&amp;rsquo;s time window, so they can&amp;rsquo;t peek at the fix commit that resolved it) — and how the models mostly play fair because they treat it like a game. And there&amp;rsquo;s a lovely example of emergent creativity: an agent reached for tools the team hadn&amp;rsquo;t even considered, they turned out to be genuinely useful for investigation, and those tools got promoted into the real harness. Will&amp;rsquo;s hope for the future is to open this up — an OliBench-style shared benchmark where the community can throw their own investigation agents into the arena and raise quality across the board.&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/YPfqchw8LCo?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="transcript"&gt;Transcript&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Will:&lt;/strong&gt;
Hey, my name is Will. I&amp;rsquo;m a software engineer at Grafana. I&amp;rsquo;ve been there for three years, and for the last year I&amp;rsquo;ve been focusing on AI — the Grafana Assistant, investigations, and memory features.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nicole:&lt;/strong&gt;
And what&amp;rsquo;s the latest thing you&amp;rsquo;ve been working on?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Will:&lt;/strong&gt;
So we developed Investigations V1, and we saw that we hit a ceiling at some point. We came up with a different approach, but this time we needed a good evaluation environment — the demo environment wasn&amp;rsquo;t enough, because those cases were too easy and too far from the reality of a production environment. So we decided to build an arena.&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s a little bit like the idea of competitive bot programming, where bots fight against each other on specific tasks or games. In this case, the topic was investigations in our production cluster — real incidents. We started building bots that had different strategies and different tools; these were AI agents. Comparing a diversity of strategies let us surface the best approaches, and from there we could iterate, bring in more test cases from more incidents, and reach higher and higher quality.&lt;/p&gt;
&lt;p&gt;The idea is that the bots try to solve the same case, and we use an LLM as a judge to compare the different approaches. We have different criteria, because for each incident we have a root cause that&amp;rsquo;s been verified by a human. That gives us our ground truth, and the LLM-as-judge compares that ground truth against the answers the agents came up with.&lt;/p&gt;
&lt;p&gt;The important part at first wasn&amp;rsquo;t even the score — it was the insights. This tool was better with this strategy; this one had noise in the results that poisoned the context; the results returned from this specific tool were just too much. So we managed to really optimize bit by bit and come up with Investigations V2, which we just released. It&amp;rsquo;s a massive improvement compared to our V1 approach.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nicole:&lt;/strong&gt;
So is it comparing just different models for investigations, or is it also comparing things like Claude Code and the Grafana MCP versus Assistant?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Will:&lt;/strong&gt;
Both, actually. We have different versions of our harness for investigations that we run with Sonnet and with Opus, but we also use the Claude Code harness with the Grafana MCP — and even just using &lt;code&gt;curl&lt;/code&gt; to directly hit our public API.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nicole:&lt;/strong&gt;
Do the models ever cheat?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Will:&lt;/strong&gt;
So far it&amp;rsquo;s been quite good. We have guardrails. Because we investigate past incidents, we need to make sure the LLM only looks at a specific time window — only from when the incident started — otherwise it would be able to find the pull request that was used to solve the incident. But they&amp;rsquo;re pretty good at following the rules; they take it as a game a little bit. We even have an agent that checks afterward, with the judge, to make sure they followed every rule.&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s funny, actually — we had a case using Claude Code where it started to use some tools we hadn&amp;rsquo;t thought about in the first place, and they turned out to be very useful for investigation. We&amp;rsquo;d never considered them, so we brought them into our investigation harness and it helped a lot. Giving the agents freedom and creativity in this kind of environment is really useful. That diversity sponsors new ideas that we can put into our own work.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nicole:&lt;/strong&gt;
Cool. Do you have any plans to publish this and share it so that other people can do it too — kind of like OliBench?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Will:&lt;/strong&gt;
Yeah, I think, why not? I think we can go this way too. I&amp;rsquo;m sure it would be useful for other agents. And it would be very nice if we could compare agents from other people and other companies — maybe with different harnesses, maybe even different tools — because right now it&amp;rsquo;s mostly about our MCP, our CLI, and our investigation harness. But if the community comes up with their own investigation agents — and I think I&amp;rsquo;ve seen a few — it would be fun to put them in the arena and help not just our product, but any product improve in quality.&lt;/p&gt;
&lt;h2 id="resources"&gt;Resources&lt;/h2&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;</description></item><item><title>The Great Doubt: What Building an AI Agent Taught Us About Trust (KubeCon Japan 2026)</title><link>https://nicolevanderhoeven.com/blog/20260730-the-great-doubt-kubecon-japan/</link><pubDate>Thu, 30 Jul 2026 09:00:00 +0900</pubDate><guid>https://nicolevanderhoeven.com/blog/20260730-the-great-doubt-kubecon-japan/</guid><description>&lt;p&gt;This week I spoke at &lt;a href="https://events.linuxfoundation.org/kubecon-cloudnativecon-japan/"&gt;KubeCon + CloudNativeCon Japan 2026&lt;/a&gt; in Yokohama, Japan. I gave a talk called &lt;em&gt;The Great Doubt: What Building an AI Agent Taught Us About Trust&lt;/em&gt;. Here&amp;rsquo;s the abstract:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;When we started building an AI assistant for observability, we thought the hard part would be making it smart. We were wrong. The hard part was knowing when to trust it.&lt;/p&gt;
&lt;p&gt;AI agents hallucinate, forget context, and confidently give wrong answers. Traditional testing doesn&amp;rsquo;t catch these failures. What&amp;rsquo;s needed is evaluation grounded in systematic doubt.&lt;/p&gt;
&lt;p&gt;This talk shares lessons from shipping an AI agent to production: how to build a golden dataset of use cases you must get right, how to use LLM-as-judge when there&amp;rsquo;s no ground truth, and how to use OpenTelemetry traces to debug eval failures. You&amp;rsquo;ll also hear what&amp;rsquo;s still unsolved: evaluating multi-agent handoffs and closing the feedback loop between what users ask and what your evals cover.&lt;/p&gt;
&lt;p&gt;Kyoto School philosopher Nishitani Keiji called this &amp;ldquo;The Great Doubt&amp;rdquo; (大疑): questioning every assumption until only what survives is real. For AI agents, that&amp;rsquo;s not philosophy. It&amp;rsquo;s the job.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The talk walks through the layers of doubt we worked through while building &lt;a href="https://notes.nicolevanderhoeven.com/Grafana+Assistant"&gt;Grafana Assistant&lt;/a&gt;: doubting the agent itself, then doubting our tests, then the LLM-as-judge, then our own scores — and finally doubting whether the doubt was even justified. Each layer needed a different tool, from a golden dataset run in a fully synthetic observability environment, through online evals on live traffic, to per-conversation OpenTelemetry traces that link every eval score back to the exact LLM and tool calls that produced it.&lt;/p&gt;
&lt;p&gt;You can find the slides at &lt;a href="https://nicole.to/doubtslides"&gt;nicole.to/doubtslides&lt;/a&gt;, and you can watch the full talk below:&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/uW9Hlp3fT14?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="resources"&gt;Resources&lt;/h2&gt;
&lt;p&gt;Grafana Assistant (generally available for Grafana OSS, Grafana Cloud, and Grafana Play):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://grafana.com/docs/grafana-cloud/machine-learning/assistant/"&gt;Docs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://play.grafana.org"&gt;Try it out on Grafana Play&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Assistant Investigations (Grafana Cloud):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://gra.fan/investigations"&gt;Docs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Agent Observability (Grafana Cloud):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://gra.fan/agento11y"&gt;Docs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;o11y-bench (OSS):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://gra.fan/o11ybench"&gt;Site&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Investigations Arena:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://youtu.be/YPfqchw8LCo"&gt;Video&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="related-reading"&gt;Related reading&lt;/h2&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;My Context Horizon piece &lt;a href="https://contexthorizon.substack.com/p/unlearnings-from-building-grafana"&gt;&lt;em&gt;Unlearnings from building Grafana Assistant&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://amzn.to/4vZNlPD"&gt;&lt;em&gt;The Way of Zen&lt;/em&gt;&lt;/a&gt; by Alan W. Watts&lt;/li&gt;
&lt;li&gt;&lt;a href="https://amzn.to/3RgXGIP"&gt;&lt;em&gt;Zen Mind, Beginner&amp;rsquo;s Mind&lt;/em&gt;&lt;/a&gt; by Shunryu Suzuki&lt;/li&gt;
&lt;li&gt;&lt;a href="https://amzn.to/4vQW2eQ"&gt;&lt;em&gt;Religion and Nothingness, Volume 1&lt;/em&gt;&lt;/a&gt; by Nishitani Keiji&lt;/li&gt;
&lt;li&gt;&lt;a href="https://amzn.to/4yFff6d"&gt;&lt;em&gt;Philosophers of Nothingness: An Essay on the Kyoto School&lt;/em&gt;&lt;/a&gt; by James W. Heisig&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>AI Week Day 3: Operations &amp; Maintenance (Grafana AI Week — Wednesday)</title><link>https://nicolevanderhoeven.com/blog/20260729-ai-week-wednesday-operations/</link><pubDate>Wed, 29 Jul 2026 09:00:00 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20260729-ai-week-wednesday-operations/</guid><description>&lt;p&gt;Day three of AI Week is about &lt;strong&gt;operations and maintenance&lt;/strong&gt; — because once code reaches production, the operational work is still surprisingly manual: someone&amp;rsquo;s watching dashboards, deciding whether an error spike is real, and writing up what happened, every single day. Two Grafana Assistant features went GA to take that off your plate. &lt;strong&gt;Assistant Automations&lt;/strong&gt; handle recurring work — save a prompt and run it on a schedule (like a morning brief on your service&amp;rsquo;s health), each run keeping its own history and able to notify you in Slack. &lt;strong&gt;Assistant Investigations&lt;/strong&gt; is for when something actually breaks: it digs across metrics, logs, traces, and profiles, develops and tests hypotheses, and hands you a structured report you can follow along with in a Workspace. You&amp;rsquo;re offloading vigilance, not accountability — the evidence is always there to review, and you still make the call.&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/5P7qSKIRSek?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="transcript"&gt;Transcript&lt;/h2&gt;
&lt;p&gt;It&amp;rsquo;s day three of AI Week, and Wednesday is all about &lt;strong&gt;operations and maintenance&lt;/strong&gt;. Because here&amp;rsquo;s the thing: once your code reaches production, the operational work is still surprisingly manual. Someone&amp;rsquo;s watching dashboards, someone&amp;rsquo;s deciding whether that error spike is real, and someone&amp;rsquo;s writing up what happened — every single day.&lt;/p&gt;
&lt;p&gt;Today, two features of Grafana Assistant are now generally available to take that burden off your plate: &lt;strong&gt;Investigations&lt;/strong&gt; and &lt;strong&gt;Automations&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Assistant Automations&lt;/strong&gt; handle the recurring work of operating a system. Save an Assistant prompt and run it on a schedule — like a morning brief that summarizes the operational health of your service over the last 24 hours. Every run keeps its own conversation and history, and it can notify you in Slack when it&amp;rsquo;s done or needs approval.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Assistant Investigations&lt;/strong&gt; is for when something actually breaks. Investigations digs into issues across your metrics, logs, traces, and profiles, develops and tests hypotheses, and hands you a structured report. You can follow along in a Workspace, see what&amp;rsquo;s been ruled out, and add guidance while it works.&lt;/p&gt;
&lt;p&gt;You&amp;rsquo;re offloading vigilance, not accountability — the evidence and reasoning are always there to review, and you still make the call.&lt;/p&gt;
&lt;p&gt;Everything&amp;rsquo;s at &lt;strong&gt;grafana.ai&lt;/strong&gt; — see you tomorrow for day four: evaluating your agents.&lt;/p&gt;</description></item><item><title>AI Week Day 2: Building (Grafana AI Week — Tuesday)</title><link>https://nicolevanderhoeven.com/blog/20260728-ai-week-tuesday-building/</link><pubDate>Tue, 28 Jul 2026 09:00:00 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20260728-ai-week-tuesday-building/</guid><description>&lt;p&gt;Day two of AI Week is all about &lt;strong&gt;building&lt;/strong&gt; — the AI tools that help you write software with confidence. Two big announcements went generally available: &lt;strong&gt;gcx&lt;/strong&gt; (the Grafana CLI) and the &lt;strong&gt;Grafana MCP server&lt;/strong&gt;. Both connect your coding agents — Claude Code, Cursor, and friends — to your Grafana telemetry. The MCP server gives agents opinionated, ready-made tools for the common cases (querying metrics and logs, reading and updating dashboards); gcx is the more flexible, less opinionated option, built for agents from the ground up with read-only guardrails and its own bundle of agent skills. Both work for OSS and Grafana Cloud. The point: when an agent writes your code, it shouldn&amp;rsquo;t be guessing — it should be looking at how your system &lt;em&gt;actually&lt;/em&gt; behaves in production. That&amp;rsquo;s telemetry-driven development.&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/Y3QtH94f77U?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="transcript"&gt;Transcript&lt;/h2&gt;
&lt;p&gt;It&amp;rsquo;s day two of Grafana Labs&amp;rsquo; AI Week, and Tuesday is all about &lt;strong&gt;building&lt;/strong&gt; — the AI tools that help you build software with confidence.&lt;/p&gt;
&lt;p&gt;Today we have two big announcements: &lt;strong&gt;gcx&lt;/strong&gt; and the &lt;strong&gt;Grafana MCP server&lt;/strong&gt; are both now generally available.&lt;/p&gt;
&lt;p&gt;Both of them connect your coding agents — think Claude Code or Cursor — to your Grafana telemetry. So what&amp;rsquo;s the difference?&lt;/p&gt;
&lt;p&gt;The &lt;strong&gt;Grafana MCP server&lt;/strong&gt; gives your agent opinionated, ready-made tools for the most common use cases: querying your metrics and logs, reading and updating dashboards, that kind of thing. You can run it yourself, or use the hosted MCP server with your Grafana Cloud stack — so yes, it works for both &lt;strong&gt;OSS and Grafana Cloud&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;gcx&lt;/strong&gt; is the Grafana CLI, and it&amp;rsquo;s the more flexible, less opinionated option. Agents can explore it and build their own workflows, and it was designed for agents from the ground up, with read-only guardrails so your agent can&amp;rsquo;t touch anything you didn&amp;rsquo;t approve. It works with Cloud stacks and self-managed instances, and it even ships with its own bundle of agent skills.&lt;/p&gt;
&lt;p&gt;Why does this matter? Because when an agent writes your code, it shouldn&amp;rsquo;t be guessing — it should be looking at how your system &lt;em&gt;actually&lt;/em&gt; behaves in production. That&amp;rsquo;s telemetry-driven development.&lt;/p&gt;
&lt;p&gt;Head to &lt;strong&gt;grafana.ai&lt;/strong&gt; for everything we&amp;rsquo;re shipping this week, and I&amp;rsquo;ll see you tomorrow for day three.&lt;/p&gt;</description></item><item><title>AI Week Day 1: Planning (Grafana AI Week — Monday)</title><link>https://nicolevanderhoeven.com/blog/20260727-ai-week-monday-planning/</link><pubDate>Mon, 27 Jul 2026 09:00:00 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20260727-ai-week-monday-planning/</guid><description>&lt;p&gt;It&amp;rsquo;s day one of Grafana Labs&amp;rsquo; AI Week, and Monday is all about &lt;strong&gt;planning&lt;/strong&gt; — getting the clarity you need on what&amp;rsquo;s going on in your system so you can figure out what to build. Kicking things off is &lt;strong&gt;Workspace for Grafana Assistant&lt;/strong&gt;: a full-page view of Assistant so your conversations and generated graphs aren&amp;rsquo;t crammed into the little right-hand sidebar. It&amp;rsquo;s a much less cluttered place to run investigations and to be agent-first. On top of that, Assistant is now easier to try — enable it in Grafana 13 for OSS without linking a Grafana Cloud account, or try it with no signup or download at all on &lt;a href="https://play.grafana.org"&gt;Grafana Play&lt;/a&gt;.&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/AEU73mjeh0c?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="transcript"&gt;Transcript&lt;/h2&gt;
&lt;p&gt;Hi everyone! I&amp;rsquo;m Nicole van der Hoeven and I&amp;rsquo;m really excited to welcome you to AI Week. Today is Monday, which is planning day, where we give you the tools you need to get clarity on what even is going on in your system so that you can figure out what to build.&lt;/p&gt;
&lt;p&gt;Now we&amp;rsquo;re kicking things off with a feature called Workspace for Grafana Assistant. Now if you&amp;rsquo;ve used Assistant before, you&amp;rsquo;ll know that it comes up on the little sidebar on the right side of Grafana. Well, that can start to get cramped if you have multiple conversations or if you&amp;rsquo;ve asked Assistant to generate multiple graphs for you. Well, we&amp;rsquo;ve heard you, and now we&amp;rsquo;re giving you a full page view of Assistant. So you&amp;rsquo;ll have all of your conversations on the left, and this is also an excellent place to run investigations from. You can also zoom in on any of those graphs, and it&amp;rsquo;s just a much less cluttered view if you want to be agent-first.&lt;/p&gt;
&lt;p&gt;Speaking of Assistant, the second thing I want to tell you is that you know, Assistant was already available everywhere. But now, Assistant is available&amp;hellip; in more places than everywhere? And also more easily. So Assistant was already available for OSS, but you had to link your Grafana Cloud account, which was not so handy if you wanted to try it out. But not anymore. Now if you download Grafana 13 and enable Assistant, then you&amp;rsquo;ll just be able to go and try it out and chat with Assistant without doing anything else. It&amp;rsquo;s still not free or open source, but it IS a lot easier to try it out.&lt;/p&gt;
&lt;p&gt;And if you don&amp;rsquo;t want to download anything, that&amp;rsquo;s what Grafana Play is for. Grafana Assistant is now available to try out on Grafana Play without any signup or any download required. Try it out at play.grafana.org. I really love seeing it there. Tune in tomorrow where we&amp;rsquo;re going to talk about everything we&amp;rsquo;re announcing to help you start to build.&lt;/p&gt;</description></item><item><title>My reMarkable Obsidian workflow</title><link>https://nicolevanderhoeven.com/blog/20260703-my-remarkable-obsidian-workflow/</link><pubDate>Fri, 03 Jul 2026 17:00:00 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20260703-my-remarkable-obsidian-workflow/</guid><description>&lt;p&gt;I&amp;rsquo;m a big note-taker — but what most people don&amp;rsquo;t realise is that digital notes have only ever been a small part of that. I love analog notes, and lately I&amp;rsquo;ve loved &lt;em&gt;meshing&lt;/em&gt; the analog with the digital using E Ink tablets. The problem with the reMarkable has always been the workflow: there hasn&amp;rsquo;t been an easy way to get everything back into &lt;a href="https://nicolevanderhoeven.com/blog/"&gt;Obsidian&lt;/a&gt;, which — as you know — is kind of important for me.&lt;/p&gt;
&lt;p&gt;In this video I show how there&amp;rsquo;s &lt;em&gt;finally&lt;/em&gt; a clean way to tie it all together: reMarkable → Obsidian as a PDF → searchable, OCR&amp;rsquo;d text.&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/h1Sv7sXMEj0?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-setup-a-lot-of-e-ink"&gt;The setup: a lot of E Ink&lt;/h2&gt;
&lt;p&gt;I&amp;rsquo;ve tried a lot of E Ink tablets and readers. My everyday carry is the &lt;strong&gt;reMarkable Paper Pro Move&lt;/strong&gt;, and I keep a full-size &lt;strong&gt;reMarkable Paper Pro&lt;/strong&gt; at my desk. I love them more than the Kobo or Kindle Scribe lines — but the deciding factor was always going to be whether I could get my handwriting into Obsidian without friction.&lt;/p&gt;
&lt;h2 id="step-1--sync-the-pdf-into-obsidian"&gt;Step 1 — Sync the PDF into Obsidian&lt;/h2&gt;
&lt;p&gt;The piece that makes this work is a community plugin: &lt;strong&gt;&lt;a href="https://github.com/TimDommett/Remarkable-Sync---Obsidian-Plugin"&gt;reMarkable Sync&lt;/a&gt; by Tim Dommett&lt;/strong&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;In Obsidian, go to &lt;strong&gt;Community plugins → Browse&lt;/strong&gt;, search for &lt;em&gt;reMarkable&lt;/em&gt;, install and enable it.&lt;/li&gt;
&lt;li&gt;The first time, you&amp;rsquo;ll &lt;strong&gt;register&lt;/strong&gt; the plugin — it sends you to your reMarkable page, gives you a one-time code, and you paste that in and hit register.&lt;/li&gt;
&lt;li&gt;In settings, choose a &lt;strong&gt;sync sub-folder&lt;/strong&gt;. I put mine under &lt;code&gt;plugins/reMarkable&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Set the &lt;strong&gt;sync interval&lt;/strong&gt; — I have mine sync every 30 minutes, but you can go more frequently, manually, or trigger it on demand from the command palette (&lt;code&gt;reMarkable Sync: Sync documents&lt;/code&gt;).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Once that&amp;rsquo;s done, anything I write on the reMarkable lands in my vault as a &lt;strong&gt;PDF&lt;/strong&gt; — diagrams, cursive, print, colours and all. In the video I write out a page (neural nets, as explained by my partner Noel), trigger a manual sync, and watch it appear in Obsidian.&lt;/p&gt;
&lt;h2 id="step-2--ocr-the-handwriting-into-real-text"&gt;Step 2 — OCR the handwriting into real text&lt;/h2&gt;
&lt;p&gt;A PDF in Obsidian is a start, but it isn&amp;rsquo;t &lt;em&gt;searchable&lt;/em&gt; or editable. That&amp;rsquo;s where &lt;strong&gt;OCR&lt;/strong&gt; (optical character recognition) comes in — turning the handwritten image into text that behaves like any other note: searchable, linkable, modifiable. I keep the PDF too (I like preserving the colours and the handwriting, especially when someone else wrote on my tablet), but I want the durable text version as well.&lt;/p&gt;
&lt;p&gt;I automate this with &lt;strong&gt;&lt;a href="https://openclaw.ai"&gt;OpenClaw&lt;/a&gt;&lt;/strong&gt; — my AI agent, &lt;a href="https://openclaw.ai"&gt;Iris&lt;/a&gt;, runs a skill on a heartbeat that watches my reMarkable folder, notices new files as they drop in, and OCRs them automatically. It even fills in properties I like and, because it knows my context (and sometimes has the transcript too), it can describe diagrams more completely than I&amp;rsquo;d expect. It correctly read &lt;em&gt;&amp;ldquo;Neural nets as explained by Noel&amp;rdquo;&lt;/em&gt; and &lt;em&gt;&amp;ldquo;get diagrams from WhatsApp&amp;rdquo;&lt;/em&gt; — whether I wrote in print or cursive.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;That setup is admittedly overkill&lt;/strong&gt;, and not something I&amp;rsquo;d recommend to everyone. So in the video I also show the more accessible version:&lt;/p&gt;
&lt;h3 id="the-accessible-alternative-claude-cowork--claude-desktop"&gt;The accessible alternative: Claude Cowork / Claude Desktop&lt;/h3&gt;
&lt;p&gt;If you&amp;rsquo;d like to automate OCR without a full agent setup, the &lt;strong&gt;Claude Desktop app&lt;/strong&gt; (with Cowork) is a great option — especially if you already keep notes, since your vault is exactly the kind of context that makes AI immediately useful.&lt;/p&gt;
&lt;p&gt;The prompt I use, roughly:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;You are in my Obsidian vault, in the folder &lt;code&gt;plugins/reMarkable&lt;/code&gt;. Look for the very latest PDF I&amp;rsquo;ve put in there and OCR it. If there&amp;rsquo;s a diagram, describe the diagram. If there&amp;rsquo;s text — handwritten cursive or print — transcribe it. Print all of your findings into a note in the &lt;code&gt;plugins/Claude output&lt;/code&gt; folder, using the same file name as the original PDF.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;It reads the latest PDF, describes the diagram (it got &amp;ldquo;neuron&amp;rdquo; and &amp;ldquo;perceptron&amp;rdquo; — words that were never actually written), and writes the note. Interestingly it did as well as my own setup, because under the hood we were both using the same model (4.8).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Then turn it into a skill.&lt;/strong&gt; I tell Claude: &lt;em&gt;&amp;ldquo;Please turn all of these instructions into a skill and call it OCR.&amp;rdquo;&lt;/em&gt; It writes the skill, preserving the paths, and I hit save. Now next time I have a reMarkable PDF to transcribe, I just run &lt;code&gt;/OCR&lt;/code&gt; and name the file. If you want to go further, you can even ask it to make this a scheduled task.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;(Tip: I use &lt;a href="https://spokenly.app/"&gt;Spokenly&lt;/a&gt; to dictate these instructions to Claude rather than type them.)&lt;/em&gt;&lt;/p&gt;
&lt;h2 id="why-this-matters"&gt;Why this matters&lt;/h2&gt;
&lt;p&gt;This simple workflow has made it so I can &lt;em&gt;actually use&lt;/em&gt; my reMarkables. I love typing notes on my laptop, but when I&amp;rsquo;m face-to-face with someone — in a talk, at a conference — a screen between me and the speaker feels distancing, and a little rude. I feel more present without it. And the little Paper Pro Move is far easier to carry than a laptop or iPad.&lt;/p&gt;
&lt;p&gt;Now that I know everything ends up in Obsidian anyway, I get to pick whatever note-taking method I feel like in the moment — typing, reMarkable, or fully analog. That same OCR process (minus the reMarkable Sync plugin) also works for OCRing photos of pages from my paper traveller&amp;rsquo;s journal.&lt;/p&gt;
&lt;p&gt;If you&amp;rsquo;d like to go deeper on how I use AI in my note-taking, check out my &lt;a href="https://nicolevanderhoeven.com/blog/20260529-my-ai-notetaking-workflows/"&gt;AI note-taking workflows video&lt;/a&gt; — I cover the different audio transcription tools I use there too.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Arigatō gozaimashita! Mata kondo ne~&lt;/em&gt;&lt;/p&gt;
&lt;h2 id="resources"&gt;Resources&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;🖊️ &lt;a href="https://github.com/TimDommett/Remarkable-Sync---Obsidian-Plugin"&gt;reMarkable Sync by Tim Dommett&lt;/a&gt; — the Obsidian community plugin that syncs reMarkable documents into your vault as PDFs&lt;/li&gt;
&lt;li&gt;🧠 &lt;a href="https://notes.nicolevanderhoeven.com/OpenClaw"&gt;My notes on OpenClaw&lt;/a&gt; — the agent runtime Iris runs on&lt;/li&gt;
&lt;li&gt;🎥 &lt;a href="https://nicolevanderhoeven.com/blog/20260529-my-ai-notetaking-workflows/"&gt;My AI note-taking workflows&lt;/a&gt; — the companion video on transcription and AI capture&lt;/li&gt;
&lt;li&gt;🗣️ &lt;a href="https://spokenly.app/"&gt;Spokenly&lt;/a&gt; — the dictation app I use to talk to Claude&lt;/li&gt;
&lt;li&gt;💛 &lt;a href="https://patreon.com/nicolevdh"&gt;My Patreon&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>My AI note-taking workflows</title><link>https://nicolevanderhoeven.com/blog/20260529-my-ai-notetaking-workflows/</link><pubDate>Fri, 29 May 2026 17:00:00 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20260529-my-ai-notetaking-workflows/</guid><description>&lt;p&gt;Just over a year ago, if you&amp;rsquo;d asked me how I felt about AI and note-taking, I would have told you I didn&amp;rsquo;t want AI anywhere near my notes. The world is different now, and so am I — I rely on AI in a lot of ways, and one of the easiest places to start is speech-to-text: using AI to convert my voice into something my &lt;a href="https://nicolevanderhoeven.com/blog/"&gt;PKM&lt;/a&gt; system can actually work with.&lt;/p&gt;
&lt;p&gt;In this video, I walk through &lt;strong&gt;three tiers of AI note-taking workflows&lt;/strong&gt; — free, paid, and (a little) overkill — and show what I&amp;rsquo;m using at each level.&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/2Jl6H9Ri8iI?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-framing-note-taking-vs-note-making"&gt;The framing: note-taking vs. note-making&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://www.youtube.com/@LinkingYourThinking"&gt;Nick Milo&lt;/a&gt; draws a useful distinction between note-&lt;em&gt;taking&lt;/em&gt; and note-&lt;em&gt;making&lt;/em&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Note-taking&lt;/strong&gt; is collecting — recording information, paraphrasing what an author said, highlighting.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Note-making&lt;/strong&gt; is connecting — active thinking, engaging with the information, linking it to other ideas, working out how it fits into your PKM system.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The best use of AI right now, for me, is to help with the note-taking part. I like to start with speech because speech used to be a form of input my PKM system couldn&amp;rsquo;t take very much of. Pre-AI, voice was lossy — you&amp;rsquo;d have to transcribe it yourself or lose the thought. Now: you speak, AI transcribes it, it lands in your notes, and the AI can keep working with it from there.&lt;/p&gt;
&lt;h2 id="tier-1--free"&gt;Tier 1 — Free&lt;/h2&gt;
&lt;p&gt;Use your phone&amp;rsquo;s recording app. iOS Voice Memos transcribes recordings, and the Notes app does too on newer Apple devices. Samsung&amp;rsquo;s Voice Recorder app does the same on Galaxy devices. For desktop, I demo &lt;a href="https://spokenly.app/"&gt;Spokenly&lt;/a&gt; (Mac, Windows, iOS) — drop audio in, get text out.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;The friction is manual:&lt;/strong&gt; remember to record, remember to transcribe, remember to paste.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;What you get:&lt;/strong&gt; quick notes to yourself, captured instantly.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Best for:&lt;/strong&gt; people who want to get started as easily as possible without paying for anything.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you want to go local-first, I&amp;rsquo;d point you at &lt;a href="https://huggingface.co/nvidia/parakeet-tdt-0.6b-v2"&gt;NVIDIA Parakeet&lt;/a&gt; and the &lt;a href="https://huggingface.co/Qwen"&gt;Qwen&lt;/a&gt; models for offline transcription.&lt;/p&gt;
&lt;h2 id="tier-2--paid"&gt;Tier 2 — Paid&lt;/h2&gt;
&lt;p&gt;The second tier is paying for the convenience layer. These tools collapse the first two steps — you record, the transcript appears, and you usually get extras like AI summaries or the ability to ask questions of the transcript (sometimes live).&lt;/p&gt;
&lt;p&gt;Tools: &lt;a href="https://voicenotes.com"&gt;Voicenotes&lt;/a&gt;, &lt;a href="https://otter.ai"&gt;Otter.ai&lt;/a&gt;, &lt;a href="https://letterly.app"&gt;Letterly&lt;/a&gt;, &lt;a href="https://www.granola.ai"&gt;Granola&lt;/a&gt;, &lt;a href="https://gemini.google.com"&gt;Gemini&lt;/a&gt; on Google Meet, &lt;a href="https://www.zoom.com/en/ai-assistant/"&gt;Zoom AI Companion&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;For Granola specifically, I use the &lt;a href="https://github.com/tomelliot/obsidian-granola-sync"&gt;Granola Sync Obsidian plugin&lt;/a&gt; plus a &lt;a href="https://github.com/chhoumann/quickadd"&gt;QuickAdd&lt;/a&gt; macro (&lt;code&gt;QuickAdd: Macro - Link Granola&lt;/code&gt;) to automatically link a transcript to the right note in my vault — in the video I link a &lt;a href="https://www.youtube.com/@Bookborn"&gt;Dungeon Crawler Carl&lt;/a&gt; recap to its Granola transcript. &lt;em&gt;(The linking script and macro are on my &lt;a href="https://patreon.com/nicolevdh"&gt;Patreon&lt;/a&gt;.)&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Tradeoffs:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Your notes live in their system, not yours. Shutdowns, pricing changes, and acquisitions all take your archive with them.&lt;/li&gt;
&lt;li&gt;The friction reduction is real, though — if it means you actually capture instead of &lt;em&gt;intending&lt;/em&gt; to capture, that&amp;rsquo;s worth a lot.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Best for:&lt;/strong&gt; people who want to capture meetings, games, or lectures.&lt;/p&gt;
&lt;h2 id="tier-3--overkill"&gt;Tier 3 — Overkill&lt;/h2&gt;
&lt;p&gt;This is my setup. It&amp;rsquo;s a little ridiculous; I&amp;rsquo;m going to show it anyway.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Hardware:&lt;/strong&gt; a &lt;a href="https://plaudus.sjv.io/MA4GQN"&gt;Plaud&lt;/a&gt; AI recorder. Small, clips to my phone or sits in a pocket. Always running, or started deliberately for important conversations and walks. It can run entirely locally, or upload to Plaud&amp;rsquo;s servers.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Plugin:&lt;/strong&gt; &lt;a href="https://github.com/nicolevanderhoeven/plaud-sync-for-obsidian"&gt;my fork&lt;/a&gt; of &lt;a href="https://github.com/leonardsellem/plaud-sync-for-obsidian"&gt;Leonard Sellem&amp;rsquo;s Plaud Sync plugin for Obsidian&lt;/a&gt;, installed via &lt;a href="https://github.com/tfthacker/obsidian42-brat"&gt;BRAT&lt;/a&gt;. The fork adds a couple of things I needed for my own daily workflow.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AI layer:&lt;/strong&gt; &lt;a href="https://openclaw.ai"&gt;Iris&lt;/a&gt;, my &lt;a href="https://openclaw.ai"&gt;OpenClaw&lt;/a&gt;-powered AI agent, watches the synced files. Every morning she reads the previous day&amp;rsquo;s transcripts, plus my calendar and daily notes, and outputs a daily summary, extracted tasks, and flags anything I&amp;rsquo;ve said I wanted to remember.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I also use &lt;strong&gt;&amp;ldquo;Hey Iris&amp;rdquo; memos&lt;/strong&gt; — voice notes I record into Plaud while I&amp;rsquo;m out, addressed to Iris, that she processes the next time she runs. &lt;em&gt;&amp;ldquo;Hey Iris, remind me to follow up with X.&amp;rdquo;&lt;/em&gt; &lt;em&gt;&amp;ldquo;Hey Iris, add this restaurant to my places-to-try list.&amp;rdquo;&lt;/em&gt; They land in my system without me opening anything.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Benefits:&lt;/strong&gt; I don&amp;rsquo;t think about capture at all. I just live and talk, and the relevant pieces land in my notes.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Cons:&lt;/strong&gt; the privacy of people around me. I&amp;rsquo;m careful about when this is on, and especially careful about explicit consent.&lt;/p&gt;
&lt;h2 id="why-three-tiers-not-one"&gt;Why three tiers, not one&lt;/h2&gt;
&lt;p&gt;The slightly absurd thing is that I still use all three levels — in parallel, for different things:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Spokenly&lt;/strong&gt; for dictating at my desk, sometimes straight into Obsidian, sometimes into a chat.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Granola&lt;/strong&gt; for meeting notes, and increasingly for transcribing videos I&amp;rsquo;m watching.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Voicenotes&lt;/strong&gt; for diary-style entries.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Plaud&lt;/strong&gt; when it&amp;rsquo;s ethical to (especially when I&amp;rsquo;m travelling with my partner and I want a clean record of conversations and ideas we had on the move).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For me, voice is the &lt;strong&gt;lowest-friction capture method that exists&lt;/strong&gt;. No stopping, no finding my phone, no opening an app, no typing. Just talk — and the system handles everything downstream.&lt;/p&gt;
&lt;p&gt;That means the gap between &lt;em&gt;thinking of something&lt;/em&gt; and &lt;em&gt;writing it down&lt;/em&gt; is basically gone for me. Note-&lt;em&gt;taking&lt;/em&gt; — the tedious part — gets offloaded. So when I&amp;rsquo;m in a meeting I can be present, knowing the tool is faithfully tracking what&amp;rsquo;s said. Whatever notes I &lt;em&gt;do&lt;/em&gt; take are then what &lt;em&gt;I&lt;/em&gt; think about what I&amp;rsquo;m hearing, which lets me start synthesising a lot faster.&lt;/p&gt;
&lt;p&gt;If you want more details about any of these workflows, let me know in the comments. &lt;em&gt;Arigatō gozaimashita! Mata kondo ne~&lt;/em&gt;&lt;/p&gt;
&lt;h2 id="resources"&gt;Resources&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;🎙️ &lt;a href="https://nicolevanderhoeven.com/blog/20250427-mechanics-of-knowledge-management-podcast/"&gt;The Mechanics of Knowledge Management podcast episode&lt;/a&gt; where Malik interviewed me on this stuff&lt;/li&gt;
&lt;li&gt;🧠 &lt;a href="https://notes.nicolevanderhoeven.com/OpenClaw"&gt;My notes on OpenClaw&lt;/a&gt; — the agent runtime Iris runs on&lt;/li&gt;
&lt;li&gt;🎤 &lt;a href="https://notes.nicolevanderhoeven.com/Voicenotes"&gt;My notes on Voicenotes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;💛 &lt;a href="https://patreon.com/nicolevdh"&gt;My Patreon&lt;/a&gt;, where I share the QuickAdd linking scripts and macros&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Grafana Campfire 🔥 — GrafanaCON 2026 recap</title><link>https://nicolevanderhoeven.com/blog/20260528-grafana-campfire-grafanacon-2026-recap/</link><pubDate>Thu, 28 May 2026 17:45:00 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20260528-grafana-campfire-grafanacon-2026-recap/</guid><description>&lt;p&gt;I co-hosted this month&amp;rsquo;s &lt;a href="https://www.youtube.com/watch?v=6qYCSBT3yU4"&gt;Grafana Campfire&lt;/a&gt; with &lt;a href="https://www.linkedin.com/in/stephaniehingtgen/"&gt;Stephanie Hingtgen&lt;/a&gt;, where we recapped everything that came out of GrafanaCON 2026. Stephanie owned the Grafana 13 walkthrough — Git Sync GA, Dynamic Dashboards GA, Dashboards API v2 GA, Grafana Advisor GA, SCIM GA — what she described as &lt;em&gt;the year Grafana stopped being beta in production&lt;/em&gt;. I covered the AI section (Grafana Assistant now in OSS and Enterprise, the three scaling challenges from &amp;ldquo;Scaling Grafana Assistant&amp;rdquo;, Investigations, Skills going GA), the three-teams-one-architecture push across Loki Thor, Mimir 3.0, and Pyroscope 2.0, the OTel + Alloy roadmap, alerting, k6 v2.0, and the Marketplace and Logline.&lt;/p&gt;
&lt;p&gt;We also took questions from the Champions community on the pace of UI change, Mimir Alertmanager, and the agent-scale question — &lt;em&gt;what happens when your AI agents are themselves the noisiest users of your observability stack?&lt;/em&gt; — and threw in a flavour break about the &lt;a href="https://github.com/grafana/tamagrotchi"&gt;TamaGROTchi&lt;/a&gt; and the ocean digital twin demo.&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/6qYCSBT3yU4?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="resources"&gt;Resources&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://grafana.com/blog/grafanacon-2026-announcements/?pg=blog&amp;amp;plcmt=featured"&gt;GrafanaCON 2026 announcements blog&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.linkedin.com/in/stephaniehingtgen/"&gt;Stephanie Hingtgen on LinkedIn&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Asimov's Zeroth Law of Robotics: Observability for AI (ExpoQA Madrid 2026)</title><link>https://nicolevanderhoeven.com/blog/20260526-asimovs-zeroth-law-expoqa-madrid/</link><pubDate>Tue, 26 May 2026 10:00:00 +0200</pubDate><guid>https://nicolevanderhoeven.com/blog/20260526-asimovs-zeroth-law-expoqa-madrid/</guid><description>&lt;p&gt;This week I gave the opening keynote at &lt;a href="https://expoqa.eu/events/cd1-t1-kn2/"&gt;ExpoQA Madrid 2026&lt;/a&gt; in Madrid, Spain. I presented a talk called &lt;em&gt;Asimov&amp;rsquo;s Zeroth Law of Robotics: Observability for AI&lt;/em&gt;, which I had previously given at &lt;a href="https://nicolevanderhoeven.com/blog/20250402-asimovs-zeroth-law-of-robotics/"&gt;KubeCon EU 2025&lt;/a&gt; in London, at &lt;a href="https://nicolevanderhoeven.com/blog/20250703-asimovs-zeroth-law-dutch-cloud-native-day/"&gt;Dutch Cloud Native Day 2025&lt;/a&gt; in Utrecht, and at &lt;a href="https://nicolevanderhoeven.com/blog/20251106-asimovs-zeroth-law-newcrafts/"&gt;Newcrafts&lt;/a&gt; in Paris. Here&amp;rsquo;s the abstract:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;A robot may not harm humans. A robot must obey humans. A robot must protect its own existence. These are Isaac Asimov&amp;rsquo;s three Laws of Robotics, created to govern the ethical programming of artificial intelligences. From the Butlerian Jihad to Skynet to cylons, we&amp;rsquo;ve been immortalizing our collective nightmares about artificial intelligence for years. But there&amp;rsquo;s an unmentioned law that comes as a prerequisite to all of that: a robot must be observable.&lt;/p&gt;
&lt;p&gt;In this talk, I discuss the different types of AI, the factors that make observing AI different from observing applications, and the telemetry signals specific to AI that we might want to listen to. How do we deal with large data sets? How do we observe for model drift? How do we take into account the costs of LLMs? How can we use distributed tracing to follow event sequences? Part cautionary tale and part technical demo, this talk shows how to instrument and monitor AI apps using OpenTelemetry, Prometheus, OpenLit, and more.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This was a keynote slot at a testing-focused audience, which gave me the chance to lean more into the &lt;em&gt;evals vs. observability&lt;/em&gt; framing — what evals can and can&amp;rsquo;t tell you about an AI system in production, and how distributed tracing fills the gap that benchmarks leave behind. The demo app (a Flask-based &amp;ldquo;play.py&amp;rdquo; instrumented with OpenTelemetry, flowing into Tempo for traces, Prometheus for metrics, and Loki for logs) is still on &lt;a href="https://nicole.to/asimov"&gt;GitHub&lt;/a&gt;, and I&amp;rsquo;ve been refining it with each iteration.&lt;/p&gt;
&lt;p&gt;Here&amp;rsquo;s the recording of the talk:&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/06Uus-llIBg?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="resources"&gt;Resources&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://nicole.to/asimov"&gt;Demo app on GitHub&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Zero to Dashboard with Grafana Assistant and the Infinity datasource plugin</title><link>https://nicolevanderhoeven.com/blog/20260522-zero-to-dashboard-infinity-assistant/</link><pubDate>Fri, 22 May 2026 17:00:00 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20260522-zero-to-dashboard-infinity-assistant/</guid><description>&lt;p&gt;What if you didn&amp;rsquo;t have to write a single query to get a useful dashboard?&lt;/p&gt;
&lt;p&gt;In this short video, I go from nothing to a working dashboard in a few minutes — no queries — using &lt;a href="https://grafana.com/products/cloud/ai-tools/"&gt;Grafana Assistant&lt;/a&gt; and the &lt;a href="https://grafana.com/docs/plugins/yesoreyeram-infinity-datasource/"&gt;Infinity datasource plugin&lt;/a&gt;. The data I&amp;rsquo;m visualising is the &lt;a href="https://rawg.io/apidocs"&gt;RAWG video game database API&lt;/a&gt;, so I end up with a dashboard that helps me decide what to play next.&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/X3TZk_qywlo?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="why-infinity-is-fun-here"&gt;Why Infinity is fun here&lt;/h2&gt;
&lt;p&gt;Most Grafana data sources are scoped to a specific kind of backend — Prometheus, Loki, a SQL database. &lt;strong&gt;Infinity&lt;/strong&gt; is different: it lets you treat &lt;em&gt;any&lt;/em&gt; REST/JSON/CSV/HTML endpoint as a data source. That means anything with an API can become a dashboard, which is exactly the right shape for goofing around with a games API on a Friday afternoon.&lt;/p&gt;
&lt;p&gt;Pair Infinity with Assistant and you don&amp;rsquo;t even have to know what queries to write — Assistant configures the data source, asks the API the right questions, and builds the panels for you.&lt;/p&gt;
&lt;h2 id="timestamps"&gt;Timestamps&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;00:00 — Intro&lt;/li&gt;
&lt;li&gt;00:35 — The RAWG video game database&lt;/li&gt;
&lt;li&gt;01:01 — Setting up the Infinity datasource&lt;/li&gt;
&lt;li&gt;05:10 — Customising the dashboard with Assistant&lt;/li&gt;
&lt;li&gt;09:31 — Closing thoughts&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://grafana.com/blog/use-ai-to-turn-any-api-into-a-grafana-dashboard/"&gt;Step-by-step blog post: using Assistant with the Infinity datasource&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://grafana.com/docs/grafana-cloud/alerting-and-irm/machine-learning/assistant/"&gt;Grafana Assistant documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://grafana.com/docs/plugins/yesoreyeram-infinity-datasource/"&gt;Infinity datasource plugin&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://rawg.io/apidocs"&gt;RAWG video game database API&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://grafana.com/g/cloud"&gt;Get started with Grafana Cloud (free tier)&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; — everything I&amp;rsquo;m learning as I work on it&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Do Androids Dream of Second Brains?</title><link>https://nicolevanderhoeven.com/blog/20260518-do-androids-dream-of-second-brains-video/</link><pubDate>Mon, 18 May 2026 07:00:00 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20260518-do-androids-dream-of-second-brains-video/</guid><description>&lt;p&gt;We often describe our personal knowledge management systems as &amp;ldquo;second brains&amp;rdquo; — but can we really say they think for themselves? In this video, I make the case for instrumenting your vault with an observability stack and layering AI on top, not because it&amp;rsquo;ll turn your notes into a brain, but because it might get us closer than anything else has.&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/BeuaPO0Ezuk?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;p&gt;This is the video version of the talk I gave at &lt;a href="https://nicolevanderhoeven.com/blog/20260321-do-androids-dream-of-second-brains/"&gt;PKM Summit 2026&lt;/a&gt; in Utrecht earlier this year, with the live demos cleaner and the dashboards working without the conference wifi gods getting in the way.&lt;/p&gt;
&lt;h2 id="what-i-cover"&gt;What I cover&lt;/h2&gt;
&lt;h3 id="-why-second-brain-is-the-wrong-framing"&gt;🐑 Why &amp;ldquo;second brain&amp;rdquo; is the wrong framing&lt;/h3&gt;
&lt;p&gt;I take a small detour through Philip K. Dick&amp;rsquo;s &lt;em&gt;Do Androids Dream of Electric Sheep?&lt;/em&gt; — the inspiration for &lt;em&gt;Blade Runner&lt;/em&gt; — and the Voigt-Kampff test, which measures empathy through observed responses to staged scenarios. It&amp;rsquo;s a useful lens for asking what we actually mean when we say a knowledge system &amp;ldquo;thinks&amp;rdquo;: we&amp;rsquo;re really asking whether it can respond to us in a way that surprises us. Most second-brain setups can&amp;rsquo;t, yet.&lt;/p&gt;
&lt;h3 id="-observability-for-pkm"&gt;📊 Observability for PKM&lt;/h3&gt;
&lt;p&gt;Observability is a concept I&amp;rsquo;ve borrowed wholesale from how we monitor software systems — the idea that you can understand a complex system by what it emits, not by reading its internals. Three steps: instrumentation, analysis, improvement. I walk through what each one looks like for a personal vault:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Instrumentation&lt;/strong&gt;: a small script that emits metrics about my Obsidian vault — note counts, link density, growth over time, what folders are loud and which are quiet&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Analysis&lt;/strong&gt;: a Grafana dashboard sitting on top of Loki + Prometheus, surfacing things I genuinely didn&amp;rsquo;t know about my own vault&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Improvement&lt;/strong&gt;: the part where seeing the data actually changes how you work&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;There&amp;rsquo;s a live dashboard tour, and a section where I ask &lt;strong&gt;Grafana Assistant&lt;/strong&gt; to edit the dashboard for me in natural language — including writing the PromQL queries I never want to write by hand.&lt;/p&gt;
&lt;h3 id="-meet-iris"&gt;👁️ Meet Iris&lt;/h3&gt;
&lt;p&gt;About halfway through the video I introduce &lt;strong&gt;Iris&lt;/strong&gt; — the AI agent I built using &lt;a href="https://openclaw.ai"&gt;OpenClaw&lt;/a&gt; that lives in my vault, reads my notes, and works alongside me. I walk through:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;What &amp;ldquo;agentic AI&amp;rdquo; actually means in practice (vs. just chatting with an LLM)&lt;/li&gt;
&lt;li&gt;The OpenClaw setup — Docker sandbox, Syncthing, the whole pipeline&lt;/li&gt;
&lt;li&gt;Iris rewriting my observability map of content&lt;/li&gt;
&lt;li&gt;Iris doing talk-topic analysis on my vault&lt;/li&gt;
&lt;li&gt;Iris running benchmark research for a blog post&lt;/li&gt;
&lt;li&gt;Iris OCRing my reMarkable handwriting&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="-dreaming"&gt;🌙 Dreaming&lt;/h3&gt;
&lt;p&gt;The last section is the one I had the most fun with. I argue that the thing most second-brain setups are missing isn&amp;rsquo;t &lt;em&gt;more notes&lt;/em&gt; or &lt;em&gt;better search&lt;/em&gt; — it&amp;rsquo;s &lt;strong&gt;synthesis&lt;/strong&gt;. The capacity to take everything you&amp;rsquo;ve captured and surface patterns, contradictions, and ideas you hadn&amp;rsquo;t formed yet.&lt;/p&gt;
&lt;p&gt;I introduce OpenClaw&amp;rsquo;s &lt;em&gt;dreaming&lt;/em&gt; feature: a memory consolidation process inspired by how sleep stages work in the brain. Light sleep, REM, and deep sleep each do different work — surfacing recent material, finding unexpected connections, and consolidating long-term memory. I show how each phase actually behaves in my own system.&lt;/p&gt;
&lt;p&gt;And there&amp;rsquo;s a Zhuangzi reference. (You&amp;rsquo;ll see.)&lt;/p&gt;
&lt;h2 id="resources"&gt;Resources&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;🎤 &lt;a href="https://nicolevanderhoeven.com/blog/20260321-do-androids-dream-of-second-brains/"&gt;PKM Summit 2026 talk recap (with photos)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;🎞 &lt;a href="https://nicole.to/androids"&gt;Slides&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;👁️ &lt;a href="https://openclaw.ai"&gt;OpenClaw&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;📓 &lt;a href="https://obsidian.md"&gt;Obsidian&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;🔄 &lt;a href="https://syncthing.net"&gt;Syncthing&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;📊 &lt;a href="https://grafana.com"&gt;Grafana&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/the-architecture-of-forgetting"&gt;&lt;em&gt;The Architecture of Forgetting&lt;/em&gt;&lt;/a&gt; — the essay version of why memory consolidation matters&lt;/li&gt;
&lt;li&gt;&lt;a href="https://contexthorizon.substack.com/p/unlearnings-from-building-grafana"&gt;&lt;em&gt;Unlearnings from building Grafana Assistant&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you want to follow more of how Iris works and what I&amp;rsquo;m learning about AI + PKM, &lt;a href="https://contexthorizon.substack.com"&gt;Context Horizon&lt;/a&gt; is where I write about it.&lt;/p&gt;</description></item><item><title>The Architecture of Forgetting</title><link>https://nicolevanderhoeven.com/blog/20260507-architecture-of-forgetting/</link><pubDate>Thu, 07 May 2026 16:00:00 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20260507-architecture-of-forgetting/</guid><description>&lt;p&gt;Originally posted &lt;a href="https://contexthorizon.substack.com/p/the-architecture-of-forgetting"&gt;here&lt;/a&gt; on Context Horizon.&lt;/p&gt;
&lt;p&gt;In early April, &lt;a href="https://github.com/openclaw/openclaw/releases/tag/v2026.4.5"&gt;a new version of everyone&amp;rsquo;s favourite lobster, OpenClaw, was shipped&lt;/a&gt; with an interesting new feature: &lt;a href="https://docs.openclaw.ai/concepts/dreaming"&gt;dreaming&lt;/a&gt;. It&amp;rsquo;s a memory consolidation feature. But to understand why it matters, we need to back up.&lt;/p&gt;
&lt;p&gt;Early AI chatbots, like the initial GPT wrappers, had zero memory. Every conversation started fresh. You asked a question, you got an answer, and you moved on: a glorified search engine.&lt;/p&gt;
&lt;p&gt;Somewhere along the way we began to expect more and more of our chatbots. Models acquired context windows that became their de facto short-term memory. As the context window filled up, they remembered what had been said earlier in the conversation, making them better conversational partners. Still, it was ephemeral: close the tab, start fresh. And it had a hard ceiling: hit the limit, and the oldest things fall off. This felt like forgetting because &lt;em&gt;it was&lt;/em&gt;. But it was also, accidentally, a form of curation. Finite space forced priority.&lt;/p&gt;
&lt;p&gt;Then came the push for real persistence. RAG pipelines, vector databases, memory files, agent frameworks that write notes to themselves. Now our agents can remember that we prefer the Oxford comma, that we just started a new project at work, that our D&amp;amp;D character is named Zuhri. This felt like the solution. More memory = better agent.&lt;/p&gt;
&lt;p&gt;That mostly works— until it doesn&amp;rsquo;t.&lt;/p&gt;
&lt;p&gt;As it turns out, the problem with AI memory isn&amp;rsquo;t that agents forget too much. It&amp;rsquo;s that &lt;strong&gt;they forget too little&lt;/strong&gt;.&lt;/p&gt;
&lt;h2 id="why-remembering-is-hard"&gt;Why remembering is hard&lt;/h2&gt;
&lt;p&gt;It turns out that having a persistent memory, even for an agent like OpenClaw that has that as one of its defining features, doesn&amp;rsquo;t solve all the memory problems.&lt;/p&gt;
&lt;p&gt;I happen to have an OpenClaw agent that named itself Iris.&lt;/p&gt;
&lt;p&gt;Iris does a lot of things for me, including parsing my meeting notes to identify next actions, curating my tasks and projects, and generating a daily briefing. She also creates a summary of the day&amp;rsquo;s work based on my meetings, conversations, and notes. One day she was giving me the daily summary, and here&amp;rsquo;s that conversation:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Iris: &amp;hellip;Tonsil is finally healed after weeks of pain&amp;hellip;
Me: Wait what? Where did you get the tonsil stuff?
Iris: From your memory file — it&amp;rsquo;s in the Apr 10 daily note context: &amp;ldquo;Tonsil finally healed — Nicole no longer in pain 🎉&amp;rdquo;. I&amp;rsquo;ve had that sitting in memory since the Apr 10 summary. Is that wrong? Was it something else that healed, or is the tonsil detail off?
Me: I have no idea where you got that. I have never had issues with my tonsil.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Where did that come from? I&amp;rsquo;m still not sure, but I occasionally have meetings in cafés, and it&amp;rsquo;s possible that a meeting recording overheard the conversation of someone else in the café. That got faithfully transcribed, copied over into my notes, and written into Iris&amp;rsquo;s memory. Iris treated it as fact for days.&lt;/p&gt;
&lt;p&gt;The problem isn&amp;rsquo;t that Iris forgot. It&amp;rsquo;s that she remembered the wrong thing&amp;hellip; and didn&amp;rsquo;t know how to forget it.&lt;/p&gt;
&lt;p&gt;Imagine this at scale: not one wrong fact, but dozens, quietly shaping every summary, every recommendation, every task Iris surfaces for me. The signal-to-noise ratio degrades until it doesn&amp;rsquo;t matter if Iris remembers mostly accurate memories— I won&amp;rsquo;t trust it.&lt;/p&gt;
&lt;p&gt;So how do you build a memory system that knows what to keep? Researchers have been working on this longer than you might think.&lt;/p&gt;
&lt;h2 id="meet-the-residents-of-smallville"&gt;Meet the residents of Smallville&lt;/h2&gt;
&lt;p&gt;Stanford researchers Park et al. &lt;a href="https://arxiv.org/abs/2304.03442"&gt;released a charming study in 2023&lt;/a&gt; called &lt;em&gt;Generative Agents: Interactive Simulacra of Human Behavior&lt;/em&gt; in which they talk about how they created a simulated environment called Smallville, populated it with 25 generative agents, and then watched.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://nicolevanderhoeven.com/assets/20260507-smallville.png" alt="Smallville, a simulated environment populated with 25 generative agents" loading="lazy" decoding="async"&gt;
&lt;em&gt;Source: Park et al. (2023)&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;The study was an attempt to simulate emergent social behavior, but the key insight I took from it isn&amp;rsquo;t the sim itself— it&amp;rsquo;s what they had to do to the inhabitants of Smallville to enable the rich social interactions they wanted to observe.&lt;/p&gt;
&lt;p&gt;The researchers had to give the inhabitants a way to remember.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://nicolevanderhoeven.com/assets/20260507-smallville-memory-architecture.png" alt="The memory architecture of Smallville’s generative agents — observation, retrieval, action, and reflection" loading="lazy" decoding="async"&gt;
&lt;/p&gt;
&lt;p&gt;Above is a diagram of the memory architecture of every generative agent.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Observation:&lt;/em&gt; The agent perceives new information. The new information is saved into the &lt;em&gt;memory stream&lt;/em&gt;, a database that serves as the record of everything an agent has experienced.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Retrieval:&lt;/em&gt; When the agent is looking for information, a retrieval function takes that information from the memory stream and passes it onto the agent.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Action:&lt;/em&gt; The agent, armed with retrieved information, can decide to act.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Reflection:&lt;/em&gt; Patterns are synthesized from the observations and written back to the memory stream.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To determine which memories to retrieve at any given point in time, the researchers scored memories according to three weighted factors:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Recency:&lt;/em&gt; when a memory was observed&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Importance:&lt;/em&gt; how significant the memory was&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Relevance:&lt;/em&gt; how closely related a memory is to the input memory (the agent&amp;rsquo;s current context)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The top-ranking memories that fit within the agent&amp;rsquo;s context window were selected to be retrieved and used with the prompt.&lt;/p&gt;
&lt;p&gt;The researchers also introduced a second type of memory: reflection. Reflections were generated when a threshold of important scores was reached per day, which typically happened 2-3 times a day.&lt;/p&gt;
&lt;p&gt;Crucially, reflection is a &lt;em&gt;compression&lt;/em&gt; step — the agent doesn&amp;rsquo;t just accumulate observations, it periodically steps back and asks &amp;ldquo;what do these observations actually mean?&amp;rdquo; That reflection pass is where low-signal memories get subordinated to higher-order patterns. That&amp;rsquo;s the first instance of intelligent forgetting.&lt;/p&gt;
&lt;p&gt;The Smallville paper was published in 2023. Three years later, the same insight shipped in a lobster.&lt;/p&gt;
&lt;h2 id="dreaming-of-electric-lobsters"&gt;Dreaming of electric lobsters&lt;/h2&gt;
&lt;p&gt;Every system that has solved the memory problem has solved it the same way: not by storing more, but by knowing what to throw away.&lt;/p&gt;
&lt;p&gt;Your brain does it while you sleep by consolidating important experiences into long-term memory, letting the rest dissolve. Some programming languages do it with garbage collection, periodically scanning for unused objects and reclaiming that space. Databases do it with compaction: Loki, Cassandra, and other LSM-tree-inspired systems periodically merge and discard obsolete data so reads stay fast.&lt;/p&gt;
&lt;p&gt;In all cases, the architecture of good memory is really the architecture of intelligent forgetting. OpenClaw&amp;rsquo;s dreaming feature is the same insight applied to agents.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://nicolevanderhoeven.com/assets/20260507-architecture-of-forgetting-dreaming.svg" alt="Diagram of OpenClaw’s internal memory architecture. The default components (“Awake”) are in black, and the new components are in blue (“Dreaming”)." loading="lazy" decoding="async"&gt;
&lt;em&gt;Diagram of OpenClaw&amp;rsquo;s internal memory architecture. The default components (&amp;ldquo;Awake&amp;rdquo;) are in black, and the new components are in blue (&amp;ldquo;Dreaming&amp;rdquo;).&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Note that without dreaming, there is no automatic promotion from the active context window to daily notes and then to long-term memory. When a new bit of information is mentioned, the agent has to decide whether it should be added to the daily note and/or the long-term memory file manually. Dreaming, by contrast, is an automated process.&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s called &amp;ldquo;Dreaming&amp;rdquo; because the feature works similarly to the biological process, as if in three sleep phases:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Light phase:&lt;/em&gt; Creates a session corpus from session files and then succeeding sweeps tally how many times a chunk has been recalled in a session (a counter called &lt;code&gt;lightHit&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;&lt;em&gt;REM phase:&lt;/em&gt; Spots patterns and themes from chunks and adds a reinforcement signal (&lt;code&gt;remHits&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Deep phase:&lt;/em&gt; Ranks the candidates by several factors and promotes those that exceed a threshold score to long-term memory in &lt;code&gt;MEMORY.md&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Just like in the Smallville simulation, OpenClaw ranks information by several categories. Here&amp;rsquo;s the table of signals and weights from the &lt;a href="https://docs.openclaw.ai/concepts/dreaming#deep-ranking-signals"&gt;OpenClaw docs&lt;/a&gt; at the time of writing:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Signal&lt;/th&gt;
&lt;th&gt;Weight&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Frequency&lt;/td&gt;
&lt;td&gt;0.24&lt;/td&gt;
&lt;td&gt;How many short-term signals the entry accumulated&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Relevance&lt;/td&gt;
&lt;td&gt;0.30&lt;/td&gt;
&lt;td&gt;Average retrieval quality for the entry&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Query diversity&lt;/td&gt;
&lt;td&gt;0.15&lt;/td&gt;
&lt;td&gt;Distinct query/day contexts that surfaced it&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Recency&lt;/td&gt;
&lt;td&gt;0.15&lt;/td&gt;
&lt;td&gt;Time-decayed freshness score&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Consolidation&lt;/td&gt;
&lt;td&gt;0.10&lt;/td&gt;
&lt;td&gt;Multi-day recurrence strength&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Conceptual richness&lt;/td&gt;
&lt;td&gt;0.06&lt;/td&gt;
&lt;td&gt;Concept-tag density from snippet/path&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Only candidates that have high scores according to these signals graduate to be part of &lt;code&gt;MEMORY.md&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id="how-dreaming-helps-with-forgetting"&gt;How dreaming helps with forgetting&lt;/h3&gt;
&lt;p&gt;The new dreaming architecture doesn&amp;rsquo;t ever &lt;em&gt;delete&lt;/em&gt; things, technically. The forgetting is more passive. However, it&amp;rsquo;s still an improvement in a few ways:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Low-signal chunks don&amp;rsquo;t get promoted:&lt;/em&gt; Anything that doesn&amp;rsquo;t cross the deep phase thresholds simply never reaches MEMORY.md. It exists, but it&amp;rsquo;s functionally invisible to future sessions.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Score competition:&lt;/em&gt; The staging index has finite attention, so chunks compete against each other for recall signal. A high-frequency chunk that keeps getting surfaced crowds out low-frequency ones. Relative obscurity is functional forgetting.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Recency decay on scoring:&lt;/em&gt; The deep phase ranking includes a recency signal. So something that was frequently recalled two weeks ago but hasn&amp;rsquo;t come up since will score lower than something with fewer total hits but recent activity. Time degrades relevance passively.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;What&amp;rsquo;s notable: all three are selection mechanisms, not deletion mechanisms. The corpus files still exist. The staging index entries still exist. Nothing is removed&amp;hellip; it&amp;rsquo;s just progressively less likely to be chosen. This is forgetting as diminishing probability of retrieval, not erasure.&lt;/p&gt;
&lt;p&gt;That&amp;rsquo;s the garbage collection analogy again: the objects are still in memory, they&amp;rsquo;re just unreachable.&lt;/p&gt;
&lt;h3 id="transparency"&gt;Transparency&lt;/h3&gt;
&lt;p&gt;Dreaming also adds a layer of transparency. Aside from the session corpus and staging files, it also produces some output about its decisions. All three dreaming stages create files per day that live in &lt;code&gt;.openclaw/workspace/memory/dreaming/{phase}/YYYY-MM-DD.md&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Here&amp;rsquo;s an example of an entry in the &lt;code&gt;light&lt;/code&gt; directory:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;# Light Sleep
- Candidate: &amp;#34;Don&amp;#39;t Call It Eval&amp;#34; blog post (Context Horizon): `Dont Call It Eval - Blog Post Outline.md` — full outline with 7 open questions; `Dont Call It Eval - Draft.md` — 2,550-word draft, 6 sections; `Dont Call It Eval - Opening Research.md` — Tier 1/2/3 shortlist of popular AI eval po
- confidence: 0.62
- evidence: memory/2026-04-19.md:13-15
- recalls: 0
- status: staged
- Candidate: &amp;#34;Don&amp;#39;t Call It Eval&amp;#34; blog post (Context Horizon): **Thesis (locked):** &amp;#34;AI eval community has rediscovered software testing and given it a new name. The testing world has been busy since.&amp;#34;
- confidence: 0.62
- evidence: memory/2026-04-19.md:17-17
- recalls: 0
- status: staged
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;This entry identified a blog draft I was working on.&lt;/p&gt;
&lt;p&gt;REM sleep goes through these candidates and highlights when it spots themes:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;# REM Sleep
### Reflections
- Theme: `assistant` kept surfacing across 532 memories.
- confidence: 1.00
- evidence: memory/2026-04-12.md:27-29, memory/.dreams/session-corpus/2026-04-17.txt:26-26, memory/.dreams/session-corpus/2026-04-17.txt:28-28
- note: reflection
### Possible Lasting Truths
- &amp;#34;Don&amp;#39;t Call It Eval&amp;#34; blog post (Context Horizon): **Datadog Bits AI eval platform** (Apr 7, 2026) — &amp;#34;Bring the noise&amp;#34; = noise injection = production-like envs from 90s QA. SECTION HEADERS are gold (&amp;#34;When one improvement caused subtle regressions&amp;#34;, &amp;#34;Why tool-level testing and live [confidence=0.58 evidence=memory/2026-04-19.md:30-33]
- &amp;#34;Don&amp;#39;t Call It Eval&amp;#34; blog post (Context Horizon): **Thesis (locked):** &amp;#34;AI eval community has rediscovered software testing and given it a new name. The testing world has been busy since.&amp;#34; [confidence=0.58 evidence=memory/2026-04-19.md:17-17]
- &amp;#34;Don&amp;#39;t Call It Eval&amp;#34; blog post (Context Horizon): **Title:** &amp;#34;Don&amp;#39;t Call It Eval&amp;#34; (Nicole&amp;#39;s original; I picked it over &amp;#34;Congratulations, you&amp;#39;ve invented testing&amp;#34;) [confidence=0.58 evidence=memory/2026-04-19.md:27-27]
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;In this case, REM sleep correctly identified that I&amp;rsquo;m currently working on the &lt;a href="https://grafana.com/docs/grafana-cloud/machine-learning/assistant/"&gt;Assistant&lt;/a&gt; feature at work (which had already been promoted to long-term memory) and the blog post that the light sleep phase had identified.&lt;/p&gt;
&lt;p&gt;Here&amp;rsquo;s the same day&amp;rsquo;s deep sleep file:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;# Deep Sleep
- Ranked 10 candidate(s) for durable promotion.
- Promoted 3 candidate(s) into MEMORY.md.
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;And here&amp;rsquo;s the addition to &lt;code&gt;MEMORY.md&lt;/code&gt; for the same day:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;## Promoted From Short-Term Memory (2026-04-26)
&amp;lt;!-- openclaw-memory-promotion:memory:memory/2026-04-19.md:17:17 --&amp;gt;
- **Thesis (locked):** &amp;#34;AI eval community has rediscovered software testing and given it a new name. The testing world has been busy since.&amp;#34; [score=0.926 recalls=0 avg=0.620 source=memory/2026-04-19.md:17-17]
&amp;lt;!-- openclaw-memory-promotion:memory:memory/2026-04-19.md:27:27 --&amp;gt;
- **Title:** &amp;#34;Don&amp;#39;t Call It Eval&amp;#34; (Nicole&amp;#39;s original; I picked it over &amp;#34;Congratulations, you&amp;#39;ve invented testing&amp;#34;) [score=0.926 recalls=0 avg=0.620 source=memory/2026-04-19.md:27-27]
&amp;lt;!-- openclaw-memory-promotion:memory:memory/2026-04-19.md:12:12 --&amp;gt;
- Three files in openclaw-output: [score=0.894 recalls=0 avg=0.620 source=memory/2026-04-19.md:12-12]
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;There&amp;rsquo;s also an entry in &lt;code&gt;DREAMS.md&lt;/code&gt; for the entire sequence, which is more dreamlike and human-readable. The per-day Deep Sleep file is the structured internal audit trail; &lt;code&gt;DREAMS.md&lt;/code&gt; is the rolling, more narrative log for humans.&lt;/p&gt;
&lt;p&gt;This level of transparency and reflection is a welcome change when you compare it to what I had before, which was nothing. Iris had to manually decide on the spot what had to be written where, and those decisions were not logged anywhere.&lt;/p&gt;
&lt;h2 id="the-tonsil-dilemma"&gt;The tonsil dilemma&lt;/h2&gt;
&lt;p&gt;So dreaming could have prevented the tonsil hallucination, right? Well&amp;hellip; no.&lt;/p&gt;
&lt;p&gt;In this case, the idea of my supposed tonsil pain had come from an external source: my meeting recordings. Iris had faithfully manually added that to the daily note for the day, then decided to call on it a few days later, unprompted, in conversation with me.&lt;/p&gt;
&lt;p&gt;With dreaming, Iris still could have made those decisions. But in fact, even if she hadn&amp;rsquo;t, dreaming could have made it &lt;em&gt;worse&lt;/em&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Light phase sweeps it and scores it well since it&amp;rsquo;s recent and distinctive.&lt;/li&gt;
&lt;li&gt;Tonsil pain could be included in queries about health, such as the daily health tracker that is part of Iris&amp;rsquo;s tasks. REM phase sees a pattern and increments &lt;code&gt;remHits&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Deep phase ranks it highly and it crosses the promotion threshold.&lt;/li&gt;
&lt;li&gt;It gets written to &lt;code&gt;MEMORY.md&lt;/code&gt; and gets loaded &lt;em&gt;every session&lt;/em&gt;. And long-term memory is sticky. Only manual intervention (by me or by Iris) removes things from that file.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Even dreaming doesn&amp;rsquo;t solve everything. Dreaming adds a mechanism for forgetting. It doesn&amp;rsquo;t prevent OpenClaw from remembering the wrong things in the first place.&lt;/p&gt;
&lt;h3 id="the-residual-layer"&gt;The residual layer&lt;/h3&gt;
&lt;p&gt;Every memory architecture we&amp;rsquo;ve looked at — biological sleep consolidation, garbage collection, LSM compaction, Smallville&amp;rsquo;s reflection pass, OpenClaw&amp;rsquo;s dreaming — has the same shape: automated compression plus a residual human layer. Your brain has you. GC has the programmer. Iris&amp;rsquo;s dreaming has me. The human in the loop isn&amp;rsquo;t a bug in the design; it&amp;rsquo;s load-bearing.&lt;/p&gt;
&lt;h2 id="whats-worth-keeping"&gt;What&amp;rsquo;s worth keeping&lt;/h2&gt;
&lt;p&gt;Dreaming is a genuine step forward for OpenClaw&amp;rsquo;s memory architecture. The mechanism of passive forgetting isn&amp;rsquo;t perfect, but the automated promotion systems do add a necessary layer of periodic reflection.&lt;/p&gt;
&lt;p&gt;But there are limitations. Dreaming can&amp;rsquo;t yet distinguish between a memory worth keeping and a hallucinated tonsil. It can only measure how often something gets recalled. The next frontier is &lt;em&gt;active forgetting&lt;/em&gt;: automated demotion from &lt;code&gt;MEMORY.md&lt;/code&gt;, weighted by signals like source provenance and trust. The provenance side of that work landed in &lt;a href="https://github.com/openclaw/openclaw/releases/tag/v2026.4.29-beta.2"&gt;v2026.4.29-beta.2&lt;/a&gt; — memory now exposes evidence-kind drilldown and privacy/provenance reports, so you can at least &lt;em&gt;see&lt;/em&gt; where a memory came from. But the demotion half — automatically down-ranking memories based on a low-trust source like an audio transcript — still hasn&amp;rsquo;t been built.&lt;/p&gt;
&lt;p&gt;What remains, for now, is the human layer. The transparency of the dreaming process becomes a checkpoint for the human in the loop by surfacing promotion decisions. I still read the summaries. I still catch the errors. I still decide what goes into long-term memory and what gets quietly corrected. That&amp;rsquo;s not a gap in the system — it&amp;rsquo;s probably the right design. The most important memories should require a human to notice them twice.&lt;/p&gt;
&lt;p&gt;Good memory systems are defined by what they &lt;em&gt;don&amp;rsquo;t&lt;/em&gt; keep as much as by what they &lt;em&gt;do&lt;/em&gt; keep.&lt;/p&gt;</description></item><item><title>Grafana k6 Community Call — Secrets Management &amp; AI Script Authoring</title><link>https://nicolevanderhoeven.com/blog/20260430-k6-community-call-secrets-and-ai-script-authoring/</link><pubDate>Thu, 30 Apr 2026 16:30:00 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20260430-k6-community-call-secrets-and-ai-script-authoring/</guid><description>&lt;p&gt;The first k6 Community Call in over a year, and we packed it. I sat down with four of the people building k6 — &lt;strong&gt;Bukola Ayodele&lt;/strong&gt;, &lt;strong&gt;Facundo Batista&lt;/strong&gt; (Software Engineer), &lt;strong&gt;Vicente Ortega&lt;/strong&gt; (Senior Backend Engineer), and &lt;strong&gt;Charlie Burnett&lt;/strong&gt; (Product Manager) — to walk through two new pieces of work that have shipped recently, plus a look at what&amp;rsquo;s coming in k6 v2.&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/mYpnaE_J2lM?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-covered"&gt;What we covered&lt;/h2&gt;
&lt;h3 id="-secrets-management-in-k6-cloud-facundo"&gt;🔐 Secrets management in k6 Cloud (Facundo)&lt;/h3&gt;
&lt;p&gt;A new way to store API tokens, passwords, and other sensitive values for your tests — centralized in Grafana&amp;rsquo;s secrets manager, encrypted at rest, and never visible in the UI or API once written. Your scripts reference secrets by name, and at runtime the values are injected and &lt;strong&gt;automatically redacted from logs&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Why this matters for load testers:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;No more hardcoded credentials sitting in scripts or in Git&lt;/li&gt;
&lt;li&gt;Easy rotation — change the secret value, every script that uses it picks up the new value, no script edits needed&lt;/li&gt;
&lt;li&gt;Same script works across dev/staging/prod by just swapping which secrets are scoped to which environment&lt;/li&gt;
&lt;li&gt;Works with k6 OSS locally too — your local runs can pull cloud-managed secrets when you want them&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Facundo Batista demoed the full flow: creating a secret in the Grafana Cloud UI (name, description, labels — up to 10 per secret, all write-only), and using it in a script with one line. There&amp;rsquo;s also an API for programmatic management.&lt;/p&gt;
&lt;h3 id="-grafana-assistant-k6-script-authoring-mode-vicente"&gt;🤖 Grafana Assistant k6 script authoring mode (Vicente)&lt;/h3&gt;
&lt;p&gt;This is the AI-powered script generation that&amp;rsquo;s been in the works for a while — fine-tuned specifically for k6 best practices, not a generic &amp;ldquo;ask an LLM to write you a load test&amp;rdquo; workflow. The interesting bit is the &lt;strong&gt;context sources&lt;/strong&gt; Assistant can pull from when generating a script:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;A service name&lt;/strong&gt; — Assistant analyzes the existing telemetry data to discover endpoints and shapes&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A GitHub repository URL&lt;/strong&gt; — pulls the code to understand the API&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;An OpenAPI specification&lt;/strong&gt; — generates tests that exercise every endpoint with realistic request shapes&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Existing observability data&lt;/strong&gt; — metrics, logs, traces from your actual production traffic&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Generated scripts come with proper structure, error handling, checks, and &lt;code&gt;TODO&lt;/code&gt; comments where the model genuinely doesn&amp;rsquo;t know what to write (e.g. for auth tokens, request bodies, or anything that needs your secrets — by design, Assistant won&amp;rsquo;t fabricate those). You can also point it at an existing script and ask it to refactor or extend.&lt;/p&gt;
&lt;h3 id="-k6-v2-charlie"&gt;🚀 k6 v2 (Charlie)&lt;/h3&gt;
&lt;p&gt;Release candidate 1 is out, GA is &lt;em&gt;very&lt;/em&gt; soon. The headline changes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Extensions marketplace&lt;/strong&gt; — community protocols and integrations&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Enhanced Playwright browser support&lt;/strong&gt; with compatible syntax&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;New assertions library&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;MCP / agent connectivity&lt;/strong&gt; for AI-driven workflows&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;DNS, MQTT, and other network protocols&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Migration advice from Charlie Burnett: pin your script versions, test your existing scripts against the RC before GA hits, and don&amp;rsquo;t rush.&lt;/p&gt;
&lt;h3 id="-whats-next-on-the-ai-roadmap-next-12-months"&gt;🔮 What&amp;rsquo;s next on the AI roadmap (next 1–2 months)&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Visual browser-based testing experience&lt;/li&gt;
&lt;li&gt;Enhanced observability workflow automation&lt;/li&gt;
&lt;li&gt;Improved user-journey creation across both personal and enterprise apps&lt;/li&gt;
&lt;li&gt;Integration with autonomous monitoring systems&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://grafana.com/docs/k6/"&gt;k6 documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://grafana.com/docs/grafana-cloud/grafana-assistant/"&gt;Grafana Assistant docs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/grafana/k6/releases"&gt;k6 v2 release candidate&lt;/a&gt; (GA very soon)&lt;/li&gt;
&lt;li&gt;&lt;a href="https://grafana.com/docs/grafana-cloud/k6/secrets/"&gt;Secrets management in k6 Cloud&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="related-context-horizon-pieces"&gt;Related Context Horizon pieces&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://contexthorizon.substack.com/p/unlearnings-from-building-grafana"&gt;&lt;em&gt;Unlearnings from building Grafana Assistant&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://contexthorizon.substack.com/p/high-int-low-wis-what-llm-benchmarks"&gt;&lt;em&gt;High INT, Low WIS — what LLM benchmarks miss&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Thanks to Bukola, Facundo, Vicente, and Charlie for joining, and to everyone who showed up live.&lt;/p&gt;</description></item><item><title>High INT, Low WIS: What LLM Benchmarks Miss</title><link>https://nicolevanderhoeven.com/blog/20260423-high-int-low-wis-llm-benchmarks/</link><pubDate>Thu, 23 Apr 2026 09:00:00 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20260423-high-int-low-wis-llm-benchmarks/</guid><description>&lt;p&gt;Originally posted &lt;a href="https://contexthorizon.substack.com/p/high-int-low-wis-what-llm-benchmarks"&gt;here&lt;/a&gt; on Context Horizon.&lt;/p&gt;
&lt;p&gt;In the tabletop roleplaying game Dungeons &amp;amp; Dragons (D&amp;amp;D), the very first thing you do when you create a character is to choose ability scores. Ability scores are numbers that determine how good you are at the game&amp;rsquo;s main characteristics: Strength (STR), Dexterity (DEX), Constitution (CON), Intelligence (INT), Wisdom (WIS), and Charisma (CHA). 20 is the default maximum that a character can have in any ability, though some in-game events/items can increase that.&lt;/p&gt;
&lt;p&gt;Here&amp;rsquo;s the thing, though: every D&amp;amp;D player knows that a 20 Intelligence doesn&amp;rsquo;t mean your wizard aces every check. Whether you have proficiency in the specific skill still matters. That 20 INT wizard, for all their raw cognitive horsepower, can absolutely still fail to identify a magical rune. The ability score is a starting point, not a verdict.&lt;/p&gt;
&lt;p&gt;This is exactly what&amp;rsquo;s happening to LLM benchmarks. All the general LLM/AI model benchmarks are ability scores. They tell you something real about a model&amp;rsquo;s general capabilities, the same way a 20 INT tells you something real about a wizard. But as frontier models crowd toward the top of every leaderboard, we&amp;rsquo;re running into a problem D&amp;amp;D solved decades ago: the stat block isn&amp;rsquo;t the character. And it was never supposed to be.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://nicolevanderhoeven.com/assets/20260423-safira-l10-stats.png" alt="A screenshot of the stats of my Level 10 bard. Low INT, but look at that CHA!" loading="lazy" decoding="async"&gt;
&lt;/p&gt;
&lt;p&gt;&lt;em&gt;A screenshot of the stats of my Level 10 bard. Low INT, but look at that CHA!&lt;/em&gt;&lt;/p&gt;
&lt;h2 id="the-stat-block-a-tour-of-the-ability-scores-everyones-maxing-out"&gt;The stat block: A tour of the ability scores everyone&amp;rsquo;s maxing out&lt;/h2&gt;
&lt;p&gt;There are so many new models and model versions out there that it&amp;rsquo;s hard to keep up with what we&amp;rsquo;re supposed to be using for which tasks. LLM benchmarks have come to be relied on to give a somewhat objective assessment of each model&amp;rsquo;s capability. Here are a few big ones that exist.&lt;/p&gt;
&lt;h3 id="general-knowledgereasoning"&gt;General knowledge/reasoning&lt;/h3&gt;
&lt;h4 id="mmlu-measuring-massive-multitask-language-understanding-2020"&gt;MMLU (Measuring Massive Multitask Language Understanding, 2020)&lt;/h4&gt;
&lt;p&gt;MMLU is the classic &amp;ldquo;general knowledge&amp;rdquo; INT check. It was &lt;a href="https://arxiv.org/abs/2009.03300"&gt;released in September 2020 by Hendrycks et al.&lt;/a&gt; and contains 15,908 multiple-choice questions across 57 subjects (humanities, social science, STEM, other). However, there were a few issues with it:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://arxiv.org/abs/2406.04127"&gt;a study in 2024&lt;/a&gt; showed that 6.49% of those questions contained errors&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.nytimes.com/2024/04/15/technology/ai-models-measurement.html"&gt;The New York Times reported&lt;/a&gt; (2024) that data contamination was an issue — models could be trained on the MMLU questions (and answers) to inflate their MMLU scores&lt;/li&gt;
&lt;li&gt;many frontier LLMs soon consistently achieved high scores&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In response, a new benchmark called &lt;a href="https://github.com/TIGER-AI-Lab/MMLU-Pro"&gt;MMLU-Pro&lt;/a&gt; was created with 12,000 questions that each have 10 options. The increase in options theoretically required more reasoning capability than the original benchmark, but frontier models are already knocking at 90% on the MMLU-Pro.&lt;/p&gt;
&lt;h4 id="humanitys-last-exam-hle-2025"&gt;Humanity&amp;rsquo;s Last Exam (HLE, 2025)&lt;/h4&gt;
&lt;p&gt;HLE was developed specifically to address the fact that LLMs &amp;ldquo;now achieve over 90% accuracy on popular benchmarks like MMLU&amp;rdquo; (from &lt;a href="https://lastexam.ai"&gt;the HLE site&lt;/a&gt;). The &lt;a href="https://arxiv.org/abs/2501.14249"&gt;paper by Phan et al&lt;/a&gt; explains the lengths they took to make it hard enough to be meaningful:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;they solicited high-quality questions from nearly 1000 subject matter experts, even going as far as paying them for successful submissions (with a total prize pool of US $500,000)&lt;/li&gt;
&lt;li&gt;they included graduate-level classics (one of the questions includes translating Palmyrene script)&lt;/li&gt;
&lt;li&gt;they reviewed potential submissions using current LLMs and only proceeded with submissions if the LLMs are unable to answer correctly&lt;/li&gt;
&lt;li&gt;experts then reviewed the submissions further&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;As a result, HLE scores are low — intentionally so:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;While current LLMs achieve very low accuracy on HLE, recent history shows benchmarks are quickly saturated – with models dramatically progressing from near-zero to near-perfect performance in a short timeframe [13, 45]. Given the rapid pace of AI development, it is plausible that models could exceed 50% accuracy on HLE by the end of 2025. (&lt;a href="https://arxiv.org/abs/2501.14249"&gt;Phan et al., 2025&lt;/a&gt;)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="software-engineering"&gt;Software engineering&lt;/h3&gt;
&lt;h4 id="humaneval-openai-2021"&gt;HumanEval (OpenAI, 2021)&lt;/h4&gt;
&lt;p&gt;In 2021, OpenAI released &lt;a href="https://arxiv.org/abs/2107.03374"&gt;a paper&lt;/a&gt; and &lt;a href="https://github.com/openai/human-eval"&gt;an evaluation harness&lt;/a&gt; for a benchmark consisting of 164 Python programming problems based on publicly available code on GitHub. It was developed to test coding in particular.&lt;/p&gt;
&lt;p&gt;Eventually, though, experts found that the problem sets in HumanEval were insufficient and ambiguous (&lt;a href="https://arxiv.org/abs/2305.01210"&gt;Liu et al., 2023&lt;/a&gt;). HumanEval+ was released to include more tests, but the next benchmark&amp;rsquo;s authors &lt;a href="https://arxiv.org/abs/2403.07974"&gt;suggested that models might be overfitting&lt;/a&gt; to HumanEval+ as well, memorizing the dataset and answers rather than genuinely demonstrating reasoning ability.&lt;/p&gt;
&lt;h4 id="livecodebench-2024"&gt;LiveCodeBench (2024)&lt;/h4&gt;
&lt;p&gt;&lt;a href="https://arxiv.org/abs/2403.07974"&gt;Jain et al.&lt;/a&gt; tried a different approach to HumanEval to avoid data contamination: it was released with a continuously-updated coding benchmark. Problems have release dates and models can only be evaluated using problems released &lt;em&gt;after&lt;/em&gt; their training data cutoff dates.&lt;/p&gt;
&lt;p&gt;LiveCodeBench represents a shift in benchmarks towards a more continuous, dynamic measure. However, the last submission to the benchmark was &lt;a href="https://github.com/LiveCodeBench/submissions"&gt;9 months ago&lt;/a&gt; at the time of this writing, and &lt;a href="https://livecodebench.github.io/"&gt;the leaderboard&lt;/a&gt; has not been updated since then either, suggesting the benchmark is no longer being actively maintained.&lt;/p&gt;
&lt;h4 id="swe-bench-2024"&gt;SWE-bench (2024)&lt;/h4&gt;
&lt;p&gt;This benchmark was created by &lt;a href="https://openreview.net/pdf?id=VTF8yNQM66"&gt;Jimenez et al.&lt;/a&gt; to include 2,294 actual GitHub issues from 12 Python projects. When it launched, it was a much harder benchmark than predecessors, with models scoring 2-4%. Today, models are scoring around 70-80% on the original benchmark. There were enough issues with the original&amp;rsquo;s dataset quality that variants were introduced, including &lt;a href="https://openai.com/index/introducing-swe-bench-verified/"&gt;OpenAI&amp;rsquo;s SWE-bench Verified&lt;/a&gt;. Today, &lt;a href="https://www.swebench.com/"&gt;the SWE-bench website&lt;/a&gt; shows these variants:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;SWE-bench&lt;/li&gt;
&lt;li&gt;SWE-bench Verified&lt;/li&gt;
&lt;li&gt;SWE-bench Multilingual&lt;/li&gt;
&lt;li&gt;SWE-bench Multimodal&lt;/li&gt;
&lt;li&gt;SWE-bench Lite&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="agents-and-tool-use"&gt;Agents and tool use&lt;/h3&gt;
&lt;p&gt;This last category is a preview of where I think the field should go: benchmarks that measure &lt;em&gt;what a model does&lt;/em&gt; rather than just &lt;em&gt;what a model knows&lt;/em&gt;. Here are some of them:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;GAIA (&lt;a href="https://arxiv.org/abs/2311.12983"&gt;Mialon et al., 2023&lt;/a&gt;) — 466 real-world assistant tasks that combine web browsing, file reading, and multi-step reasoning. Easy for humans (92% success), hard for models (15% success for GPT-4), at least at launch.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.tbench.ai/"&gt;Terminal-Bench&lt;/a&gt; — agents working in actual Linux terminals. Tasks include &amp;ldquo;build the Linux kernel from source&amp;rdquo; and &amp;ldquo;configure a git server plus a webserver on port 8080.&amp;rdquo; No mocks; if it doesn&amp;rsquo;t actually build, it fails.&lt;/li&gt;
&lt;li&gt;WebArena (&lt;a href="https://arxiv.org/abs/2307.13854"&gt;Zhou et al., 2023&lt;/a&gt;) — realistic simulated websites (Reddit, GitLab, e-commerce) where agents complete actual user goals like &amp;ldquo;filter the last six months of orders by refund status.&amp;rdquo;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These benchmarks are harder to saturate than general-knowledge ones, because passing means the thing actually has to work in the real world. A model can memorise a question; it can&amp;rsquo;t memorise a Linux kernel that isn&amp;rsquo;t there until it builds it.&lt;/p&gt;
&lt;h2 id="the-wrong-answer-build-a-harder-general-benchmark"&gt;The wrong answer: Build a harder general benchmark&lt;/h2&gt;
&lt;p&gt;By now, you probably see that benchmarks tend to go the same way: A benchmark is created, models get too good at it and perform too well to be useful, and then a variant benchmark is created to address the problem.&lt;/p&gt;
&lt;p&gt;This is the &lt;em&gt;saturation problem&lt;/em&gt; in a nutshell: a benchmark that once provided meaningful information to help distinguish models eventually fails to do so because all the models&amp;rsquo; scores cluster at the top.&lt;/p&gt;
&lt;p&gt;Saturation occurs for two reasons:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Contamination&lt;/em&gt;: Many benchmarks publish their problem sets online, and models train on data scraped from the web. The benchmark now measures memorization, not capability.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Overfitting&lt;/em&gt;: Model providers are incentivized to optimize specifically for gaming performance on benchmarks. Scores go up without corresponding capability improvements.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;When you have a party of wizards with 20 INT, &amp;ldquo;What&amp;rsquo;s your INT score?&amp;rdquo; stops being an interesting question because any wizard&amp;rsquo;s Fireball will hit the same. Building harder benchmarks is like an arms race for ability scores, when what you actually want to know is whether your wizard can kill a dragon.&lt;/p&gt;
&lt;p&gt;Harder benchmarks don&amp;rsquo;t tell us what we want to know: &lt;em&gt;can this model do my specific job?&lt;/em&gt;&lt;/p&gt;
&lt;h2 id="the-right-answer-skill-checks-with-real-dcs"&gt;The right answer: skill checks with real DCs&lt;/h2&gt;
&lt;p&gt;The fix isn&amp;rsquo;t a harder ability check. It&amp;rsquo;s a different kind of check altogether. In D&amp;amp;D, straight ability checks are rare compared to skill checks. There are 18 official skills that break down the six ability scores into more granular activities. For example, your wizard is much more likely to roll one of these instead of a straight INT check:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Arcana&lt;/li&gt;
&lt;li&gt;History&lt;/li&gt;
&lt;li&gt;Investigation&lt;/li&gt;
&lt;li&gt;Nature&lt;/li&gt;
&lt;li&gt;Religion&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;All of these are still based on INT, but test narrow &lt;em&gt;types of intelligence&lt;/em&gt; rather than general intelligence.&lt;/p&gt;
&lt;p&gt;Specific, domain-grounded benchmarks are what the field actually needs. The evaluations that actually help practitioners share a structure: they test a specific skill in a specific context, and they&amp;rsquo;re judged by the people who have to live with the results.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://arxiv.org/abs/2009.13081"&gt;MedQA&lt;/a&gt; tests whether a model can answer the kind of clinical question a physician might face. &lt;a href="https://arxiv.org/abs/2308.11462"&gt;LegalBench&lt;/a&gt; tests whether a model can correctly identify enforceability clauses, classify contract language, and apply legal reasoning. &lt;a href="https://arxiv.org/abs/2311.11944"&gt;FinanceBench&lt;/a&gt; tests whether a model can answer the kind of question a financial analyst would actually ask about a real 10-K filing. None of these are trying to rank models on general intelligence. They&amp;rsquo;re asking the only question that matters downstream: &lt;em&gt;can this model do this specific job well enough?&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;This week, Grafana released &lt;a href="https://github.com/grafana/o11y-bench"&gt;o11y-bench&lt;/a&gt;, an open benchmark for observability-specific agent tasks. I&amp;rsquo;m biased — I work there — but it&amp;rsquo;s a useful illustration of the shape I&amp;rsquo;m describing. o11y-bench doesn&amp;rsquo;t ask whether a model is smart in general. It asks whether an agent can do the things observability engineers actually do: read production traces, correlate logs with metrics, figure out why the thing that&amp;rsquo;s supposed to be working isn&amp;rsquo;t. &lt;a href="https://o11ybench.ai/"&gt;Its leaderboard&lt;/a&gt; shows models&amp;rsquo; performance for each activity.&lt;/p&gt;
&lt;p&gt;Does that mean that more specific benchmarks won&amp;rsquo;t get saturated? No. We&amp;rsquo;ve already seen this play out with SWE-bench. But they&amp;rsquo;ll get saturated more slowly and remain more meaningful measures along the way.&lt;/p&gt;
&lt;p&gt;These are skill checks with DCs that matter to someone. They&amp;rsquo;re not trying to produce a single scalar ranking of &amp;ldquo;which model is smartest.&amp;rdquo; They&amp;rsquo;re asking whether the wizard recognizes the family crest belonging to a political faction or knows this specific cult&amp;rsquo;s practices, not whether the wizard is good at &amp;ldquo;wizarding&amp;rdquo; in the abstract.&lt;/p&gt;
&lt;h2 id="roll-for-initiative-what-this-means-in-practice"&gt;Roll for initiative: What this means in practice&lt;/h2&gt;
&lt;p&gt;If you&amp;rsquo;re an engineer picking a model for production: stop picking by leaderboard. Find or build an eval that reflects your actual use case. A handful of representative examples, graded the way you&amp;rsquo;d grade them if you were doing the work yourself, will tell you more than a dozen public benchmarks.&lt;/p&gt;
&lt;p&gt;If you&amp;rsquo;re a researcher thinking about what to build next: the interesting work is at the specific-and-grounded end of the spectrum, not the general-and-bigger end. Another harder general-knowledge benchmark will saturate in eighteen months. A well-designed domain benchmark, co-built with the people who actually do the work, can stay useful for years.&lt;/p&gt;
&lt;p&gt;And if you&amp;rsquo;re anyone else watching this field from the outside: be skeptical of the headlines. When a new model scores 94% on a benchmark you&amp;rsquo;ve never heard of, ask what it measures and whether the thing it measures is the thing you actually care about. Usually the answer is &amp;ldquo;not really,&amp;rdquo; and that&amp;rsquo;s the most important thing a benchmark score won&amp;rsquo;t tell you.&lt;/p&gt;
&lt;p&gt;The goal of a character sheet was never to produce one number that ranks the character. It was to give a DM enough information to run a meaningful encounter — and to give the player enough to know when to try, when to pass, and when to roll with advantage. LLM evaluation should work the same way. Not a ranking; a readiness check. Can this specific model clear this specific challenge? Roll for initiative.&lt;/p&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><item><title>How to use Grafana Assistant with self-hosted Grafana</title><link>https://nicolevanderhoeven.com/blog/20260420-grafana-assistant-self-hosted/</link><pubDate>Mon, 20 Apr 2026 09:00:00 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20260420-grafana-assistant-self-hosted/</guid><description>&lt;p&gt;In case you missed it, possibly the biggest news to come from GrafanaCON this year is that if you&amp;rsquo;re running self-hosted or open-source Grafana, you can now connect it through your Grafana Cloud account to &lt;a href="https://grafana.com/products/cloud/ai-tools/"&gt;Grafana Assistant&lt;/a&gt;, the purpose-built AI tool for all things Grafana.&lt;/p&gt;
&lt;p&gt;In this short tutorial, I show you how to enable Assistant on a self-hosted Grafana instance and go from &lt;em&gt;nothing&lt;/em&gt; to a working server-health dashboard with a single prompt.&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/0O0ZqrruGns?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="a-quick-note-on-what-for-open-source-actually-means"&gt;A quick note on what &amp;ldquo;for open source&amp;rdquo; actually means&lt;/h2&gt;
&lt;p&gt;Assistant itself isn&amp;rsquo;t open source. But you can now use it &lt;em&gt;with&lt;/em&gt; your self-hosted or open-source Grafana instance. The way it works is:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;You still need a Grafana Cloud account (the free tier has &lt;a href="https://grafana.com/pricing/"&gt;generous inclusions&lt;/a&gt; for Assistant).&lt;/li&gt;
&lt;li&gt;You link your self-hosted Grafana to that Cloud account.&lt;/li&gt;
&lt;li&gt;Assistant then lights up inside your OSS instance.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Think of the Grafana Cloud account as the key that unlocks Assistant wherever your Grafana lives.&lt;/p&gt;
&lt;h2 id="prerequisites"&gt;Prerequisites&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Grafana OSS v13 or later&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A Grafana Cloud account&lt;/strong&gt; (&lt;a href="https://grafana.com/pricing/"&gt;pricing here&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="enabling-assistant"&gt;Enabling Assistant&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Go to &lt;strong&gt;Administration → Plugins&lt;/strong&gt;, search for &lt;strong&gt;Assistant&lt;/strong&gt;, and click &lt;strong&gt;Install&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Refresh the page, then open the &lt;strong&gt;Connection&lt;/strong&gt; tab.&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Start Connection&lt;/strong&gt;. You&amp;rsquo;ll be prompted to log into Grafana Cloud.&lt;/li&gt;
&lt;li&gt;Select the organization and stack you want, then click &lt;strong&gt;Authorize connection&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Close the tab. Your self-hosted Grafana is now linked to Assistant.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="a-first-dashboard-from-nothing"&gt;A first dashboard from nothing&lt;/h2&gt;
&lt;p&gt;Every Grafana instance ships with a &lt;strong&gt;TestData&lt;/strong&gt; data source — perfect for a first run when you don&amp;rsquo;t yet have real data wired up. Enable it from Data Sources, then open Assistant (the new icon on the top right).&lt;/p&gt;
&lt;p&gt;Switch Assistant&amp;rsquo;s mode from &lt;strong&gt;General&lt;/strong&gt; to &lt;strong&gt;Dashboarding&lt;/strong&gt; — this mode is tuned for creating and managing dashboards — and ask in plain English, for example:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Hi Assistant, could you create a server health dashboard for me using the TestData data source?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;What comes back is a starting dashboard with CPU, memory, disk, and network panels already wired up. From there you can tweak panels, edit queries, or ask Assistant to iterate. You&amp;rsquo;re not starting from scratch — you&amp;rsquo;re starting from 80%.&lt;/p&gt;
&lt;h2 id="what-else-assistant-can-do"&gt;What else Assistant can do&lt;/h2&gt;
&lt;p&gt;I only showed dashboarding in this video, but Assistant can also:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Answer questions about the data already in your Grafana&lt;/li&gt;
&lt;li&gt;Run investigations to troubleshoot production incidents&lt;/li&gt;
&lt;li&gt;Learn new skills&lt;/li&gt;
&lt;li&gt;Manage alerts&lt;/li&gt;
&lt;li&gt;Teach you Grafana&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;That list keeps growing, so stay tuned.&lt;/p&gt;
&lt;h2 id="resources"&gt;Resources&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://grafana.com/products/cloud/ai-tools/"&gt;Grafana Assistant&lt;/a&gt; (product page)&lt;/li&gt;
&lt;li&gt;&lt;a href="https://grafana.com/pricing/"&gt;Grafana Cloud pricing&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://grafana.com/legal/grafana-cloud-data-processing/"&gt;How Grafana Labs handles your data&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; — everything I&amp;rsquo;m learning as I work on it&lt;/li&gt;
&lt;li&gt;&lt;a href="https://contexthorizon.substack.com/p/unlearnings-from-building-grafana"&gt;Unlearnings from building Grafana Assistant&lt;/a&gt; — my Context Horizon piece on what the team had to unlearn&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Unlearnings from building Grafana Assistant</title><link>https://nicolevanderhoeven.com/blog/20260409-unlearnings-from-building-grafana-assistant/</link><pubDate>Thu, 09 Apr 2026 09:00:00 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20260409-unlearnings-from-building-grafana-assistant/</guid><description>&lt;p&gt;Originally posted &lt;a href="https://open.substack.com/pub/contexthorizon/p/unlearnings-from-building-grafana?r=7xe6zg&amp;amp;utm_campaign=post&amp;amp;utm_medium=web&amp;amp;showWelcomeOnShare=true"&gt;here&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Everyone&amp;rsquo;s talking about what you need to &lt;em&gt;learn&lt;/em&gt; to build AI agents: Prompt engineering. Tool calling. Retrieval strategies. The content ecosystem is full of it. But while I was watching Context Window Episode 1, it struck me that Mat Ryer, Cyril Tovena, and Sven Großmann&amp;ndash; some of the team behind Grafana Assistant&amp;ndash; spent most of their time on something different: what they had to &lt;em&gt;unlearn&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Grafana Assistant started as a weekend hackathon project. By the time it shipped, the team had thrown out a popular framework, flipped their assumptions about tool design, and discovered that some of the instincts you bring from conventional software development actively work against you when you&amp;rsquo;re building agents.&lt;/p&gt;
&lt;p&gt;I pulled out the ten moments where received wisdom turned out to be wrong. If you&amp;rsquo;re building anything agentic right now, these are worth sitting with.&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/TGWVqBAeIzI?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="-langchain-will-help-us-build-faster"&gt;❌ LangChain will help us build faster&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://github.com/langchain-ai/langchain"&gt;LangChain&lt;/a&gt; is an opensource framework for building applications that use LLMs. It provides structured components that can be used for rapid prototyping.&lt;/p&gt;
&lt;p&gt;In the video, Tovena talks about how they started with LangChain during the initial hackathon because they thought it would help them build more quickly, but instead it became obvious fairly early on that the opposite was true. They didn&amp;rsquo;t end up using a lot of the features that LangChain provided and felt they needed more flexibility and speed.&lt;/p&gt;
&lt;h3 id="abstraction-overhead"&gt;Abstraction overhead&lt;/h3&gt;
&lt;p&gt;One possible reason for their troubles with LangChain is that LangChain has standard abstractions for prompts, tool use, and orchestration&amp;ndash; things that sound good in theory. But sometimes abstractions lend themselves to creating a sort of black box in your stack, where you don&amp;rsquo;t know what&amp;rsquo;s happening inside it. It sounds like the Assistant team missed the oversight and control of what was happening.&lt;/p&gt;
&lt;h2 id="-use-the-same-prompt-for-every-model"&gt;❌ Use the same prompt for every model&lt;/h2&gt;
&lt;p&gt;They also talked about how for the sake of simplicity and consistency, they initially used the same prompt for every model. However, they found out that this actually led to worse results. They found more success in creating slightly different prompts for different models, playing to their strengths and weaknesses a bit more.&lt;/p&gt;
&lt;p&gt;There is even an argument (&lt;a href="https://arxiv.org/abs/2401.00595"&gt;Mizrahi et al.&amp;rsquo;s &amp;ldquo;State of What Art? A Call for Multi-Prompt LLM Evaluation&lt;/a&gt;) that AI benchmarks that involve sending multiple LLMs the same prompt is a brittle and unreliable way to assess LLM capabilities. Different models respond differently to prompt variations.&lt;/p&gt;
&lt;p&gt;In practice, what this means is that switching models isn&amp;rsquo;t a drop-in replacement. Even if a new model scores better on benchmarks, your prompts were written with a specific model&amp;rsquo;s tendencies in mind. The unlearning here is letting go of the idea that a prompt is model-agnostic — it&amp;rsquo;s more like a conversation style, and different models have different conversational defaults.&lt;/p&gt;
&lt;h2 id="-treat-errors-as-failures"&gt;❌ Treat errors as failures&lt;/h2&gt;
&lt;p&gt;Traditionally in software, you catch errors and hide them from the user: you log them, handle them, but treat that transaction as a failed one.&lt;/p&gt;
&lt;p&gt;The Assistant team had to unlearn this habit when dealing with an LLM, because with agents, error messages &lt;em&gt;are&lt;/em&gt; useful data. Feeding it back to the LLM often results in it learning from its own mistake and trying again. It&amp;rsquo;s basically letting the agent debug itself, in a manner that Ryer noted was remarkably similar to how we humans debug errors too.&lt;/p&gt;
&lt;h2 id="-return-errors-in-structured-json"&gt;❌ Return errors in structured JSON&lt;/h2&gt;
&lt;p&gt;On the subject of error messages, Großmann mentioned that at one point they were trying to format the errors in JSON or stringified JSON. This practice shows solid engineer intuition because usually, structuring information helps machines process it faster and more accurately. What they found here was the reverse: it was easier and yielded better results when the LLM was just passed the entire error in natural language.&lt;/p&gt;
&lt;h2 id="-build-as-many-tools-as-possible"&gt;❌ Build as many tools as possible&lt;/h2&gt;
&lt;p&gt;The team mentioned that at the start, they were inclined to create as many tools/skills for Assistant: one for everything that could be done in Grafana. This made sense until they saw LLMs struggle to determine which tool to use in which context.&lt;/p&gt;
&lt;p&gt;To help LLMs identify the correct tool, they added tool descriptions and also experimented with combining multiple tools into fewer, parameterized, tools. These helped, although the team still observed that allowing users to create their own tools (with potentially very general tool descriptions) could potentially confuse LLMs.&lt;/p&gt;
&lt;h2 id="-bigger-context-window--better"&gt;❌ Bigger context window = better&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://developers.googleblog.com/en/new-features-for-the-gemini-api-and-google-ai-studio/"&gt;Gemini 1.5 Pro announced&lt;/a&gt; it had a 2M context window back in 2024, and it might seem that other providers had lagged behind: &lt;a href="https://openai.com/index/gpt-4-1/"&gt;OpenAI&lt;/a&gt; only announced support for 1M tokens in 2025 and &lt;a href="https://www.anthropic.com/news/claude-opus-4-6"&gt;Anthropic&lt;/a&gt; followed in 2026. However, the Assistant team pointed out that context wasn&amp;rsquo;t everything. They said that they noticed that bigger wasn&amp;rsquo;t necessarily better, also pointing out that the chat summarization feature on IDEs like &lt;a href="https://cursor.com/"&gt;Cursor&lt;/a&gt; could still sometimes lose important details when summarizing.&lt;/p&gt;
&lt;p&gt;This finding seems to coincide with a 2023 Stanford study (&lt;a href="https://arxiv.org/abs/2307.03172"&gt;Lost in the Middle: How Language Models Use Long Contexts&lt;/a&gt;) that found there was a performance degradation when models access information within a very large context. In the video, they talked about how their system prompts were often 40k tokens long (half for the prompt itself and then the other half for tools).&lt;/p&gt;
&lt;h2 id="-start-with-a-multi-agent-architecture"&gt;❌ Start with a multi-agent architecture&lt;/h2&gt;
&lt;p&gt;Tovena mentioned that creating a multi-agent architecture for Assistant yielded more mixed results than he expected. He said that passing context between agents is difficult, outputs were inconsistent, and there was a bit of a &amp;ldquo;telephone game&amp;rdquo; problem where agents didn&amp;rsquo;t always perfectly understand the intent or output of other agents.&lt;/p&gt;
&lt;p&gt;In early 2026, &lt;a href="https://arxiv.org/abs/2601.13295"&gt;Khatua et al. released a study&lt;/a&gt; called &amp;ldquo;CooperBench: Why Coding Agents Cannot Be Your Teammates Yet&amp;rdquo; that showed that AI agents aren&amp;rsquo;t great at collaboration. The study suggests, surprisingly, that this might be because AI agents lack human social habits that help us collaborate better, such as feeling obliged to do what we say and having a good understanding of what others&amp;rsquo; plans are.&lt;/p&gt;
&lt;p&gt;The Assistant team&amp;rsquo;s experience is also a perfect example of &lt;a href="https://www.laws-of-software.com/laws/gall/"&gt;Gall&amp;rsquo;s Law&lt;/a&gt;, which states that it&amp;rsquo;s easier to start with simplicity and build complexity than the other way around.&lt;/p&gt;
&lt;h2 id="-plan-around-models-as-they-are-now"&gt;❌ Plan around models as they are now&lt;/h2&gt;
&lt;p&gt;Software has always moved quickly, but it feels like AI models are moving faster. &lt;a href="https://hai.stanford.edu/assets/files/hai_ai_index_report_2025.pdf"&gt;Stanford&amp;rsquo;s AI Index Report 2025&lt;/a&gt; reported that models went from having a 50% chance to near-human performance in roughly 2 years (2021-2023). In fact, benchmarks keep getting retired as AI saturates them&amp;ndash; meaning that benchmarks can&amp;rsquo;t reliably be used to distinguish between good and bad models because all the models are testing near the ceiling.&lt;/p&gt;
&lt;p&gt;The rapid pace of development around AI requires us to not be so attached to our work: Großmann recalled an incident where someone wrote a joke prompt that spoke like a dog that shockingly did better than their other system prompts. Ryer also mentioned that at one point someone deleted all the system prompts and Assistant weirdly became more accurate.&lt;/p&gt;
&lt;p&gt;The lesson is clear: plan for models to improve, and plan to redo a lot of your work when they do.&lt;/p&gt;
&lt;h2 id="-we-dont-need-evals"&gt;❌ We don&amp;rsquo;t need evals&lt;/h2&gt;
&lt;p&gt;The Assistant team said that they went from having no evals to employing several types of evals:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;integration-style evals that exercise whole workflows&lt;/li&gt;
&lt;li&gt;unit-style evals that feed inputs plus a system prompt and check the output&lt;/li&gt;
&lt;li&gt;LLM-as-judge, where they pass conversations to an LLM to ask it to judge whether it answered the user&amp;rsquo;s questions.&lt;/li&gt;
&lt;li&gt;user feedback in the form of thumbs during conversations with Assistant&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Beyond evaluation, they talked about how important it was to be able to observe AI. At the very minimum, showing what Assistant is doing at all times (thinking out loud) is very important to them because it builds users&amp;rsquo; trust in the thinking process and, eventually, in the result.&lt;/p&gt;
&lt;p&gt;Evals aren&amp;rsquo;t a sign that you don&amp;rsquo;t trust your product. They&amp;rsquo;re how you build the confidence to keep shipping it.&lt;/p&gt;
&lt;h2 id="-assume-people-already-know-how-to-work-with-ai"&gt;❌ Assume people already know how to work with AI&lt;/h2&gt;
&lt;p&gt;When you ship an AI feature, it&amp;rsquo;s tempting to assume the hard work is done. You&amp;rsquo;ve built the thing. Users will figure it out.&lt;/p&gt;
&lt;p&gt;What the Grafana Assistant team found was that this assumption doesn&amp;rsquo;t hold. Users came in with wildly different mental models of what an AI assistant could or should do — some treating it like a search box, others expecting it to read their minds, most not yet sure how to prompt it effectively.&lt;/p&gt;
&lt;p&gt;Their insight was that this isn&amp;rsquo;t just a UX problem to solve on your end. It&amp;rsquo;s a shared responsibility: AI should try to help the user, but the user also needs to learn how to work with AI. And building an assistant that teaches people how to use it well (through good responses, gentle corrections, showing its work) is part of building the product.&lt;/p&gt;
&lt;p&gt;There&amp;rsquo;s also a deeper point here specific to observability. Grafana Assistant isn&amp;rsquo;t just an AI feature; it&amp;rsquo;s a way of interacting with your own infrastructure. Every good interaction teaches you something about what questions to ask, what signals to look for, what it means to understand a system. In other words: learning to use AI well makes you a better engineer. The tool and the skill co-evolve.&lt;/p&gt;
&lt;p&gt;This is the unlearning that sits furthest from the code. It&amp;rsquo;s not about prompts or architectures or frameworks. It&amp;rsquo;s about recognising that you&amp;rsquo;re not just shipping a feature&amp;ndash; you&amp;rsquo;re introducing a new way of working. That takes time. And it&amp;rsquo;s worth designing for explicitly.&lt;/p&gt;
&lt;h2 id="summary"&gt;Summary&lt;/h2&gt;
&lt;p&gt;What strikes me most about this list isn&amp;rsquo;t any single item — it&amp;rsquo;s the pattern. Most of these unlearnings point in the same direction: &lt;em&gt;less is more, and messiness is the point.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Less abstraction. Fewer tools. Smaller context. Simpler architecture. And rather than hiding the mess — the errors, the reasoning, the uncertainty — let it show. That&amp;rsquo;s where the trust gets built.&lt;/p&gt;
&lt;p&gt;We&amp;rsquo;re all still early with this. The team that built one of the most thoughtful AI products I&amp;rsquo;ve seen up close still didn&amp;rsquo;t have evals when they launched. That&amp;rsquo;s not a criticism — it&amp;rsquo;s a reminder. You don&amp;rsquo;t need to have it all figured out before you ship. You just need to commit to keep unlearning.&lt;/p&gt;</description></item><item><title>Let There Be Dashboards: Introducing Grafana Assistant</title><link>https://nicolevanderhoeven.com/blog/20260326-let-there-be-dashboards/</link><pubDate>Thu, 26 Mar 2026 19:30:00 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20260326-let-there-be-dashboards/</guid><description>&lt;p&gt;I gave this talk at the &lt;a href="https://www.meetup.com/grafana-friends-lisboa/events/313572885/"&gt;Grafana &amp;amp; Friends Lisbon Meetup&lt;/a&gt; in Lisbon, Portugal.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://nicolevanderhoeven.com/assets/20260326-lisbon-meetup-01-presenting.jpg" alt="Demoing Grafana Assistant to the Lisbon meetup" loading="lazy" decoding="async"&gt;
&lt;/p&gt;
&lt;h2 id="abstract"&gt;Abstract&lt;/h2&gt;
&lt;p&gt;This is a live demo of how to go from zero to a working Grafana dashboard using Assistant. Starting with a blank slate, we&amp;rsquo;ll use natural language to explore data and generate meaningful visualizations in minutes. Along the way, you&amp;rsquo;ll see how AI can accelerate dashboard creation without sacrificing control or understanding.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://nicolevanderhoeven.com/assets/20260326-lisbon-meetup-dashboard.png" alt="Dashboard created during the demo using Grafana Assistant" loading="lazy" decoding="async"&gt;
&lt;/p&gt;
&lt;p&gt;&lt;img src="https://nicolevanderhoeven.com/assets/20260326-lisbon-meetup-02-audience.jpg" alt="The Grafana &amp;amp; Friends Lisbon crowd" loading="lazy" decoding="async"&gt;
&lt;/p&gt;
&lt;p&gt;Thanks to everyone who came out! It was great to connect with the Lisbon tech community.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://nicolevanderhoeven.com/assets/20260326-lisbon-meetup-03-group.jpg" alt="Group photo with the meetup attendees" loading="lazy" decoding="async"&gt;
&lt;/p&gt;</description></item><item><title>Do Androids Dream of Second Brains?</title><link>https://nicolevanderhoeven.com/blog/20260321-do-androids-dream-of-second-brains/</link><pubDate>Sat, 21 Mar 2026 11:15:00 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20260321-do-androids-dream-of-second-brains/</guid><description>&lt;p&gt;I gave this talk at &lt;a href="https://pkmsummit.com/"&gt;PKM Summit 2026&lt;/a&gt; in Utrecht, the Netherlands.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://nicolevanderhoeven.com/assets/20260320-pkm-summit-01-presenting.png" alt="Presenting “Do Androids Dream of Second Brains?” at PKM Summit 2026 in Utrecht" loading="lazy" decoding="async"&gt;
&lt;/p&gt;
&lt;h2 id="abstract"&gt;Abstract&lt;/h2&gt;
&lt;p&gt;We often describe our PKM systems as &amp;ldquo;second brains&amp;rdquo;. But can we really say our systems think for themselves?&lt;/p&gt;
&lt;p&gt;In Philip K. Dick&amp;rsquo;s &amp;ldquo;Do Androids Dream of Electric Sheep?&amp;rdquo;, the inspiration for the movie Bladerunner, the boundary between humans and machines is tested through observation and subtle signals. In this talk, we&amp;rsquo;ll explore a similar question for our knowledge systems: what happens when we start observing them?&lt;/p&gt;
&lt;p&gt;By instrumenting an Obsidian vault with an observability stack and layering AI tools on top, we can begin to see patterns in how ideas form, connect, and evolve. The result isn&amp;rsquo;t quite a thinking system&amp;hellip; but it may be something closer than we&amp;rsquo;ve had before.&lt;/p&gt;
&lt;h2 id="slides"&gt;Slides&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://nicole.to/androids"&gt;nicole.to/androids&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Observability for GenAI Applications (Grafana ❤️🔥 OpenTelemetry Community Call #4)</title><link>https://nicolevanderhoeven.com/blog/20260121-gocc04-observability-for-genai-applications/</link><pubDate>Wed, 21 Jan 2026 16:00:00 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20260121-gocc04-observability-for-genai-applications/</guid><description>&lt;p&gt;In this community call with my coworker Liudmila Molkova, we dove into the emerging field of observability for Generative AI applications. We explored how to instrument LLM-powered applications using OpenTelemetry, what metrics and traces matter most when monitoring AI workloads, and how to debug issues in complex AI pipelines. The discussion covered prompt tracing, token usage monitoring, latency considerations, and the unique challenges of observing non-deterministic AI systems.&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/LfDVygRWQJU?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;</description></item><item><title>Asimov's Zeroth Law of Robotics: Observability for AI (Newcrafts 2025)</title><link>https://nicolevanderhoeven.com/blog/20251106-asimovs-zeroth-law-newcrafts/</link><pubDate>Thu, 06 Nov 2025 12:23:19 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20251106-asimovs-zeroth-law-newcrafts/</guid><description>&lt;p&gt;Today I presented at &lt;a href="https://ncrafts.io/"&gt;Newcrafts&lt;/a&gt; in Paris, France. I gave a talk I&amp;rsquo;ve given before, called &lt;em&gt;Asimov&amp;rsquo;s Zeroth Law of Robotics: Observability for AI&lt;/em&gt;, which I had previously presented at &lt;a href="https://nicolevanderhoeven.com/blog/20250402-asimovs-zeroth-law-of-robotics/"&gt;KubeCon EU&lt;/a&gt; in London and at &lt;a href="https://nicolevanderhoeven.com/blog/20250703-asimovs-zeroth-law-dutch-cloud-native-day/"&gt;Dutch Cloud Native Day 2025&lt;/a&gt; in Utrecht. I was happy to present it again, as it gave me the chance to further refine my demo application, which you can find on &lt;a href="https://nicole.to/asimov"&gt;GitHub&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The main change I made was to use the &amp;ldquo;AI as judge&amp;rdquo; approach that I had previously only talked about in theory. In this version of the demo app, I use AI in both the game as well as in the testing of the game, showing how AI can be integrated into both the application and its observability/testing stack. It was really interesting to note that testing with AI ended up exposing more defects than my hardcoded test cases did, which goes to show the potential of AI-driven testing.&lt;/p&gt;</description></item><item><title>Asimov's Zeroth Law of Robotics (Dutch Cloud Native Day 2025)</title><link>https://nicolevanderhoeven.com/blog/20250703-asimovs-zeroth-law-dutch-cloud-native-day/</link><pubDate>Thu, 03 Jul 2025 15:01:24 +0200</pubDate><guid>https://nicolevanderhoeven.com/blog/20250703-asimovs-zeroth-law-dutch-cloud-native-day/</guid><description>&lt;p&gt;Today I presented at the &lt;a href="https://www.dutchcloudnativeday.nl"&gt;Dutch Cloud Native Day 2025&lt;/a&gt; in Utrecht, the Netherlands. I gave a talk titled &lt;em&gt;Asimov&amp;rsquo;s Zeroth Law of Robotics: Observability for AI&lt;/em&gt;, which I had previously presented at &lt;a href="https://nicolevanderhoeven.com/blog/20250402-asimovs-zeroth-law-of-robotics/"&gt;KubeCon EU&lt;/a&gt; earlier on in the year, in London. I was very happy to be able to present it again, because it gave me the opportunity to improve the demo app I used, which you can find on &lt;a href="https://nicole.to/asimov"&gt;GitHub&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://nicolevanderhoeven.com/assets/2025-07-03-dcnd_01.jpg" alt="Me speaking at Dutch Cloud Native Day 2025" loading="lazy" decoding="async"&gt;
&lt;/p&gt;
&lt;p&gt;&lt;img src="https://nicolevanderhoeven.com/assets/2025-07-03-dcnd_02.jpg" alt="Me speaking at Dutch Cloud Native Day 2025" loading="lazy" decoding="async"&gt;
&lt;/p&gt;</description></item><item><title>Asimov's Zeroth Law of Robotics: Observability for AI (KubeCon EU 2025)</title><link>https://nicolevanderhoeven.com/blog/20250402-asimovs-zeroth-law-of-robotics/</link><pubDate>Wed, 02 Apr 2025 13:46:42 +0200</pubDate><guid>https://nicolevanderhoeven.com/blog/20250402-asimovs-zeroth-law-of-robotics/</guid><description>&lt;p&gt;Today I gave a talk at &lt;a href="https://events.linuxfoundation.org/kubecon-cloudnativecon-europe/"&gt;KubeCon EU 2025 in London&lt;/a&gt; called &amp;ldquo;Asmiov&amp;rsquo;s Zeroth Law of Robotics: Observability for AI&amp;rdquo;. Here&amp;rsquo;s the abstract:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;A robot may not harm humans. A robot must obey humans. A robot must protect its own existence. These are Isaac Asimov&amp;rsquo;s three Laws of Robotics, created to govern the ethical programming of artificial intelligences. From the Butlerian Jihad to Skynet to cylons, we&amp;rsquo;ve been immortalizing our collective nightmares about artificial intelligence for years. But there&amp;rsquo;s an unmentioned law that comes as a prerequisite to all of that: a robot must be observable.&lt;/p&gt;
&lt;p&gt;In this talk, I discuss the different types of AI, the factors that make observing AI different from observing applications, and the telemetry signals specific to AI that we might want to listen to. How do we deal with large data sets? How do we observe for model drift? How do we take into account the costs of LLMs? How can we use distributed tracing to follow event sequences? Part cautionary tale and part technical demo, this talk shows how to instrument and monitor AI apps using OpenTelemetry, Prometheus, OpenLit, and more.&lt;/p&gt;
&lt;/blockquote&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/x6EKTCAWtn8?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;</description></item><item><title>AI Observability with Ishan Jain (Grafana Office Hours #29)</title><link>https://nicolevanderhoeven.com/blog/20241108-goh29-ai-observability-with-ishan-jain/</link><pubDate>Fri, 08 Nov 2024 18:24:29 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20241108-goh29-ai-observability-with-ishan-jain/</guid><description>&lt;p&gt;In this Grafana Office Hours, Ishan Jain talks about AI Observability with Grafana: what it entails, factors to consider when monitoring and observing LLMs, and how to do it all with Grafana. He is joined by Senior Developer Advocate Nicole van der Hoeven.&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/9X7M-bvnZG0?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;</description></item><item><title>The Role of AI in Gender Equality with Nicola Martin (Adobo &amp; Avocados #15)</title><link>https://nicolevanderhoeven.com/blog/20231004-ana15-the-role-of-ai-in-gender-equality/</link><pubDate>Wed, 04 Oct 2023 17:26:14 +0200</pubDate><guid>https://nicolevanderhoeven.com/blog/20231004-ana15-the-role-of-ai-in-gender-equality/</guid><description>&lt;p&gt;In this episode of Adobo and Avocados, my friend &lt;a href="https://testingwithmarie.com"&gt;Marie Cruz&lt;/a&gt; and I chat with &lt;a href="https://linktr.ee/nlmit"&gt;Nicola Martin&lt;/a&gt;, Head of Quality Engineering at Adarga, to talk about the role of AI, technology, and education in gender equality.&lt;/p&gt;
&lt;p&gt;Nicola is a Council and Committee Member for the British Computer Society and WomenTech Global Network. She is also a mentor, speaker, and panelist speaking on subjects such as AI and quality, software testing, and diversity in tech.&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/yoErbu09AGw?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;</description></item><item><title>Tagging and Linking With AI: Napkin</title><link>https://nicolevanderhoeven.com/blog/20230505-tagging-and-linking-with-ai-napkin/</link><pubDate>Fri, 05 May 2023 00:58:39 +0800</pubDate><guid>https://nicolevanderhoeven.com/blog/20230505-tagging-and-linking-with-ai-napkin/</guid><description>&lt;p&gt;In this video, I demonstrate my workflow for tagging and linking with AI using the Napkin.one app. Napkin is an app that uses a fork of GPT-3 to intelligently tag thoughts with keywords that improve over time. I like to use Napkin to tag mostly my highlights from Readwise.&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/p2E3gRXiLYY?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="resources"&gt;Resources&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://napkin.one/?via=nicole"&gt;Napkin&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://readwise.io/nicole"&gt;Readwise&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;The Lost Art of Taking Good Notes&lt;/em&gt;, &lt;a href="https://conference.eurostarsoftwaretesting.com/event/2023/the-lost-art-of-taking-good-notes/"&gt;my talk at EuroSTAR 2023&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>AI tools for PKM and Obsidian</title><link>https://nicolevanderhoeven.com/blog/20230127-ai-tools-for-pkm-and-obsidian/</link><pubDate>Fri, 27 Jan 2023 16:39:00 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20230127-ai-tools-for-pkm-and-obsidian/</guid><description>&lt;p&gt;Here are some AI tools for learning and taking notes that I&amp;rsquo;ve incorporated into my processes. AI is a controversial topic, but it&amp;rsquo;s important to remember it&amp;rsquo;s just like any other technology: it&amp;rsquo;s only as good as the people that wield it. In this video, I show some ways I use artificial intelligence to improve my learning and note-taking rather than to replace them.&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/mKWY33MXLvI?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;</description></item></channel></rss>