<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/we-broke-the-otel-demo-c8cujnxsl" -->

---
title: We broke the OTel demo | daily.dev
description: OpenTelemetry Demo 3.0 introduces intentional breaking changes alongside major new features. All custom telemetry attributes were renamed from `app.*` to...
canonical: https://daily.dev/posts/we-broke-the-otel-demo-c8cujnxsl
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: We broke the OTel demo | daily.dev
og:description: OpenTelemetry Demo 3.0 introduces intentional breaking changes alongside major new features. All custom telemetry attributes were renamed from `app.*` to...
og:url: https://daily.dev/posts/we-broke-the-otel-demo-c8cujnxsl
og:image: https://api.daily.dev/og/posts/C8CUjNXSl.png
og:image:alt: We broke the OTel demo
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# We broke the OTel demo

**[OpenTelemetry](https://daily.dev/sources/opentelemetry)** · 11 min read · 10 upvotes · 0 comments

## Summary

OpenTelemetry Demo 3.0 introduces intentional breaking changes alongside major new features. All custom telemetry attributes were renamed from `app.*` to `demo.*` to avoid namespace conflicts with official OTel semantic conventions, and `docker-compose.yaml` was replaced with a modular `compose.yaml` supporting multiple run modes. New additions include an agentic AI stack (LangGraph ReAct agent, MCP server, Chatbot UI) fully instrumented with OTel, continuous profiling via firepit, and an OpAMP server for Collector management. The Locust load generator was replaced with k6, cutting memory usage from 1,500 MiB to 512 MiB. A new telemetry sanity testing framework validates the end-to-end observability pipeline, and a 62-item vulnerability backlog was cleared, resolving 300+ CVEs. Vendors with Demo integration instructions must update them within 60 days or be removed from the README.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://opentelemetry.io/blog/2026/we-broke-the-demo>

## Questions this post answers

### What breaking changes are in OpenTelemetry Demo 3.0?

All custom telemetry attributes are renamed from the app.* namespace to demo.* across every service, since app.* became a reserved OpenTelemetry semantic convention namespace in 2023. Additionally, docker-compose.yaml is replaced by a modular compose.yaml split across multiple files, supporting leaner stack configurations that drop Kafka or the observability stack. Existing dashboards, queries, and vendor integration instructions built on the old attribute names or compose file will break.

_Track breaking OpenTelemetry changes like this one on daily.dev before an upgrade catches your dashboards off guard._

### How does OpenTelemetry Demo 3.0 support observability for agentic AI systems?

It adds three new services forming a complete observable AI stack: a LangGraph ReAct agent, a Model Context Protocol (MCP) server exposing Demo capabilities as tools, and a chatbot UI. Every tool call and LLM interaction is instrumented with OpenTelemetry, and a gen-ai normalizer processor converts Traceloop/OpenLLMetry telemetry into official gen_ai.* semantic conventions, giving distributed tracing across the full chatbot-to-agent-to-MCP flow.

_Developers instrumenting agentic AI pipelines can follow evolving gen_ai semconv patterns like this on daily.dev._

### Why did OpenTelemetry Demo replace Locust with k6 for load testing?

Locust carried a large Python dependency tree with over a thousand pinned requirements, while k6 ships as a single Go binary. A custom xk6-otel extension bridges the OpenTelemetry Go SDK into k6's JavaScript runtime, preserving W3C traceparent injection and baggage propagation from the old Locust setup while cutting memory usage from 1,500 MiB down to 512 MiB.

_Teams comparing load testing tools weigh trade-offs like these via daily.dev before swapping their test infrastructure._

## Similar posts on daily.dev

- [The OpenTelemetry Java agent 3.0 is almost here — preview it today](https://daily.dev/posts/the-opentelemetry-java-agent-3-0-is-almost-here-preview-it-today-bfci5bf6c) · OpenTelemetry · 2 upvotes · 0 comments
- [Jaeger adopts OpenTelemetry at its core to solve the AI agent observability gap](https://daily.dev/posts/jaeger-adopts-opentelemetry-at-its-core-to-solve-the-ai-agent-observability-gap-7ufkqbnb5) · The New Stack · 1 upvotes · 0 comments
- [OTel Updates: OpenTelemetry Proposes Changes to Stability, Releases, and Semantic Conventions](https://daily.dev/posts/otel-updates-opentelemetry-proposes-changes-to-stability-releases-and-semantic-conventions-tiqanj4sm) · Last9 · 2 upvotes · 0 comments
- [OTel and mesh-derived metrics: A 2026 reference](https://daily.dev/posts/otel-and-mesh-derived-metrics-a-2026-reference-vrkb9i0np) · CNCF · 0 upvotes · 0 comments
- [Airbnb Migrates High-Volume Metrics Pipeline to OpenTelemetry](https://daily.dev/posts/airbnb-migrates-high-volume-metrics-pipeline-to-opentelemetry-ytqavyfqp) · InfoQ · 1 upvotes · 0 comments

---

Tags: [#devops](https://daily.dev/tags/devops), [#observability](https://daily.dev/tags/observability), [#agentic-ai](https://daily.dev/tags/agentic-ai), [#opentelemetry](https://daily.dev/tags/opentelemetry)

[View this post on daily.dev](https://daily.dev/posts/we-broke-the-otel-demo-c8cujnxsl)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"We broke the OTel demo","url":"https://daily.dev/posts/we-broke-the-otel-demo-c8cujnxsl","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/we-broke-the-otel-demo-c8cujnxsl"},"datePublished":"2026-07-28T10:28:07.496Z","dateModified":"2026-09-14T07:51:49.937Z","description":"OpenTelemetry Demo 3.0 introduces intentional breaking changes alongside major new features. All custom telemetry attributes were renamed from `app.*` to...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/98d24ffd1665dd1b58f33da16e02e5b6?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/98d24ffd1665dd1b58f33da16e02e5b6?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"OpenTelemetry","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"OpenTelemetry","logo":"https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/058cf331ff204b6aa421b376d509f16e","url":"https://daily.dev/sources/opentelemetry"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/we-broke-the-otel-demo-c8cujnxsl","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":10},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"devops,observability,agentic-ai,opentelemetry","timeRequired":"PT11M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"OpenTelemetry","item":"https://daily.dev/sources/opentelemetry"},{"@type":"ListItem","position":3,"name":"We broke the OTel demo"}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/we-broke-the-otel-demo-c8cujnxsl#faq","mainEntity":[{"@type":"Question","name":"What breaking changes are in OpenTelemetry Demo 3.0?","acceptedAnswer":{"@type":"Answer","text":"All custom telemetry attributes are renamed from the app.* namespace to demo.* across every service, since app.* became a reserved OpenTelemetry semantic convention namespace in 2023. Additionally, docker-compose.yaml is replaced by a modular compose.yaml split across multiple files, supporting leaner stack configurations that drop Kafka or the observability stack. Existing dashboards, queries, and vendor integration instructions built on the old attribute names or compose file will break. Track breaking OpenTelemetry changes like this one on daily.dev before an upgrade catches your dashboards off guard."}},{"@type":"Question","name":"How does OpenTelemetry Demo 3.0 support observability for agentic AI systems?","acceptedAnswer":{"@type":"Answer","text":"It adds three new services forming a complete observable AI stack: a LangGraph ReAct agent, a Model Context Protocol (MCP) server exposing Demo capabilities as tools, and a chatbot UI. Every tool call and LLM interaction is instrumented with OpenTelemetry, and a gen-ai normalizer processor converts Traceloop/OpenLLMetry telemetry into official gen_ai.* semantic conventions, giving distributed tracing across the full chatbot-to-agent-to-MCP flow. Developers instrumenting agentic AI pipelines can follow evolving gen_ai semconv patterns like this on daily.dev."}},{"@type":"Question","name":"Why did OpenTelemetry Demo replace Locust with k6 for load testing?","acceptedAnswer":{"@type":"Answer","text":"Locust carried a large Python dependency tree with over a thousand pinned requirements, while k6 ships as a single Go binary. A custom xk6-otel extension bridges the OpenTelemetry Go SDK into k6's JavaScript runtime, preserving W3C traceparent injection and baggage propagation from the old Locust setup while cutting memory usage from 1,500 MiB down to 512 MiB. Teams comparing load testing tools weigh trade-offs like these via daily.dev before swapping their test infrastructure."}}]}
```

