Your AI agent just took 45 seconds to answer a simple question. Was it the
model? A slow tool call? A retry loop?
#OpenTelemetry is making it easier to find the answers with semantic conventions for generative AI. Learn more in today's post!
Hashtag
180 posts tagged with this hashtag.
Your AI agent just took 45 seconds to answer a simple question. Was it the
model? A slow tool call? A retry loop?
#OpenTelemetry is making it easier to find the answers with semantic conventions for generative AI. Learn more in today's post!
🚀 Calling all end users! We're excited to announce the launch of #OTel blueprints and reference implementations! 🚀
With guidance from experts, you can build production-ready telemetry pipelines that span multiple #OpenTelemetry components.
Learn more and contribute! 👇️
🇳🇱 OTel Night in Amsterdam, May 20, 2026
OTel Night is a community meetup for practitioners running #OpenTelemetry in production. This edition features the team at #ING walking through how one of Europe's largest banks runs observability at scale.
Join us for food and drinks and to chat with fellow engineers!
🗓️ Over a year in the making
📈 One of the fastest-growing projects in #OpenTelemetry
Introducing the Ecosystem Explorer
#OTel is huge: hundreds of instrumentations across a dozen languages, plus the Collector. Figuring out what telemetry you actually get used to mean deploying first.
Not anymore. The Ecosystem Explorer helps you understand OTel before you start. We’re starting with Java, with plenty more to come.
Got ideas? Come build with us.
https://opentelemetry.io/blog/2026/introducing-the-ecosystem-explorer/
Earlier this year, the #OpenTelemetry project ran a survey of the 🇯🇵Japanese🇯🇵 community. We wanted to know how Japanese practitioners are using OTel and how engaged they are in the ecosystem. Our goal is to meaningfully grow usage and engagement in the region based on what we learned. The survey results are out now!
OpenTelemetry ❤️ Prometheus!
The #OpenTelemetry and #Prometheus communities are strengthening interoperability, and we want your input!
🛠️ If you’re building with both, check out the client library doc to understand key similarities and differences, plus updates on Prometheus compatibility and exporter spec stabilization. Links in thread.
📄 We’re also supporting an LFX mentorship to improve interoperability docs.
🗳️ Running both together? Take our 3-minute survey! https://buff.ly/XhVm0Fg
Are you living in Sydney, AUS? Are you looking for a job in the platform engineering and #SRE space?
This is your chance to join a great startup in the #observability space which recently acquired unicorn status:
https://jobs.ashbyhq.com/dash0/c71c1a08-d9ea-4229-b7c9-a3ac9eabc95c
#GetFediHired #FediHire #o11y #OTel #OpenTelemetry #K8s #golang
jobs.ashbyhq.com
ABOUT DASH0 Join Dash0 and help us define the future of observability. We are OpenTelemetry-native, building a delightful, simple, and AI-centric platform that eliminates vendor lock-in and meaningless toil. Shape a product that developers love—all with transparent pricing and cost-control built in. THE OPPORTUNITY Dash0 is building the observability platform that developers actually want to use — OpenTelemetry-native, transparent, and designed to eliminate the lock-in and complexity that define the incumbent players. As we expand engineering capacity globally, we're looking for a Mid-Level Platform Engineer to join our growing team in the Sydney area. This role is fully remote, but you'll be based in the Sydney, Australia area to collaborate regularly in person with the existing regional team member. You'll work across infrastructure, automation, and reliability — owning foundational systems that let our product teams move fast without breaking things. If you're a few years into your platform engineering career and ready to take on real ownership in a fast-moving environment, this is the right next step. What You'll Do - Build and maintain CI/CD pipelines and deployment automation to support continuous, high-quality software delivery - Provision and manage cloud infrastructure using Terraform, keeping things scalable, secure, and well-documented - Partner with product engineering teams to design resilient, cloud-native solutions and review code for quality and standards adherence - Monitor, troubleshoot, and improve platform performance and availability — including on-call coverage when needed - Embed security best practices into platform design, from access controls and encryption through to deployment pipelines - Contribute to platform architecture decisions and help evolve our infrastructure as the product and team scale - Write and maintain technical documentation: architecture diagrams, runbooks, and infrastructure standards What You Bring - 3–5 years of platform, infrastructure, or DevOps engineering experience - Solid Go (GoLang) programming skills — you're writing and reviewing production Go code, not just reading it - Hands-on experience with Terraform or comparable infrastructure-as-code tooling - Working knowledge of containerization and orchestration (Docker, Kubernetes) - Experience building and operating CI/CD pipelines in a cloud environment (AWS, GCP, or Azure) - Strong async communication skills — you're comfortable working across time zones and explaining infrastructure decisions to non-infrastructure engineers - Based in the Sydney, Australia area with the ability to meet the local team in person regularly Nice to Have - Experience with observability tooling, monitoring platforms, or OpenTelemetry instrumentation - Familiarity with security compliance frameworks relevant to SaaS platforms (e.g., SOC 2, ISO 27001) - Experience in a high-growth, venture-backed startup environment Why Dash0 This is a unique opportunity to help build a generational company. Dash0 is backed by top-tier investors including Balderton Capital, Accel and Cherry Ventures and led by a founding team with decades of experience in observability. We're in the middle of a massive growth phase after our Series B — and we're just getting started. If you're looking for a place where a great product meets great people, where momentum is real and your impact is visible from day one — this is it. What we offer: - Competitive salary & meaningful equity participation — you'll own part of what you're building - Flexible, remote-first work environment with offices in New York, Amsterdam, and Munich - €60/month phone & internet allowance - Location-specific benefits - Collaborative, fast-moving team culture with a builder mindset - Clear path for career growth and development - Direct access to founders and leadership
Our third feature on real-world #OpenTelemetry deployments focuses on Skyscanner, a global travel search platform. With more than 1,000 microservices across two dozen production clusters, Skyscanner operates #OTel at scale. Read our latest post for their valuable insights!
PHP adoption of #OpenTelemetry has been difficult in restricted environments. With the donation of Elastic's PHP distribution, we hope to change that. The distribution is moving toward a first beta release. Learn more in our latest post!
https://opentelemetry.io/blog/2026/otel-php-distro-donation-update/
#OpenTelemetry glossary: 30 terms you should know: https://nurkiewicz.com/2026/04/open-telemetry-glossary.html
nurkiewicz.com
A glossary of OpenTelemetry and observability terms, from traces and spans to Grafana and Datadog. Opinionated definitions for developers who don't have time for dry documentation.
#OpenTelemetry glossary: 30 terms you should know: https://nurkiewicz.com/2026/04/open-telemetry-glossary.html
nurkiewicz.com
A glossary of OpenTelemetry and observability terms, from traces and spans to Grafana and Datadog. Opinionated definitions for developers who don't have time for dry documentation.
💡 Configure HTTP header enrichment in #OpenTelemetry eBPF Instrumentation (OBI) and gain the request context you need to narrow the scope during an incident. With the OBI v.0.7.0, you can find out who is affected and why - quickly. Our latest blog post has all details about the config change.
https://opentelemetry.io/blog/2026/obi-http-header-enrichment/
We're back with the second post in our series on real-world #OpenTelemetry deployments. This time we get a look at how Adobe uses a three-tier Collector pipeline. Check out today's post for all the details!
Do you want #OpenTelemetry support in #GitHubActions?
Since GitHub is asking for input on their GitHub Actions roadmap, maybe upvoting https://github.com/orgs/community/discussions/190621#discussioncomment-16358205 will give them a nudge to implement it. 😄
github.com
🏷️ Discussion Type Product Feedback 💬 Feature/Topic Area Other Discussion Details We recently published a blog post outlining capabilities GitHub is actively investing in and developing for Actions...
Three pillars becomes four.
The #OpenTelemetry project is excited to share that profiles are now alpha! With #OTel profiles, you get an industry-wide standard for production profiling, with true vendor neutrality and powered by community and ecosystem support.
Read more details in our latest post!
📣 Call for contributors! 📣
The #OpenTelemetry Kotlin SIG has begun active development and is looking for contributors. Join now and help drive the project forward!
https://opentelemetry.io/blog/2026/kotlin-multiplatform-opentelemetry/
#KubeCon and CloudNativeCon EU is next week! If you'll be in Amsterdam, come say hi!
#OpenTelemetry will be in the Project Pavilion at booth 19A for the entire day on Tuesday, March 24.
For the remainder of the event, find us at the ad-hoc meeting tables right next to the Project Pavilion.
We hope to see you there!
Getting started in a large open source project can be hard, and we know #OpenTelemetry is no exception. We're working from several angles to improve the contributor experience.
Here's one: Our latest blog post gives you some good ideas for where to start and how to be successful. Check it out!
https://opentelemetry.io/blog/2026/alternative-approaches-to-contributing/
🤔 Have you ever wondered how real organizations use the #OpenTelemetry Collector in production? What architecture do they choose and why? How do they deploy it? How do they configure it to meet the requirements of a production system?
Check out the new blog series launched by the Developer Experience SIG! These posts will highlight end-user stories from a variety of industries, architectures, and company sizes. The first one is up today!
‼️ #OpenTelemetry is deprecating the Span Events API.
Our aim is to remove the confusion and duplication caused by having two overlapping ways to emit events: span events and log-based events. New code should write events as logs that are correlated with the current span. The older "span events" style will be phased out over time, but existing data and views that show events on spans will keep working.
Read our latest post to learn more about how you can prepare.
📆 Happy Monday! Kubernetes attributes have been promoted to release candidate status!
Start your week off right by trying the new schema via feature gates.
Make our day by providing feedback to the #OpenTelemetry K8s Semantic Convention SIG.
I've been thinking about adding federation health monitoring to #Fedify—not as a separate data store or custom API, but by extending the existing #OpenTelemetry integration. The idea is to expose delivery outcomes, signature verification failures, and per-remote-host error rates as OpenTelemetry metrics alongside the spans Fedify already emits. If you already have a Prometheus or Grafana setup, you'd get federation observability basically for free. Circuit breaker behavior (temporarily skipping a remote server that's been consistently unreachable) could surface as OpenTelemetry events, keeping everything in the same trace context rather than scattered across separate logs.
Does this sound useful to you? I'm curious whether people building on Fedify—or running federated servers in general—would actually reach for this, and what kinds of things you'd most want to observe. Happy to hear any thoughts.
I've been thinking about adding federation health monitoring to #Fedify—not as a separate data store or custom API, but by extending the existing #OpenTelemetry integration. The idea is to expose delivery outcomes, signature verification failures, and per-remote-host error rates as OpenTelemetry metrics alongside the spans Fedify already emits. If you already have a Prometheus or Grafana setup, you'd get federation observability basically for free. Circuit breaker behavior (temporarily skipping a remote server that's been consistently unreachable) could surface as OpenTelemetry events, keeping everything in the same trace context rather than scattered across separate logs.
Does this sound useful to you? I'm curious whether people building on Fedify—or running federated servers in general—would actually reach for this, and what kinds of things you'd most want to observe. Happy to hear any thoughts.
I've been thinking about adding federation health monitoring to #Fedify—not as a separate data store or custom API, but by extending the existing #OpenTelemetry integration. The idea is to expose delivery outcomes, signature verification failures, and per-remote-host error rates as OpenTelemetry metrics alongside the spans Fedify already emits. If you already have a Prometheus or Grafana setup, you'd get federation observability basically for free. Circuit breaker behavior (temporarily skipping a remote server that's been consistently unreachable) could surface as OpenTelemetry events, keeping everything in the same trace context rather than scattered across separate logs.
Does this sound useful to you? I'm curious whether people building on Fedify—or running federated servers in general—would actually reach for this, and what kinds of things you'd most want to observe. Happy to hear any thoughts.
I've been thinking about adding federation health monitoring to #Fedify—not as a separate data store or custom API, but by extending the existing #OpenTelemetry integration. The idea is to expose delivery outcomes, signature verification failures, and per-remote-host error rates as OpenTelemetry metrics alongside the spans Fedify already emits. If you already have a Prometheus or Grafana setup, you'd get federation observability basically for free. Circuit breaker behavior (temporarily skipping a remote server that's been consistently unreachable) could surface as OpenTelemetry events, keeping everything in the same trace context rather than scattered across separate logs.
Does this sound useful to you? I'm curious whether people building on Fedify—or running federated servers in general—would actually reach for this, and what kinds of things you'd most want to observe. Happy to hear any thoughts.
🚨 KubeCon + CloudNativeCon Europe 2026 is fast approaching! Will we see you there?
Make sure to add #OpenTelemetry talks and events to your plans. We combed the event schedule so you don't have to!
I've been thinking about adding federation health monitoring to #Fedify—not as a separate data store or custom API, but by extending the existing #OpenTelemetry integration. The idea is to expose delivery outcomes, signature verification failures, and per-remote-host error rates as OpenTelemetry metrics alongside the spans Fedify already emits. If you already have a Prometheus or Grafana setup, you'd get federation observability basically for free. Circuit breaker behavior (temporarily skipping a remote server that's been consistently unreachable) could surface as OpenTelemetry events, keeping everything in the same trace context rather than scattered across separate logs.
Does this sound useful to you? I'm curious whether people building on Fedify—or running federated servers in general—would actually reach for this, and what kinds of things you'd most want to observe. Happy to hear any thoughts.
I've been thinking about adding federation health monitoring to #Fedify—not as a separate data store or custom API, but by extending the existing #OpenTelemetry integration. The idea is to expose delivery outcomes, signature verification failures, and per-remote-host error rates as OpenTelemetry metrics alongside the spans Fedify already emits. If you already have a Prometheus or Grafana setup, you'd get federation observability basically for free. Circuit breaker behavior (temporarily skipping a remote server that's been consistently unreachable) could surface as OpenTelemetry events, keeping everything in the same trace context rather than scattered across separate logs.
Does this sound useful to you? I'm curious whether people building on Fedify—or running federated servers in general—would actually reach for this, and what kinds of things you'd most want to observe. Happy to hear any thoughts.
⏳️ Years in the making...
The #OpenTelemetry project is delighted to announce that declarative configuration is stable!
With implementations in five languages and two more in the works, declarative config brings greater configuration consistency across languages and more flexibility than environment variables can offer.
Congratulations to everyone who contributed to this momentous accomplishment!
https://opentelemetry.io/blog/2026/stable-declarative-config/
A passing of the torch. 🔥
Last month, #OpenTelemetry welcomed new Community Managers. The #OTel community has quadrupled in size under Austin's stewardship. We are grateful for his years of hard work building the community into what it is today and look forward to Reese, Adriana, and Julia's vision for the future!
With the latest release of the #OpenTelemetry Collector, the Filter Processor now includes OTTL context inference. In the legacy configuration, writing filters required understanding the Collector’s internal telemetry hierarchy. Context inference removes this complexity: instead of organizing conditions by context blocks, write a flat list using basic configuration style. Want details? 👇️ 👇️
https://opentelemetry.io/blog/2026/ottl-context-inference-come-to-filterprocessor/
🎉 OTel in Practice starts in just a few hours!
Come listen to Aviv Zohari talk about how they layer eBPF with OpenTelemetry for better observability.
⏰ Today at 5:00 PM UTC (that's 6:00 PM CET / 12:00 PM ET / 9:00 AM PT)
Join us here: https://buff.ly/FcBmUPo
So now it's my turn for a #getFediHired post. A couple decades in #softwareEngineering, specializing in #CloudNative systems, #Kubernetes and #opentelemetry. I can do #DevOps, #backendDevelopment and #platformEngineering. Languages I've worked in include #goLang, #PHP, #NodeJS and #Python, and I can learn more. Open to hybrid work in the Seattle area or remote work, contract or full-time. Feel free to contact me or boost!
linkedin.com
I am a programmer with a wide breadth of experience in server, network, and database… · Experience: Samsung SDS America · Education: University of Louisiana at Lafayette · Location: Greater Seattle Area · 303 connections on LinkedIn. View Nicholas P Istre’s profile on LinkedIn, a professional community of 1 billion members.
So now it's my turn for a #getFediHired post. A couple decades in #softwareEngineering, specializing in #CloudNative systems, #Kubernetes and #opentelemetry. I can do #DevOps, #backendDevelopment and #platformEngineering. Languages I've worked in include #goLang, #PHP, #NodeJS and #Python, and I can learn more. Open to hybrid work in the Seattle area or remote work, contract or full-time. Feel free to contact me or boost!
linkedin.com
I am a programmer with a wide breadth of experience in server, network, and database… · Experience: Samsung SDS America · Education: University of Louisiana at Lafayette · Location: Greater Seattle Area · 303 connections on LinkedIn. View Nicholas P Istre’s profile on LinkedIn, a professional community of 1 billion members.
Hello #opentelemetry #OTelUnplugged
#fosdem #golang talk on #opentelemetry auto-instrumentation.
"Using the Go SDK is too complicated" (their example was actually a bit hypocritical, as you do not need to manually instrument every HTTP handler).
"Write YAML instead, it's quite simple". 🤔
🚀 OTel Unplugged EU 2026 is LIVE TOMORROW!
The #OpenTelemetry community is gathering in Brussels to: → Discuss real production challenges → Shape breakout topics together → Influence the 2026 roadmap
Follow #OTelUnplugged for highlights throughout the day!
#OpenSource #Observability #FOSDEM
The #OpenTelemetry Collector is a critical component of using #OTel in production. To learn how organizations are deploying, configuring, and monitoring the Collector, we ran a survey in 2025. The results tell us how the Collector is being used today, and how its usage has changed since 2024. Read our latest blog post for all the details!
https://opentelemetry.io/blog/2026/otel-collector-follow-up-survey-analysis/
Following its launch in 2025, the #OpenTelemetry eBPF Instrumentation (OBI) project is planning for an exciting 2026! Read our latest post to learn about the project's goals and how you can get involved with OBI.
#OTel is for everyone...even other open source projects! Find out how #Dapr contributors improved tracing observability with #OpenTelemetry.
https://opentelemetry.io/blog/2026/dapr-workflow-observability/
TIL that Mend Renovate (an alternative to GitHub's Dependabot which can also be self-hosted) supports #opentelemetry. ❤️
docs.renovatebot.com
How to use OpenTelemetry with Renovate
🚨 Less than 2 weeks until OTel Unplugged EU!
We're nearly at capacity. If you're still thinking about it, stop thinking and register 😅
Feb 2 in Brussels. Last chance: https://buff.ly/aaUyQsx
#OpenTelemetry #FOSDEM
Read the statement from #OpenTelemetry about the Node.js denial-of-service issue reported recently. 👇
https://opentelemetry.io/blog/2026/oteljs-nodejs-dos-mitigation/
On-premises data centers, legacy applications, industrial control systems. These are just some of the traditional technology environments that present unique challenges to implementing modern observability. In our latest blog post, find out how to break through the mythical barriers to make formerly opaque systems observable with #OpenTelemetry.
https://opentelemetry.io/blog/2026/demystifying-opentelemetry/
The #OpenTelemetry website and documentation SIG is taking a look back at 2025:
- Eight localization teams produced nearly 75k lines of translation! 🚀
- PRs merged grew 50%! 📈
- Ten contributors were promoted to SIG leadership! 🔟
Looking to get started in open source? Documentation is a great entry point! Check out our new blog post for all the exciting achievements from last year and how you can join us this year.
❓ A question to start the year: what can you learn from analyzing thousands of Slack messages?
The #OpenTelemetry project answers this question in our first blog post of 2026. Using a combination of sentiment analysis, frustration indicators, and topic correlation of aggregated Slack data, we identified the top challenges for #OTel users. We'll be working to address these issues over the course of the year. Come join us!
https://opentelemetry.io/blog/2026/slack-community-insights/
New year resolution: Actually connect with the #OpenTelemetry community IRL ✨
OTel Unplugged EU - Feb 2 in Brussels → Unconference format → You pick the topics → Direct maintainer access → Real roadmap influence
1 month out. Limited spots: https://events.humanitix.com/otelunplugged-eu2026
RT if you're attending or thinking about it! 🔄
Fedify is a #TypeScript framework for building #ActivityPub servers that participate in the #fediverse. It reduces the complexity and boilerplate typically required for ActivityPub implementation while providing comprehensive federation capabilities.
We're excited to announce #Fedify 1.10.0, a focused release that lays critical groundwork for future debugging and observability features. Released on December 24, 2025, this version introduces infrastructure improvements that will enable the upcoming debug dashboard while maintaining full backward compatibility with existing Fedify applications.
This release represents a transitional step toward Fedify 2.0.0, introducing optional capabilities that will become standard in the next major version. The changes focus on enabling richer observability through OpenTelemetry enhancements and adding prefix scanning capabilities to the key–value store interface.
Fedify 1.10.0 significantly expands OpenTelemetry instrumentation with span events that capture detailed ActivityPub data. These enhancements enable richer observability and debugging capabilities without relying solely on span attributes, which are limited to primitive values.
The new span events provide complete activity payloads and verification status, making it possible to build comprehensive debugging tools that show the full context of federation operations:
activitypub.activity.received event on activitypub.inbox span — records the full activity JSON, verification status (activity verified, HTTP signatures verified, Linked Data signatures verified), and actor informationactivitypub.activity.sent event on activitypub.send_activity span — records the full activity JSON and target inbox URLactivitypub.object.fetched event on activitypub.lookup_object span — records the fetched object's type and complete JSON-LD representationAdditionally, Fedify now instruments previously uncovered operations:
activitypub.fetch_document span for document loader operations, tracking URL fetching, HTTP redirects, and final document URLsactivitypub.verify_key_ownership span for cryptographic key ownership verification, recording actor ID, key ID, verification result, and the verification method usedThese instrumentation improvements emerged from work on issue #234 (Real-time ActivityPub debug dashboard). Rather than introducing a custom observer interface as originally proposed in #323, we leveraged Fedify's existing OpenTelemetry infrastructure to capture rich federation data through span events. This approach provides a standards-based foundation that's composable with existing observability tools like Jaeger, Zipkin, and Grafana Tempo.
FedifySpanExporterBuilding on the enhanced instrumentation, Fedify 1.10.0 introduces FedifySpanExporter, a new OpenTelemetry SpanExporter that persists ActivityPub activity traces to a KvStore. This enables distributed tracing support across multiple nodes in a Fedify deployment, which is essential for building debug dashboards that can show complete request flows across web servers and background workers.
The new @fedify/fedify/otel module provides the following types and interfaces:
import { MemoryKvStore } from "@fedify/fedify";
import { FedifySpanExporter } from "@fedify/fedify/otel";
import {
BasicTracerProvider,
SimpleSpanProcessor,
} from "@opentelemetry/sdk-trace-base";
const kv = new MemoryKvStore();
const exporter = new FedifySpanExporter(kv, {
ttl: Temporal.Duration.from({ hours: 1 }),
});
const provider = new BasicTracerProvider();
provider.addSpanProcessor(new SimpleSpanProcessor(exporter));The stored traces can be queried for display in debugging interfaces:
// Get all activities for a specific trace
const activities = await exporter.getActivitiesByTraceId(traceId);
// Get recent traces with summary information
const recentTraces = await exporter.getRecentTraces({ limit: 100 });The exporter supports two storage strategies depending on the KvStore capabilities. When the list() method is available (preferred), it stores individual records with keys like [prefix, traceId, spanId]. When only cas() is available, it uses compare-and-swap operations to append records to arrays stored per trace.
This infrastructure provides the foundation for implementing a comprehensive debug dashboard as a custom SpanExporter, as outlined in the updated implementation plan for issue #234.
list() method for KvStore interfaceFedify 1.10.0 adds an optional list() method to the KvStore interface for enumerating entries by key prefix. This method enables efficient prefix scanning, which is useful for implementing features like distributed trace storage, cache invalidation by prefix, and listing related entries.
interface KvStore {
// ... existing methods
list?(prefix?: KvKey): AsyncIterable<KvStoreListEntry>;
}When the prefix parameter is omitted or empty, list() returns all entries in the store. This is useful for debugging and administrative purposes. All official KvStore implementations have been updated to support this method:
MemoryKvStore — filters in-memory keys by prefixSqliteKvStore — uses LIKE query with JSON key patternPostgresKvStore — uses array slice comparisonRedisKvStore — uses SCAN with pattern matching and key deserializationDenoKvStore — delegates to Deno KV's built-in list() APIWorkersKvStore — uses Cloudflare Workers KV list() with JSON key prefix patternWhile list() is currently optional to give existing custom KvStore implementations time to add support, it will become a required method in Fedify 2.0.0 (tracked in issue #499). This migration path allows implementers to gradually adopt the new capability throughout the 1.x release cycle.
The addition of list() support was implemented in pull request #500, which also included the setup of proper testing infrastructure for WorkersKvStore using Vitest with @cloudflare/vitest-pool-workers.
Thanks to a contribution from Cho Hasang (@crohasang), the @fedify/nestjs package now supports NestJS 11 environments that use Express 5. The peer dependency range for Express has been widened to ^4.0.0 || ^5.0.0, eliminating peer dependency conflicts in modern NestJS projects while maintaining backward compatibility with Express 4.
This change, implemented in pull request #493, keeps the workspace catalog pinned to Express 4 for internal development and test stability while allowing Express 5 in consuming applications.
Fedify 1.10.0 serves as a stepping stone toward the upcoming 2.0.0 release. The optional list() method introduced in this version will become required in 2.0.0, simplifying the interface contract and allowing Fedify internals to rely on prefix scanning being universally available.
The enhanced #OpenTelemetry instrumentation and FedifySpanExporter provide the foundation for implementing the debug dashboard proposed in issue #234. The next steps include building the web dashboard UI with real-time activity lists, filtering, and JSON inspection capabilities—all as a separate package that leverages the standards-based observability infrastructure introduced in this release.
Depending on the development timeline and feature priorities, there may be additional 1.x releases before the 2.0.0 migration. For developers building custom KvStore implementations, now is the time to add list() support to prepare for the eventual 2.0.0 upgrade. The implementation patterns used in the official backends provide clear guidance for various storage strategies.
Special thanks to Cho Hasang (@crohasang) for the NestJS 11 compatibility improvements, and to all community members who provided feedback and testing for the new observability features.
For the complete list of changes, bug fixes, and improvements, please refer to the CHANGES.md file in the repository.
github.com
ActivityPub server framework in TypeScript. Contribute to fedify-dev/fedify development by creating an account on GitHub.
Fedify is a #TypeScript framework for building #ActivityPub servers that participate in the #fediverse. It reduces the complexity and boilerplate typically required for ActivityPub implementation while providing comprehensive federation capabilities.
We're excited to announce #Fedify 1.10.0, a focused release that lays critical groundwork for future debugging and observability features. Released on December 24, 2025, this version introduces infrastructure improvements that will enable the upcoming debug dashboard while maintaining full backward compatibility with existing Fedify applications.
This release represents a transitional step toward Fedify 2.0.0, introducing optional capabilities that will become standard in the next major version. The changes focus on enabling richer observability through OpenTelemetry enhancements and adding prefix scanning capabilities to the key–value store interface.
Fedify 1.10.0 significantly expands OpenTelemetry instrumentation with span events that capture detailed ActivityPub data. These enhancements enable richer observability and debugging capabilities without relying solely on span attributes, which are limited to primitive values.
The new span events provide complete activity payloads and verification status, making it possible to build comprehensive debugging tools that show the full context of federation operations:
activitypub.activity.received event on activitypub.inbox span — records the full activity JSON, verification status (activity verified, HTTP signatures verified, Linked Data signatures verified), and actor informationactivitypub.activity.sent event on activitypub.send_activity span — records the full activity JSON and target inbox URLactivitypub.object.fetched event on activitypub.lookup_object span — records the fetched object's type and complete JSON-LD representationAdditionally, Fedify now instruments previously uncovered operations:
activitypub.fetch_document span for document loader operations, tracking URL fetching, HTTP redirects, and final document URLsactivitypub.verify_key_ownership span for cryptographic key ownership verification, recording actor ID, key ID, verification result, and the verification method usedThese instrumentation improvements emerged from work on issue #234 (Real-time ActivityPub debug dashboard). Rather than introducing a custom observer interface as originally proposed in #323, we leveraged Fedify's existing OpenTelemetry infrastructure to capture rich federation data through span events. This approach provides a standards-based foundation that's composable with existing observability tools like Jaeger, Zipkin, and Grafana Tempo.
FedifySpanExporterBuilding on the enhanced instrumentation, Fedify 1.10.0 introduces FedifySpanExporter, a new OpenTelemetry SpanExporter that persists ActivityPub activity traces to a KvStore. This enables distributed tracing support across multiple nodes in a Fedify deployment, which is essential for building debug dashboards that can show complete request flows across web servers and background workers.
The new @fedify/fedify/otel module provides the following types and interfaces:
import { MemoryKvStore } from "@fedify/fedify";
import { FedifySpanExporter } from "@fedify/fedify/otel";
import {
BasicTracerProvider,
SimpleSpanProcessor,
} from "@opentelemetry/sdk-trace-base";
const kv = new MemoryKvStore();
const exporter = new FedifySpanExporter(kv, {
ttl: Temporal.Duration.from({ hours: 1 }),
});
const provider = new BasicTracerProvider();
provider.addSpanProcessor(new SimpleSpanProcessor(exporter));The stored traces can be queried for display in debugging interfaces:
// Get all activities for a specific trace
const activities = await exporter.getActivitiesByTraceId(traceId);
// Get recent traces with summary information
const recentTraces = await exporter.getRecentTraces({ limit: 100 });The exporter supports two storage strategies depending on the KvStore capabilities. When the list() method is available (preferred), it stores individual records with keys like [prefix, traceId, spanId]. When only cas() is available, it uses compare-and-swap operations to append records to arrays stored per trace.
This infrastructure provides the foundation for implementing a comprehensive debug dashboard as a custom SpanExporter, as outlined in the updated implementation plan for issue #234.
list() method for KvStore interfaceFedify 1.10.0 adds an optional list() method to the KvStore interface for enumerating entries by key prefix. This method enables efficient prefix scanning, which is useful for implementing features like distributed trace storage, cache invalidation by prefix, and listing related entries.
interface KvStore {
// ... existing methods
list?(prefix?: KvKey): AsyncIterable<KvStoreListEntry>;
}When the prefix parameter is omitted or empty, list() returns all entries in the store. This is useful for debugging and administrative purposes. All official KvStore implementations have been updated to support this method:
MemoryKvStore — filters in-memory keys by prefixSqliteKvStore — uses LIKE query with JSON key patternPostgresKvStore — uses array slice comparisonRedisKvStore — uses SCAN with pattern matching and key deserializationDenoKvStore — delegates to Deno KV's built-in list() APIWorkersKvStore — uses Cloudflare Workers KV list() with JSON key prefix patternWhile list() is currently optional to give existing custom KvStore implementations time to add support, it will become a required method in Fedify 2.0.0 (tracked in issue #499). This migration path allows implementers to gradually adopt the new capability throughout the 1.x release cycle.
The addition of list() support was implemented in pull request #500, which also included the setup of proper testing infrastructure for WorkersKvStore using Vitest with @cloudflare/vitest-pool-workers.
Thanks to a contribution from Cho Hasang (@crohasang), the @fedify/nestjs package now supports NestJS 11 environments that use Express 5. The peer dependency range for Express has been widened to ^4.0.0 || ^5.0.0, eliminating peer dependency conflicts in modern NestJS projects while maintaining backward compatibility with Express 4.
This change, implemented in pull request #493, keeps the workspace catalog pinned to Express 4 for internal development and test stability while allowing Express 5 in consuming applications.
Fedify 1.10.0 serves as a stepping stone toward the upcoming 2.0.0 release. The optional list() method introduced in this version will become required in 2.0.0, simplifying the interface contract and allowing Fedify internals to rely on prefix scanning being universally available.
The enhanced #OpenTelemetry instrumentation and FedifySpanExporter provide the foundation for implementing the debug dashboard proposed in issue #234. The next steps include building the web dashboard UI with real-time activity lists, filtering, and JSON inspection capabilities—all as a separate package that leverages the standards-based observability infrastructure introduced in this release.
Depending on the development timeline and feature priorities, there may be additional 1.x releases before the 2.0.0 migration. For developers building custom KvStore implementations, now is the time to add list() support to prepare for the eventual 2.0.0 upgrade. The implementation patterns used in the official backends provide clear guidance for various storage strategies.
Special thanks to Cho Hasang (@crohasang) for the NestJS 11 compatibility improvements, and to all community members who provided feedback and testing for the new observability features.
For the complete list of changes, bug fixes, and improvements, please refer to the CHANGES.md file in the repository.
github.com
ActivityPub server framework in TypeScript. Contribute to fedify-dev/fedify development by creating an account on GitHub.
Fedify is a #TypeScript framework for building #ActivityPub servers that participate in the #fediverse. It reduces the complexity and boilerplate typically required for ActivityPub implementation while providing comprehensive federation capabilities.
We're excited to announce #Fedify 1.10.0, a focused release that lays critical groundwork for future debugging and observability features. Released on December 24, 2025, this version introduces infrastructure improvements that will enable the upcoming debug dashboard while maintaining full backward compatibility with existing Fedify applications.
This release represents a transitional step toward Fedify 2.0.0, introducing optional capabilities that will become standard in the next major version. The changes focus on enabling richer observability through OpenTelemetry enhancements and adding prefix scanning capabilities to the key–value store interface.
Fedify 1.10.0 significantly expands OpenTelemetry instrumentation with span events that capture detailed ActivityPub data. These enhancements enable richer observability and debugging capabilities without relying solely on span attributes, which are limited to primitive values.
The new span events provide complete activity payloads and verification status, making it possible to build comprehensive debugging tools that show the full context of federation operations:
activitypub.activity.received event on activitypub.inbox span — records the full activity JSON, verification status (activity verified, HTTP signatures verified, Linked Data signatures verified), and actor informationactivitypub.activity.sent event on activitypub.send_activity span — records the full activity JSON and target inbox URLactivitypub.object.fetched event on activitypub.lookup_object span — records the fetched object's type and complete JSON-LD representationAdditionally, Fedify now instruments previously uncovered operations:
activitypub.fetch_document span for document loader operations, tracking URL fetching, HTTP redirects, and final document URLsactivitypub.verify_key_ownership span for cryptographic key ownership verification, recording actor ID, key ID, verification result, and the verification method usedThese instrumentation improvements emerged from work on issue #234 (Real-time ActivityPub debug dashboard). Rather than introducing a custom observer interface as originally proposed in #323, we leveraged Fedify's existing OpenTelemetry infrastructure to capture rich federation data through span events. This approach provides a standards-based foundation that's composable with existing observability tools like Jaeger, Zipkin, and Grafana Tempo.
FedifySpanExporterBuilding on the enhanced instrumentation, Fedify 1.10.0 introduces FedifySpanExporter, a new OpenTelemetry SpanExporter that persists ActivityPub activity traces to a KvStore. This enables distributed tracing support across multiple nodes in a Fedify deployment, which is essential for building debug dashboards that can show complete request flows across web servers and background workers.
The new @fedify/fedify/otel module provides the following types and interfaces:
import { MemoryKvStore } from "@fedify/fedify";
import { FedifySpanExporter } from "@fedify/fedify/otel";
import {
BasicTracerProvider,
SimpleSpanProcessor,
} from "@opentelemetry/sdk-trace-base";
const kv = new MemoryKvStore();
const exporter = new FedifySpanExporter(kv, {
ttl: Temporal.Duration.from({ hours: 1 }),
});
const provider = new BasicTracerProvider();
provider.addSpanProcessor(new SimpleSpanProcessor(exporter));The stored traces can be queried for display in debugging interfaces:
// Get all activities for a specific trace
const activities = await exporter.getActivitiesByTraceId(traceId);
// Get recent traces with summary information
const recentTraces = await exporter.getRecentTraces({ limit: 100 });The exporter supports two storage strategies depending on the KvStore capabilities. When the list() method is available (preferred), it stores individual records with keys like [prefix, traceId, spanId]. When only cas() is available, it uses compare-and-swap operations to append records to arrays stored per trace.
This infrastructure provides the foundation for implementing a comprehensive debug dashboard as a custom SpanExporter, as outlined in the updated implementation plan for issue #234.
list() method for KvStore interfaceFedify 1.10.0 adds an optional list() method to the KvStore interface for enumerating entries by key prefix. This method enables efficient prefix scanning, which is useful for implementing features like distributed trace storage, cache invalidation by prefix, and listing related entries.
interface KvStore {
// ... existing methods
list?(prefix?: KvKey): AsyncIterable<KvStoreListEntry>;
}When the prefix parameter is omitted or empty, list() returns all entries in the store. This is useful for debugging and administrative purposes. All official KvStore implementations have been updated to support this method:
MemoryKvStore — filters in-memory keys by prefixSqliteKvStore — uses LIKE query with JSON key patternPostgresKvStore — uses array slice comparisonRedisKvStore — uses SCAN with pattern matching and key deserializationDenoKvStore — delegates to Deno KV's built-in list() APIWorkersKvStore — uses Cloudflare Workers KV list() with JSON key prefix patternWhile list() is currently optional to give existing custom KvStore implementations time to add support, it will become a required method in Fedify 2.0.0 (tracked in issue #499). This migration path allows implementers to gradually adopt the new capability throughout the 1.x release cycle.
The addition of list() support was implemented in pull request #500, which also included the setup of proper testing infrastructure for WorkersKvStore using Vitest with @cloudflare/vitest-pool-workers.
Thanks to a contribution from Cho Hasang (@crohasang), the @fedify/nestjs package now supports NestJS 11 environments that use Express 5. The peer dependency range for Express has been widened to ^4.0.0 || ^5.0.0, eliminating peer dependency conflicts in modern NestJS projects while maintaining backward compatibility with Express 4.
This change, implemented in pull request #493, keeps the workspace catalog pinned to Express 4 for internal development and test stability while allowing Express 5 in consuming applications.
Fedify 1.10.0 serves as a stepping stone toward the upcoming 2.0.0 release. The optional list() method introduced in this version will become required in 2.0.0, simplifying the interface contract and allowing Fedify internals to rely on prefix scanning being universally available.
The enhanced #OpenTelemetry instrumentation and FedifySpanExporter provide the foundation for implementing the debug dashboard proposed in issue #234. The next steps include building the web dashboard UI with real-time activity lists, filtering, and JSON inspection capabilities—all as a separate package that leverages the standards-based observability infrastructure introduced in this release.
Depending on the development timeline and feature priorities, there may be additional 1.x releases before the 2.0.0 migration. For developers building custom KvStore implementations, now is the time to add list() support to prepare for the eventual 2.0.0 upgrade. The implementation patterns used in the official backends provide clear guidance for various storage strategies.
Special thanks to Cho Hasang (@crohasang) for the NestJS 11 compatibility improvements, and to all community members who provided feedback and testing for the new observability features.
For the complete list of changes, bug fixes, and improvements, please refer to the CHANGES.md file in the repository.
github.com
ActivityPub server framework in TypeScript. Contribute to fedify-dev/fedify development by creating an account on GitHub.
Fedify is a #TypeScript framework for building #ActivityPub servers that participate in the #fediverse. It reduces the complexity and boilerplate typically required for ActivityPub implementation while providing comprehensive federation capabilities.
We're excited to announce #Fedify 1.10.0, a focused release that lays critical groundwork for future debugging and observability features. Released on December 24, 2025, this version introduces infrastructure improvements that will enable the upcoming debug dashboard while maintaining full backward compatibility with existing Fedify applications.
This release represents a transitional step toward Fedify 2.0.0, introducing optional capabilities that will become standard in the next major version. The changes focus on enabling richer observability through OpenTelemetry enhancements and adding prefix scanning capabilities to the key–value store interface.
Fedify 1.10.0 significantly expands OpenTelemetry instrumentation with span events that capture detailed ActivityPub data. These enhancements enable richer observability and debugging capabilities without relying solely on span attributes, which are limited to primitive values.
The new span events provide complete activity payloads and verification status, making it possible to build comprehensive debugging tools that show the full context of federation operations:
activitypub.activity.received event on activitypub.inbox span — records the full activity JSON, verification status (activity verified, HTTP signatures verified, Linked Data signatures verified), and actor informationactivitypub.activity.sent event on activitypub.send_activity span — records the full activity JSON and target inbox URLactivitypub.object.fetched event on activitypub.lookup_object span — records the fetched object's type and complete JSON-LD representationAdditionally, Fedify now instruments previously uncovered operations:
activitypub.fetch_document span for document loader operations, tracking URL fetching, HTTP redirects, and final document URLsactivitypub.verify_key_ownership span for cryptographic key ownership verification, recording actor ID, key ID, verification result, and the verification method usedThese instrumentation improvements emerged from work on issue #234 (Real-time ActivityPub debug dashboard). Rather than introducing a custom observer interface as originally proposed in #323, we leveraged Fedify's existing OpenTelemetry infrastructure to capture rich federation data through span events. This approach provides a standards-based foundation that's composable with existing observability tools like Jaeger, Zipkin, and Grafana Tempo.
FedifySpanExporterBuilding on the enhanced instrumentation, Fedify 1.10.0 introduces FedifySpanExporter, a new OpenTelemetry SpanExporter that persists ActivityPub activity traces to a KvStore. This enables distributed tracing support across multiple nodes in a Fedify deployment, which is essential for building debug dashboards that can show complete request flows across web servers and background workers.
The new @fedify/fedify/otel module provides the following types and interfaces:
import { MemoryKvStore } from "@fedify/fedify";
import { FedifySpanExporter } from "@fedify/fedify/otel";
import {
BasicTracerProvider,
SimpleSpanProcessor,
} from "@opentelemetry/sdk-trace-base";
const kv = new MemoryKvStore();
const exporter = new FedifySpanExporter(kv, {
ttl: Temporal.Duration.from({ hours: 1 }),
});
const provider = new BasicTracerProvider();
provider.addSpanProcessor(new SimpleSpanProcessor(exporter));The stored traces can be queried for display in debugging interfaces:
// Get all activities for a specific trace
const activities = await exporter.getActivitiesByTraceId(traceId);
// Get recent traces with summary information
const recentTraces = await exporter.getRecentTraces({ limit: 100 });The exporter supports two storage strategies depending on the KvStore capabilities. When the list() method is available (preferred), it stores individual records with keys like [prefix, traceId, spanId]. When only cas() is available, it uses compare-and-swap operations to append records to arrays stored per trace.
This infrastructure provides the foundation for implementing a comprehensive debug dashboard as a custom SpanExporter, as outlined in the updated implementation plan for issue #234.
list() method for KvStore interfaceFedify 1.10.0 adds an optional list() method to the KvStore interface for enumerating entries by key prefix. This method enables efficient prefix scanning, which is useful for implementing features like distributed trace storage, cache invalidation by prefix, and listing related entries.
interface KvStore {
// ... existing methods
list?(prefix?: KvKey): AsyncIterable<KvStoreListEntry>;
}When the prefix parameter is omitted or empty, list() returns all entries in the store. This is useful for debugging and administrative purposes. All official KvStore implementations have been updated to support this method:
MemoryKvStore — filters in-memory keys by prefixSqliteKvStore — uses LIKE query with JSON key patternPostgresKvStore — uses array slice comparisonRedisKvStore — uses SCAN with pattern matching and key deserializationDenoKvStore — delegates to Deno KV's built-in list() APIWorkersKvStore — uses Cloudflare Workers KV list() with JSON key prefix patternWhile list() is currently optional to give existing custom KvStore implementations time to add support, it will become a required method in Fedify 2.0.0 (tracked in issue #499). This migration path allows implementers to gradually adopt the new capability throughout the 1.x release cycle.
The addition of list() support was implemented in pull request #500, which also included the setup of proper testing infrastructure for WorkersKvStore using Vitest with @cloudflare/vitest-pool-workers.
Thanks to a contribution from Cho Hasang (@crohasang), the @fedify/nestjs package now supports NestJS 11 environments that use Express 5. The peer dependency range for Express has been widened to ^4.0.0 || ^5.0.0, eliminating peer dependency conflicts in modern NestJS projects while maintaining backward compatibility with Express 4.
This change, implemented in pull request #493, keeps the workspace catalog pinned to Express 4 for internal development and test stability while allowing Express 5 in consuming applications.
Fedify 1.10.0 serves as a stepping stone toward the upcoming 2.0.0 release. The optional list() method introduced in this version will become required in 2.0.0, simplifying the interface contract and allowing Fedify internals to rely on prefix scanning being universally available.
The enhanced #OpenTelemetry instrumentation and FedifySpanExporter provide the foundation for implementing the debug dashboard proposed in issue #234. The next steps include building the web dashboard UI with real-time activity lists, filtering, and JSON inspection capabilities—all as a separate package that leverages the standards-based observability infrastructure introduced in this release.
Depending on the development timeline and feature priorities, there may be additional 1.x releases before the 2.0.0 migration. For developers building custom KvStore implementations, now is the time to add list() support to prepare for the eventual 2.0.0 upgrade. The implementation patterns used in the official backends provide clear guidance for various storage strategies.
Special thanks to Cho Hasang (@crohasang) for the NestJS 11 compatibility improvements, and to all community members who provided feedback and testing for the new observability features.
For the complete list of changes, bug fixes, and improvements, please refer to the CHANGES.md file in the repository.
github.com
ActivityPub server framework in TypeScript. Contribute to fedify-dev/fedify development by creating an account on GitHub.
Fedify is a #TypeScript framework for building #ActivityPub servers that participate in the #fediverse. It reduces the complexity and boilerplate typically required for ActivityPub implementation while providing comprehensive federation capabilities.
We're excited to announce #Fedify 1.10.0, a focused release that lays critical groundwork for future debugging and observability features. Released on December 24, 2025, this version introduces infrastructure improvements that will enable the upcoming debug dashboard while maintaining full backward compatibility with existing Fedify applications.
This release represents a transitional step toward Fedify 2.0.0, introducing optional capabilities that will become standard in the next major version. The changes focus on enabling richer observability through OpenTelemetry enhancements and adding prefix scanning capabilities to the key–value store interface.
Fedify 1.10.0 significantly expands OpenTelemetry instrumentation with span events that capture detailed ActivityPub data. These enhancements enable richer observability and debugging capabilities without relying solely on span attributes, which are limited to primitive values.
The new span events provide complete activity payloads and verification status, making it possible to build comprehensive debugging tools that show the full context of federation operations:
activitypub.activity.received event on activitypub.inbox span — records the full activity JSON, verification status (activity verified, HTTP signatures verified, Linked Data signatures verified), and actor informationactivitypub.activity.sent event on activitypub.send_activity span — records the full activity JSON and target inbox URLactivitypub.object.fetched event on activitypub.lookup_object span — records the fetched object's type and complete JSON-LD representationAdditionally, Fedify now instruments previously uncovered operations:
activitypub.fetch_document span for document loader operations, tracking URL fetching, HTTP redirects, and final document URLsactivitypub.verify_key_ownership span for cryptographic key ownership verification, recording actor ID, key ID, verification result, and the verification method usedThese instrumentation improvements emerged from work on issue #234 (Real-time ActivityPub debug dashboard). Rather than introducing a custom observer interface as originally proposed in #323, we leveraged Fedify's existing OpenTelemetry infrastructure to capture rich federation data through span events. This approach provides a standards-based foundation that's composable with existing observability tools like Jaeger, Zipkin, and Grafana Tempo.
FedifySpanExporterBuilding on the enhanced instrumentation, Fedify 1.10.0 introduces FedifySpanExporter, a new OpenTelemetry SpanExporter that persists ActivityPub activity traces to a KvStore. This enables distributed tracing support across multiple nodes in a Fedify deployment, which is essential for building debug dashboards that can show complete request flows across web servers and background workers.
The new @fedify/fedify/otel module provides the following types and interfaces:
import { MemoryKvStore } from "@fedify/fedify";
import { FedifySpanExporter } from "@fedify/fedify/otel";
import {
BasicTracerProvider,
SimpleSpanProcessor,
} from "@opentelemetry/sdk-trace-base";
const kv = new MemoryKvStore();
const exporter = new FedifySpanExporter(kv, {
ttl: Temporal.Duration.from({ hours: 1 }),
});
const provider = new BasicTracerProvider();
provider.addSpanProcessor(new SimpleSpanProcessor(exporter));The stored traces can be queried for display in debugging interfaces:
// Get all activities for a specific trace
const activities = await exporter.getActivitiesByTraceId(traceId);
// Get recent traces with summary information
const recentTraces = await exporter.getRecentTraces({ limit: 100 });The exporter supports two storage strategies depending on the KvStore capabilities. When the list() method is available (preferred), it stores individual records with keys like [prefix, traceId, spanId]. When only cas() is available, it uses compare-and-swap operations to append records to arrays stored per trace.
This infrastructure provides the foundation for implementing a comprehensive debug dashboard as a custom SpanExporter, as outlined in the updated implementation plan for issue #234.
list() method for KvStore interfaceFedify 1.10.0 adds an optional list() method to the KvStore interface for enumerating entries by key prefix. This method enables efficient prefix scanning, which is useful for implementing features like distributed trace storage, cache invalidation by prefix, and listing related entries.
interface KvStore {
// ... existing methods
list?(prefix?: KvKey): AsyncIterable<KvStoreListEntry>;
}When the prefix parameter is omitted or empty, list() returns all entries in the store. This is useful for debugging and administrative purposes. All official KvStore implementations have been updated to support this method:
MemoryKvStore — filters in-memory keys by prefixSqliteKvStore — uses LIKE query with JSON key patternPostgresKvStore — uses array slice comparisonRedisKvStore — uses SCAN with pattern matching and key deserializationDenoKvStore — delegates to Deno KV's built-in list() APIWorkersKvStore — uses Cloudflare Workers KV list() with JSON key prefix patternWhile list() is currently optional to give existing custom KvStore implementations time to add support, it will become a required method in Fedify 2.0.0 (tracked in issue #499). This migration path allows implementers to gradually adopt the new capability throughout the 1.x release cycle.
The addition of list() support was implemented in pull request #500, which also included the setup of proper testing infrastructure for WorkersKvStore using Vitest with @cloudflare/vitest-pool-workers.
Thanks to a contribution from Cho Hasang (@crohasang), the @fedify/nestjs package now supports NestJS 11 environments that use Express 5. The peer dependency range for Express has been widened to ^4.0.0 || ^5.0.0, eliminating peer dependency conflicts in modern NestJS projects while maintaining backward compatibility with Express 4.
This change, implemented in pull request #493, keeps the workspace catalog pinned to Express 4 for internal development and test stability while allowing Express 5 in consuming applications.
Fedify 1.10.0 serves as a stepping stone toward the upcoming 2.0.0 release. The optional list() method introduced in this version will become required in 2.0.0, simplifying the interface contract and allowing Fedify internals to rely on prefix scanning being universally available.
The enhanced #OpenTelemetry instrumentation and FedifySpanExporter provide the foundation for implementing the debug dashboard proposed in issue #234. The next steps include building the web dashboard UI with real-time activity lists, filtering, and JSON inspection capabilities—all as a separate package that leverages the standards-based observability infrastructure introduced in this release.
Depending on the development timeline and feature priorities, there may be additional 1.x releases before the 2.0.0 migration. For developers building custom KvStore implementations, now is the time to add list() support to prepare for the eventual 2.0.0 upgrade. The implementation patterns used in the official backends provide clear guidance for various storage strategies.
Special thanks to Cho Hasang (@crohasang) for the NestJS 11 compatibility improvements, and to all community members who provided feedback and testing for the new observability features.
For the complete list of changes, bug fixes, and improvements, please refer to the CHANGES.md file in the repository.
github.com
ActivityPub server framework in TypeScript. Contribute to fedify-dev/fedify development by creating an account on GitHub.
Fedify is a #TypeScript framework for building #ActivityPub servers that participate in the #fediverse. It reduces the complexity and boilerplate typically required for ActivityPub implementation while providing comprehensive federation capabilities.
We're excited to announce #Fedify 1.10.0, a focused release that lays critical groundwork for future debugging and observability features. Released on December 24, 2025, this version introduces infrastructure improvements that will enable the upcoming debug dashboard while maintaining full backward compatibility with existing Fedify applications.
This release represents a transitional step toward Fedify 2.0.0, introducing optional capabilities that will become standard in the next major version. The changes focus on enabling richer observability through OpenTelemetry enhancements and adding prefix scanning capabilities to the key–value store interface.
Fedify 1.10.0 significantly expands OpenTelemetry instrumentation with span events that capture detailed ActivityPub data. These enhancements enable richer observability and debugging capabilities without relying solely on span attributes, which are limited to primitive values.
The new span events provide complete activity payloads and verification status, making it possible to build comprehensive debugging tools that show the full context of federation operations:
activitypub.activity.received event on activitypub.inbox span — records the full activity JSON, verification status (activity verified, HTTP signatures verified, Linked Data signatures verified), and actor informationactivitypub.activity.sent event on activitypub.send_activity span — records the full activity JSON and target inbox URLactivitypub.object.fetched event on activitypub.lookup_object span — records the fetched object's type and complete JSON-LD representationAdditionally, Fedify now instruments previously uncovered operations:
activitypub.fetch_document span for document loader operations, tracking URL fetching, HTTP redirects, and final document URLsactivitypub.verify_key_ownership span for cryptographic key ownership verification, recording actor ID, key ID, verification result, and the verification method usedThese instrumentation improvements emerged from work on issue #234 (Real-time ActivityPub debug dashboard). Rather than introducing a custom observer interface as originally proposed in #323, we leveraged Fedify's existing OpenTelemetry infrastructure to capture rich federation data through span events. This approach provides a standards-based foundation that's composable with existing observability tools like Jaeger, Zipkin, and Grafana Tempo.
FedifySpanExporterBuilding on the enhanced instrumentation, Fedify 1.10.0 introduces FedifySpanExporter, a new OpenTelemetry SpanExporter that persists ActivityPub activity traces to a KvStore. This enables distributed tracing support across multiple nodes in a Fedify deployment, which is essential for building debug dashboards that can show complete request flows across web servers and background workers.
The new @fedify/fedify/otel module provides the following types and interfaces:
import { MemoryKvStore } from "@fedify/fedify";
import { FedifySpanExporter } from "@fedify/fedify/otel";
import {
BasicTracerProvider,
SimpleSpanProcessor,
} from "@opentelemetry/sdk-trace-base";
const kv = new MemoryKvStore();
const exporter = new FedifySpanExporter(kv, {
ttl: Temporal.Duration.from({ hours: 1 }),
});
const provider = new BasicTracerProvider();
provider.addSpanProcessor(new SimpleSpanProcessor(exporter));The stored traces can be queried for display in debugging interfaces:
// Get all activities for a specific trace
const activities = await exporter.getActivitiesByTraceId(traceId);
// Get recent traces with summary information
const recentTraces = await exporter.getRecentTraces({ limit: 100 });The exporter supports two storage strategies depending on the KvStore capabilities. When the list() method is available (preferred), it stores individual records with keys like [prefix, traceId, spanId]. When only cas() is available, it uses compare-and-swap operations to append records to arrays stored per trace.
This infrastructure provides the foundation for implementing a comprehensive debug dashboard as a custom SpanExporter, as outlined in the updated implementation plan for issue #234.
list() method for KvStore interfaceFedify 1.10.0 adds an optional list() method to the KvStore interface for enumerating entries by key prefix. This method enables efficient prefix scanning, which is useful for implementing features like distributed trace storage, cache invalidation by prefix, and listing related entries.
interface KvStore {
// ... existing methods
list?(prefix?: KvKey): AsyncIterable<KvStoreListEntry>;
}When the prefix parameter is omitted or empty, list() returns all entries in the store. This is useful for debugging and administrative purposes. All official KvStore implementations have been updated to support this method:
MemoryKvStore — filters in-memory keys by prefixSqliteKvStore — uses LIKE query with JSON key patternPostgresKvStore — uses array slice comparisonRedisKvStore — uses SCAN with pattern matching and key deserializationDenoKvStore — delegates to Deno KV's built-in list() APIWorkersKvStore — uses Cloudflare Workers KV list() with JSON key prefix patternWhile list() is currently optional to give existing custom KvStore implementations time to add support, it will become a required method in Fedify 2.0.0 (tracked in issue #499). This migration path allows implementers to gradually adopt the new capability throughout the 1.x release cycle.
The addition of list() support was implemented in pull request #500, which also included the setup of proper testing infrastructure for WorkersKvStore using Vitest with @cloudflare/vitest-pool-workers.
Thanks to a contribution from Cho Hasang (@crohasang), the @fedify/nestjs package now supports NestJS 11 environments that use Express 5. The peer dependency range for Express has been widened to ^4.0.0 || ^5.0.0, eliminating peer dependency conflicts in modern NestJS projects while maintaining backward compatibility with Express 4.
This change, implemented in pull request #493, keeps the workspace catalog pinned to Express 4 for internal development and test stability while allowing Express 5 in consuming applications.
Fedify 1.10.0 serves as a stepping stone toward the upcoming 2.0.0 release. The optional list() method introduced in this version will become required in 2.0.0, simplifying the interface contract and allowing Fedify internals to rely on prefix scanning being universally available.
The enhanced #OpenTelemetry instrumentation and FedifySpanExporter provide the foundation for implementing the debug dashboard proposed in issue #234. The next steps include building the web dashboard UI with real-time activity lists, filtering, and JSON inspection capabilities—all as a separate package that leverages the standards-based observability infrastructure introduced in this release.
Depending on the development timeline and feature priorities, there may be additional 1.x releases before the 2.0.0 migration. For developers building custom KvStore implementations, now is the time to add list() support to prepare for the eventual 2.0.0 upgrade. The implementation patterns used in the official backends provide clear guidance for various storage strategies.
Special thanks to Cho Hasang (@crohasang) for the NestJS 11 compatibility improvements, and to all community members who provided feedback and testing for the new observability features.
For the complete list of changes, bug fixes, and improvements, please refer to the CHANGES.md file in the repository.
github.com
ActivityPub server framework in TypeScript. Contribute to fedify-dev/fedify development by creating an account on GitHub.
Fedify is a #TypeScript framework for building #ActivityPub servers that participate in the #fediverse. It reduces the complexity and boilerplate typically required for ActivityPub implementation while providing comprehensive federation capabilities.
We're excited to announce #Fedify 1.10.0, a focused release that lays critical groundwork for future debugging and observability features. Released on December 24, 2025, this version introduces infrastructure improvements that will enable the upcoming debug dashboard while maintaining full backward compatibility with existing Fedify applications.
This release represents a transitional step toward Fedify 2.0.0, introducing optional capabilities that will become standard in the next major version. The changes focus on enabling richer observability through OpenTelemetry enhancements and adding prefix scanning capabilities to the key–value store interface.
Fedify 1.10.0 significantly expands OpenTelemetry instrumentation with span events that capture detailed ActivityPub data. These enhancements enable richer observability and debugging capabilities without relying solely on span attributes, which are limited to primitive values.
The new span events provide complete activity payloads and verification status, making it possible to build comprehensive debugging tools that show the full context of federation operations:
activitypub.activity.received event on activitypub.inbox span — records the full activity JSON, verification status (activity verified, HTTP signatures verified, Linked Data signatures verified), and actor informationactivitypub.activity.sent event on activitypub.send_activity span — records the full activity JSON and target inbox URLactivitypub.object.fetched event on activitypub.lookup_object span — records the fetched object's type and complete JSON-LD representationAdditionally, Fedify now instruments previously uncovered operations:
activitypub.fetch_document span for document loader operations, tracking URL fetching, HTTP redirects, and final document URLsactivitypub.verify_key_ownership span for cryptographic key ownership verification, recording actor ID, key ID, verification result, and the verification method usedThese instrumentation improvements emerged from work on issue #234 (Real-time ActivityPub debug dashboard). Rather than introducing a custom observer interface as originally proposed in #323, we leveraged Fedify's existing OpenTelemetry infrastructure to capture rich federation data through span events. This approach provides a standards-based foundation that's composable with existing observability tools like Jaeger, Zipkin, and Grafana Tempo.
FedifySpanExporterBuilding on the enhanced instrumentation, Fedify 1.10.0 introduces FedifySpanExporter, a new OpenTelemetry SpanExporter that persists ActivityPub activity traces to a KvStore. This enables distributed tracing support across multiple nodes in a Fedify deployment, which is essential for building debug dashboards that can show complete request flows across web servers and background workers.
The new @fedify/fedify/otel module provides the following types and interfaces:
import { MemoryKvStore } from "@fedify/fedify";
import { FedifySpanExporter } from "@fedify/fedify/otel";
import {
BasicTracerProvider,
SimpleSpanProcessor,
} from "@opentelemetry/sdk-trace-base";
const kv = new MemoryKvStore();
const exporter = new FedifySpanExporter(kv, {
ttl: Temporal.Duration.from({ hours: 1 }),
});
const provider = new BasicTracerProvider();
provider.addSpanProcessor(new SimpleSpanProcessor(exporter));The stored traces can be queried for display in debugging interfaces:
// Get all activities for a specific trace
const activities = await exporter.getActivitiesByTraceId(traceId);
// Get recent traces with summary information
const recentTraces = await exporter.getRecentTraces({ limit: 100 });The exporter supports two storage strategies depending on the KvStore capabilities. When the list() method is available (preferred), it stores individual records with keys like [prefix, traceId, spanId]. When only cas() is available, it uses compare-and-swap operations to append records to arrays stored per trace.
This infrastructure provides the foundation for implementing a comprehensive debug dashboard as a custom SpanExporter, as outlined in the updated implementation plan for issue #234.
list() method for KvStore interfaceFedify 1.10.0 adds an optional list() method to the KvStore interface for enumerating entries by key prefix. This method enables efficient prefix scanning, which is useful for implementing features like distributed trace storage, cache invalidation by prefix, and listing related entries.
interface KvStore {
// ... existing methods
list?(prefix?: KvKey): AsyncIterable<KvStoreListEntry>;
}When the prefix parameter is omitted or empty, list() returns all entries in the store. This is useful for debugging and administrative purposes. All official KvStore implementations have been updated to support this method:
MemoryKvStore — filters in-memory keys by prefixSqliteKvStore — uses LIKE query with JSON key patternPostgresKvStore — uses array slice comparisonRedisKvStore — uses SCAN with pattern matching and key deserializationDenoKvStore — delegates to Deno KV's built-in list() APIWorkersKvStore — uses Cloudflare Workers KV list() with JSON key prefix patternWhile list() is currently optional to give existing custom KvStore implementations time to add support, it will become a required method in Fedify 2.0.0 (tracked in issue #499). This migration path allows implementers to gradually adopt the new capability throughout the 1.x release cycle.
The addition of list() support was implemented in pull request #500, which also included the setup of proper testing infrastructure for WorkersKvStore using Vitest with @cloudflare/vitest-pool-workers.
Thanks to a contribution from Cho Hasang (@crohasang), the @fedify/nestjs package now supports NestJS 11 environments that use Express 5. The peer dependency range for Express has been widened to ^4.0.0 || ^5.0.0, eliminating peer dependency conflicts in modern NestJS projects while maintaining backward compatibility with Express 4.
This change, implemented in pull request #493, keeps the workspace catalog pinned to Express 4 for internal development and test stability while allowing Express 5 in consuming applications.
Fedify 1.10.0 serves as a stepping stone toward the upcoming 2.0.0 release. The optional list() method introduced in this version will become required in 2.0.0, simplifying the interface contract and allowing Fedify internals to rely on prefix scanning being universally available.
The enhanced #OpenTelemetry instrumentation and FedifySpanExporter provide the foundation for implementing the debug dashboard proposed in issue #234. The next steps include building the web dashboard UI with real-time activity lists, filtering, and JSON inspection capabilities—all as a separate package that leverages the standards-based observability infrastructure introduced in this release.
Depending on the development timeline and feature priorities, there may be additional 1.x releases before the 2.0.0 migration. For developers building custom KvStore implementations, now is the time to add list() support to prepare for the eventual 2.0.0 upgrade. The implementation patterns used in the official backends provide clear guidance for various storage strategies.
Special thanks to Cho Hasang (@crohasang) for the NestJS 11 compatibility improvements, and to all community members who provided feedback and testing for the new observability features.
For the complete list of changes, bug fixes, and improvements, please refer to the CHANGES.md file in the repository.
github.com
ActivityPub server framework in TypeScript. Contribute to fedify-dev/fedify development by creating an account on GitHub.
Fedify is a #TypeScript framework for building #ActivityPub servers that participate in the #fediverse. It reduces the complexity and boilerplate typically required for ActivityPub implementation while providing comprehensive federation capabilities.
We're excited to announce #Fedify 1.10.0, a focused release that lays critical groundwork for future debugging and observability features. Released on December 24, 2025, this version introduces infrastructure improvements that will enable the upcoming debug dashboard while maintaining full backward compatibility with existing Fedify applications.
This release represents a transitional step toward Fedify 2.0.0, introducing optional capabilities that will become standard in the next major version. The changes focus on enabling richer observability through OpenTelemetry enhancements and adding prefix scanning capabilities to the key–value store interface.
Fedify 1.10.0 significantly expands OpenTelemetry instrumentation with span events that capture detailed ActivityPub data. These enhancements enable richer observability and debugging capabilities without relying solely on span attributes, which are limited to primitive values.
The new span events provide complete activity payloads and verification status, making it possible to build comprehensive debugging tools that show the full context of federation operations:
activitypub.activity.received event on activitypub.inbox span — records the full activity JSON, verification status (activity verified, HTTP signatures verified, Linked Data signatures verified), and actor informationactivitypub.activity.sent event on activitypub.send_activity span — records the full activity JSON and target inbox URLactivitypub.object.fetched event on activitypub.lookup_object span — records the fetched object's type and complete JSON-LD representationAdditionally, Fedify now instruments previously uncovered operations:
activitypub.fetch_document span for document loader operations, tracking URL fetching, HTTP redirects, and final document URLsactivitypub.verify_key_ownership span for cryptographic key ownership verification, recording actor ID, key ID, verification result, and the verification method usedThese instrumentation improvements emerged from work on issue #234 (Real-time ActivityPub debug dashboard). Rather than introducing a custom observer interface as originally proposed in #323, we leveraged Fedify's existing OpenTelemetry infrastructure to capture rich federation data through span events. This approach provides a standards-based foundation that's composable with existing observability tools like Jaeger, Zipkin, and Grafana Tempo.
FedifySpanExporterBuilding on the enhanced instrumentation, Fedify 1.10.0 introduces FedifySpanExporter, a new OpenTelemetry SpanExporter that persists ActivityPub activity traces to a KvStore. This enables distributed tracing support across multiple nodes in a Fedify deployment, which is essential for building debug dashboards that can show complete request flows across web servers and background workers.
The new @fedify/fedify/otel module provides the following types and interfaces:
import { MemoryKvStore } from "@fedify/fedify";
import { FedifySpanExporter } from "@fedify/fedify/otel";
import {
BasicTracerProvider,
SimpleSpanProcessor,
} from "@opentelemetry/sdk-trace-base";
const kv = new MemoryKvStore();
const exporter = new FedifySpanExporter(kv, {
ttl: Temporal.Duration.from({ hours: 1 }),
});
const provider = new BasicTracerProvider();
provider.addSpanProcessor(new SimpleSpanProcessor(exporter));The stored traces can be queried for display in debugging interfaces:
// Get all activities for a specific trace
const activities = await exporter.getActivitiesByTraceId(traceId);
// Get recent traces with summary information
const recentTraces = await exporter.getRecentTraces({ limit: 100 });The exporter supports two storage strategies depending on the KvStore capabilities. When the list() method is available (preferred), it stores individual records with keys like [prefix, traceId, spanId]. When only cas() is available, it uses compare-and-swap operations to append records to arrays stored per trace.
This infrastructure provides the foundation for implementing a comprehensive debug dashboard as a custom SpanExporter, as outlined in the updated implementation plan for issue #234.
list() method for KvStore interfaceFedify 1.10.0 adds an optional list() method to the KvStore interface for enumerating entries by key prefix. This method enables efficient prefix scanning, which is useful for implementing features like distributed trace storage, cache invalidation by prefix, and listing related entries.
interface KvStore {
// ... existing methods
list?(prefix?: KvKey): AsyncIterable<KvStoreListEntry>;
}When the prefix parameter is omitted or empty, list() returns all entries in the store. This is useful for debugging and administrative purposes. All official KvStore implementations have been updated to support this method:
MemoryKvStore — filters in-memory keys by prefixSqliteKvStore — uses LIKE query with JSON key patternPostgresKvStore — uses array slice comparisonRedisKvStore — uses SCAN with pattern matching and key deserializationDenoKvStore — delegates to Deno KV's built-in list() APIWorkersKvStore — uses Cloudflare Workers KV list() with JSON key prefix patternWhile list() is currently optional to give existing custom KvStore implementations time to add support, it will become a required method in Fedify 2.0.0 (tracked in issue #499). This migration path allows implementers to gradually adopt the new capability throughout the 1.x release cycle.
The addition of list() support was implemented in pull request #500, which also included the setup of proper testing infrastructure for WorkersKvStore using Vitest with @cloudflare/vitest-pool-workers.
Thanks to a contribution from Cho Hasang (@crohasang), the @fedify/nestjs package now supports NestJS 11 environments that use Express 5. The peer dependency range for Express has been widened to ^4.0.0 || ^5.0.0, eliminating peer dependency conflicts in modern NestJS projects while maintaining backward compatibility with Express 4.
This change, implemented in pull request #493, keeps the workspace catalog pinned to Express 4 for internal development and test stability while allowing Express 5 in consuming applications.
Fedify 1.10.0 serves as a stepping stone toward the upcoming 2.0.0 release. The optional list() method introduced in this version will become required in 2.0.0, simplifying the interface contract and allowing Fedify internals to rely on prefix scanning being universally available.
The enhanced #OpenTelemetry instrumentation and FedifySpanExporter provide the foundation for implementing the debug dashboard proposed in issue #234. The next steps include building the web dashboard UI with real-time activity lists, filtering, and JSON inspection capabilities—all as a separate package that leverages the standards-based observability infrastructure introduced in this release.
Depending on the development timeline and feature priorities, there may be additional 1.x releases before the 2.0.0 migration. For developers building custom KvStore implementations, now is the time to add list() support to prepare for the eventual 2.0.0 upgrade. The implementation patterns used in the official backends provide clear guidance for various storage strategies.
Special thanks to Cho Hasang (@crohasang) for the NestJS 11 compatibility improvements, and to all community members who provided feedback and testing for the new observability features.
For the complete list of changes, bug fixes, and improvements, please refer to the CHANGES.md file in the repository.
github.com
ActivityPub server framework in TypeScript. Contribute to fedify-dev/fedify development by creating an account on GitHub.
Fedify is a #TypeScript framework for building #ActivityPub servers that participate in the #fediverse. It reduces the complexity and boilerplate typically required for ActivityPub implementation while providing comprehensive federation capabilities.
We're excited to announce #Fedify 1.10.0, a focused release that lays critical groundwork for future debugging and observability features. Released on December 24, 2025, this version introduces infrastructure improvements that will enable the upcoming debug dashboard while maintaining full backward compatibility with existing Fedify applications.
This release represents a transitional step toward Fedify 2.0.0, introducing optional capabilities that will become standard in the next major version. The changes focus on enabling richer observability through OpenTelemetry enhancements and adding prefix scanning capabilities to the key–value store interface.
Fedify 1.10.0 significantly expands OpenTelemetry instrumentation with span events that capture detailed ActivityPub data. These enhancements enable richer observability and debugging capabilities without relying solely on span attributes, which are limited to primitive values.
The new span events provide complete activity payloads and verification status, making it possible to build comprehensive debugging tools that show the full context of federation operations:
activitypub.activity.received event on activitypub.inbox span — records the full activity JSON, verification status (activity verified, HTTP signatures verified, Linked Data signatures verified), and actor informationactivitypub.activity.sent event on activitypub.send_activity span — records the full activity JSON and target inbox URLactivitypub.object.fetched event on activitypub.lookup_object span — records the fetched object's type and complete JSON-LD representationAdditionally, Fedify now instruments previously uncovered operations:
activitypub.fetch_document span for document loader operations, tracking URL fetching, HTTP redirects, and final document URLsactivitypub.verify_key_ownership span for cryptographic key ownership verification, recording actor ID, key ID, verification result, and the verification method usedThese instrumentation improvements emerged from work on issue #234 (Real-time ActivityPub debug dashboard). Rather than introducing a custom observer interface as originally proposed in #323, we leveraged Fedify's existing OpenTelemetry infrastructure to capture rich federation data through span events. This approach provides a standards-based foundation that's composable with existing observability tools like Jaeger, Zipkin, and Grafana Tempo.
FedifySpanExporterBuilding on the enhanced instrumentation, Fedify 1.10.0 introduces FedifySpanExporter, a new OpenTelemetry SpanExporter that persists ActivityPub activity traces to a KvStore. This enables distributed tracing support across multiple nodes in a Fedify deployment, which is essential for building debug dashboards that can show complete request flows across web servers and background workers.
The new @fedify/fedify/otel module provides the following types and interfaces:
import { MemoryKvStore } from "@fedify/fedify";
import { FedifySpanExporter } from "@fedify/fedify/otel";
import {
BasicTracerProvider,
SimpleSpanProcessor,
} from "@opentelemetry/sdk-trace-base";
const kv = new MemoryKvStore();
const exporter = new FedifySpanExporter(kv, {
ttl: Temporal.Duration.from({ hours: 1 }),
});
const provider = new BasicTracerProvider();
provider.addSpanProcessor(new SimpleSpanProcessor(exporter));The stored traces can be queried for display in debugging interfaces:
// Get all activities for a specific trace
const activities = await exporter.getActivitiesByTraceId(traceId);
// Get recent traces with summary information
const recentTraces = await exporter.getRecentTraces({ limit: 100 });The exporter supports two storage strategies depending on the KvStore capabilities. When the list() method is available (preferred), it stores individual records with keys like [prefix, traceId, spanId]. When only cas() is available, it uses compare-and-swap operations to append records to arrays stored per trace.
This infrastructure provides the foundation for implementing a comprehensive debug dashboard as a custom SpanExporter, as outlined in the updated implementation plan for issue #234.
list() method for KvStore interfaceFedify 1.10.0 adds an optional list() method to the KvStore interface for enumerating entries by key prefix. This method enables efficient prefix scanning, which is useful for implementing features like distributed trace storage, cache invalidation by prefix, and listing related entries.
interface KvStore {
// ... existing methods
list?(prefix?: KvKey): AsyncIterable<KvStoreListEntry>;
}When the prefix parameter is omitted or empty, list() returns all entries in the store. This is useful for debugging and administrative purposes. All official KvStore implementations have been updated to support this method:
MemoryKvStore — filters in-memory keys by prefixSqliteKvStore — uses LIKE query with JSON key patternPostgresKvStore — uses array slice comparisonRedisKvStore — uses SCAN with pattern matching and key deserializationDenoKvStore — delegates to Deno KV's built-in list() APIWorkersKvStore — uses Cloudflare Workers KV list() with JSON key prefix patternWhile list() is currently optional to give existing custom KvStore implementations time to add support, it will become a required method in Fedify 2.0.0 (tracked in issue #499). This migration path allows implementers to gradually adopt the new capability throughout the 1.x release cycle.
The addition of list() support was implemented in pull request #500, which also included the setup of proper testing infrastructure for WorkersKvStore using Vitest with @cloudflare/vitest-pool-workers.
Thanks to a contribution from Cho Hasang (@crohasang), the @fedify/nestjs package now supports NestJS 11 environments that use Express 5. The peer dependency range for Express has been widened to ^4.0.0 || ^5.0.0, eliminating peer dependency conflicts in modern NestJS projects while maintaining backward compatibility with Express 4.
This change, implemented in pull request #493, keeps the workspace catalog pinned to Express 4 for internal development and test stability while allowing Express 5 in consuming applications.
Fedify 1.10.0 serves as a stepping stone toward the upcoming 2.0.0 release. The optional list() method introduced in this version will become required in 2.0.0, simplifying the interface contract and allowing Fedify internals to rely on prefix scanning being universally available.
The enhanced #OpenTelemetry instrumentation and FedifySpanExporter provide the foundation for implementing the debug dashboard proposed in issue #234. The next steps include building the web dashboard UI with real-time activity lists, filtering, and JSON inspection capabilities—all as a separate package that leverages the standards-based observability infrastructure introduced in this release.
Depending on the development timeline and feature priorities, there may be additional 1.x releases before the 2.0.0 migration. For developers building custom KvStore implementations, now is the time to add list() support to prepare for the eventual 2.0.0 upgrade. The implementation patterns used in the official backends provide clear guidance for various storage strategies.
Special thanks to Cho Hasang (@crohasang) for the NestJS 11 compatibility improvements, and to all community members who provided feedback and testing for the new observability features.
For the complete list of changes, bug fixes, and improvements, please refer to the CHANGES.md file in the repository.
github.com
ActivityPub server framework in TypeScript. Contribute to fedify-dev/fedify development by creating an account on GitHub.
Fedify is a #TypeScript framework for building #ActivityPub servers that participate in the #fediverse. It reduces the complexity and boilerplate typically required for ActivityPub implementation while providing comprehensive federation capabilities.
We're excited to announce #Fedify 1.10.0, a focused release that lays critical groundwork for future debugging and observability features. Released on December 24, 2025, this version introduces infrastructure improvements that will enable the upcoming debug dashboard while maintaining full backward compatibility with existing Fedify applications.
This release represents a transitional step toward Fedify 2.0.0, introducing optional capabilities that will become standard in the next major version. The changes focus on enabling richer observability through OpenTelemetry enhancements and adding prefix scanning capabilities to the key–value store interface.
Fedify 1.10.0 significantly expands OpenTelemetry instrumentation with span events that capture detailed ActivityPub data. These enhancements enable richer observability and debugging capabilities without relying solely on span attributes, which are limited to primitive values.
The new span events provide complete activity payloads and verification status, making it possible to build comprehensive debugging tools that show the full context of federation operations:
activitypub.activity.received event on activitypub.inbox span — records the full activity JSON, verification status (activity verified, HTTP signatures verified, Linked Data signatures verified), and actor informationactivitypub.activity.sent event on activitypub.send_activity span — records the full activity JSON and target inbox URLactivitypub.object.fetched event on activitypub.lookup_object span — records the fetched object's type and complete JSON-LD representationAdditionally, Fedify now instruments previously uncovered operations:
activitypub.fetch_document span for document loader operations, tracking URL fetching, HTTP redirects, and final document URLsactivitypub.verify_key_ownership span for cryptographic key ownership verification, recording actor ID, key ID, verification result, and the verification method usedThese instrumentation improvements emerged from work on issue #234 (Real-time ActivityPub debug dashboard). Rather than introducing a custom observer interface as originally proposed in #323, we leveraged Fedify's existing OpenTelemetry infrastructure to capture rich federation data through span events. This approach provides a standards-based foundation that's composable with existing observability tools like Jaeger, Zipkin, and Grafana Tempo.
FedifySpanExporterBuilding on the enhanced instrumentation, Fedify 1.10.0 introduces FedifySpanExporter, a new OpenTelemetry SpanExporter that persists ActivityPub activity traces to a KvStore. This enables distributed tracing support across multiple nodes in a Fedify deployment, which is essential for building debug dashboards that can show complete request flows across web servers and background workers.
The new @fedify/fedify/otel module provides the following types and interfaces:
import { MemoryKvStore } from "@fedify/fedify";
import { FedifySpanExporter } from "@fedify/fedify/otel";
import {
BasicTracerProvider,
SimpleSpanProcessor,
} from "@opentelemetry/sdk-trace-base";
const kv = new MemoryKvStore();
const exporter = new FedifySpanExporter(kv, {
ttl: Temporal.Duration.from({ hours: 1 }),
});
const provider = new BasicTracerProvider();
provider.addSpanProcessor(new SimpleSpanProcessor(exporter));The stored traces can be queried for display in debugging interfaces:
// Get all activities for a specific trace
const activities = await exporter.getActivitiesByTraceId(traceId);
// Get recent traces with summary information
const recentTraces = await exporter.getRecentTraces({ limit: 100 });The exporter supports two storage strategies depending on the KvStore capabilities. When the list() method is available (preferred), it stores individual records with keys like [prefix, traceId, spanId]. When only cas() is available, it uses compare-and-swap operations to append records to arrays stored per trace.
This infrastructure provides the foundation for implementing a comprehensive debug dashboard as a custom SpanExporter, as outlined in the updated implementation plan for issue #234.
list() method for KvStore interfaceFedify 1.10.0 adds an optional list() method to the KvStore interface for enumerating entries by key prefix. This method enables efficient prefix scanning, which is useful for implementing features like distributed trace storage, cache invalidation by prefix, and listing related entries.
interface KvStore {
// ... existing methods
list?(prefix?: KvKey): AsyncIterable<KvStoreListEntry>;
}When the prefix parameter is omitted or empty, list() returns all entries in the store. This is useful for debugging and administrative purposes. All official KvStore implementations have been updated to support this method:
MemoryKvStore — filters in-memory keys by prefixSqliteKvStore — uses LIKE query with JSON key patternPostgresKvStore — uses array slice comparisonRedisKvStore — uses SCAN with pattern matching and key deserializationDenoKvStore — delegates to Deno KV's built-in list() APIWorkersKvStore — uses Cloudflare Workers KV list() with JSON key prefix patternWhile list() is currently optional to give existing custom KvStore implementations time to add support, it will become a required method in Fedify 2.0.0 (tracked in issue #499). This migration path allows implementers to gradually adopt the new capability throughout the 1.x release cycle.
The addition of list() support was implemented in pull request #500, which also included the setup of proper testing infrastructure for WorkersKvStore using Vitest with @cloudflare/vitest-pool-workers.
Thanks to a contribution from Cho Hasang (@crohasang), the @fedify/nestjs package now supports NestJS 11 environments that use Express 5. The peer dependency range for Express has been widened to ^4.0.0 || ^5.0.0, eliminating peer dependency conflicts in modern NestJS projects while maintaining backward compatibility with Express 4.
This change, implemented in pull request #493, keeps the workspace catalog pinned to Express 4 for internal development and test stability while allowing Express 5 in consuming applications.
Fedify 1.10.0 serves as a stepping stone toward the upcoming 2.0.0 release. The optional list() method introduced in this version will become required in 2.0.0, simplifying the interface contract and allowing Fedify internals to rely on prefix scanning being universally available.
The enhanced #OpenTelemetry instrumentation and FedifySpanExporter provide the foundation for implementing the debug dashboard proposed in issue #234. The next steps include building the web dashboard UI with real-time activity lists, filtering, and JSON inspection capabilities—all as a separate package that leverages the standards-based observability infrastructure introduced in this release.
Depending on the development timeline and feature priorities, there may be additional 1.x releases before the 2.0.0 migration. For developers building custom KvStore implementations, now is the time to add list() support to prepare for the eventual 2.0.0 upgrade. The implementation patterns used in the official backends provide clear guidance for various storage strategies.
Special thanks to Cho Hasang (@crohasang) for the NestJS 11 compatibility improvements, and to all community members who provided feedback and testing for the new observability features.
For the complete list of changes, bug fixes, and improvements, please refer to the CHANGES.md file in the repository.
github.com
ActivityPub server framework in TypeScript. Contribute to fedify-dev/fedify development by creating an account on GitHub.
Big news from the #OpenTelemetry community this week: the latest Configuration Schema release candidate is officially out! This update marks a major milestone in the 3-year-long project and brings us closer than ever to a fully stable schema.
Take a look at our latest blog post to learn more.
👉 Volunteers needed! The #OpenTelemetry project is launching a new research study focused on the contributor experience. We want to understand what’s working well, where people are having issues, and how we can better support community members who want to get involved.
Sign up today to share your thoughts! Details in our latest blog post.
https://opentelemetry.io/blog/2025/calling-new-contributors/
🔥 Mark your calendars! OTel Unplugged EU 2026 is happening Feb 2 in Brussels (day after FOSDEM)
No slides, just real technical conversations with the #OpenTelemetry community. You pick the topics. Limited space!
Register: https://events.humanitix.com/otelunplugged-eu2026
🔄 Please repost to help us reach the community!
The #OpenTelemetry project is deprecating the #Zipkin exporter specification in favor of Zipkin's OTLP ingestion support. Learn more about migrating in our latest blog post.
https://opentelemetry.io/blog/2025/deprecating-zipkin-exporters/
🇪🇸 #GrafanaCON 2026 is heading to Barcelona, Spain from 20-22 Apr!
Get ready to feel on tapas the world at our biggest community conference of the year.
This conference goes beyond #Grafana. It’s also about all of the other open source projects in our ecosystem (#OpenTelemetry, #Prometheus, Loki, etc.), plus related data source plugins and collectors.
Sign up to receive notifications when 30% discount tickets go on sale: https://grafana.com/events/grafanacon/?mdm=social&src=ma
🇪🇸 #GrafanaCON 2026 is heading to Barcelona, Spain from 20-22 Apr!
Get ready to feel on tapas the world at our biggest community conference of the year.
This conference goes beyond #Grafana. It’s also about all of the other open source projects in our ecosystem (#OpenTelemetry, #Prometheus, Loki, etc.), plus related data source plugins and collectors.
Sign up to receive notifications when 30% discount tickets go on sale: https://grafana.com/events/grafanacon/?mdm=social&src=ma
Level up your #OTel knowledge with the #OpenTelemetry Certified Associate (OTCA) exam from the Linux Foundation. Whether you're a newcomer or experienced user, preparing for this exam will strengthen your observability fundamentals and reinforce best practices. Learn more in our latest blog post!
https://opentelemetry.io/blog/2025/otca-for-newcomers-and-advanced-users/
There is no open source without community.
Today we're delighted to announce the winners of the second annual #OpenTelemetry Community Awards! These individuals were nominated by their peers for their exceptional efforts to the project over the past year.
Congratulations to the winners! And thank you to the entire #OTel community for your hard work! We literally couldn't do it without you.
https://opentelemetry.io/blog/2025/community-awards-winners/
Are you headed to FOSDEM? Join us in Brussels on Monday, Feb 2, 2026 for OTel Unplugged EU 2026 — an unconference by and for the OpenTelemetry community.
No slides. No speaker tracks. Just open breakout sessions, roadmap discussions, and a community that loves building together. Register + learn more: https://events.humanitix.com/otelunplugged-eu2026
#OpenTelemetry #FOSDEM
📢 日本のOpenTelemetry(OTel)エンドユーザーの皆様へ!
OTel End User SIGとOTel日本語ローカライズチームが、OTel活用事例を紹介するオンラインイベントを開催します。
💬 あなたの経験を共有しましょう
✨ 発見した素晴らしい知見を披露しましょう
特集インタビューにご協力いただける方は、返信をお願いします。ぜひあなたのストーリーを共有させてください!🫶
📢 日本のOpenTelemetry(OTel)エンドユーザーの皆様へ!
OTel End User SIGとOTel日本語ローカライズチームが、OTel活用事例を紹介するオンラインイベントを開催します。
💬 あなたの経験を共有しましょう
✨ 発見した素晴らしい知見を披露しましょう
特集インタビューにご協力いただける方は、返信をお願いします。ぜひあなたのストーリーを共有させてください!🫶
The goal of Arconia OpenTelemetry is to provide a single dependency you can add to your Spring Boot application to get unified Java observability with minimal configuration and maximum compatibility with both OpenTelemetry and Micrometer ecosystems.
#Java #SpringBoot #OpenTelemetry #Arconia #Micrometer
https://www.thomasvitale.com/spring-boot-observability-arconia-opentelemetry/
thomasvitale.com
Arconia OpenTelemetry enhances observability for Spring Boot by combining the standardization of OpenTelemetry with the robustness of Micrometer.
Have you ever wished you could extract individual events from a concatenated mess of a log record? Now you can! Add the unroll processor to your #OpenTelemetry Collector pipelines to expand bundled log records in a clean, deterministic way. Read more in our latest post!
https://opentelemetry.io/blog/2025/contrib-unroll-processor/
Everyone knows #OpenTelemetry is designed to provide useful attributes that can be easily filtered and aggregated by any backend. But what happens when the data itself is complex?
We are excited to announce upcoming support for capturing complex data across all #OTel signals starting with OTLP 1.9.0. With this advancement, you'll be able to observe real-world systems, libraries, and applications whose properties are sometimes complex. Learn more in our latest post.
The #OTel project is thrilled to announce the first release of #OpenTelemetry eBPF Instrumentation (OBI)!
Use OBI to instrument all applications, all programming languages, all libraries with a single command. 👏 Zero effort. 👏 Maximum gain.
Read our latest blog post to learn more!
https://opentelemetry.io/blog/2025/obi-announcing-first-release/
@nurkiewicz Logs are degenerated span events (in #OpenTelemetry terminology).
Help spotlight the people moving #OpenTelemetry forward. Nominations for the 2025 OpenTelemetry Community Awards are open until November 6th. Take a minute to nominate: https://opentelemetry.io/blog/2025/community-awards/
opentelemetry.io
OpenTelemetry is a community-driven project, fueled by a group of awesome humans who are actively revolutionizing the field of observability with their contributions. Whether it’s through code, documentation, project management, outreach, adoption, or simply helping others answer technical questions on our CNCF Slack, we want to recognize these contributions and the people behind them — because we’re all human, and we all like that warm fuzzy feeling of appreciation. We are thrilled to announce the second annual OpenTelemetry Community Awards! This is your chance to nominate individuals who have made a notable impact to OpenTelemetry over the past year. Everyone can nominate anyone in the community, be they a contributor, end-user, or community member.
The #OpenTelemetry on Mainframes SIG was formed to enable the most important #OTel components for the mainframe. To prioritize their work, the SIG conducted a survey earlier this year. Check out the link for their key findings and to learn how to get involved!
📣 OTel Unplugged is back and headed to Brussels in February 2026!
A full day of in-person conversation and collaboration! Unconference sessions only—no organized talks. Together, we’ll shape the next chapter of the #OpenTelemetry roadmap. Get all the details on registration and sponsorship in our latest blog post. 👇
Automatic instrumentation can seem like magic—but it’s not!
The latest #OpenTelemetry blog breaks down how it really works, from monkey patching and bytecode instrumentation to eBPF and runtime APIs.
https://opentelemetry.io/blog/2025/demystifying-auto-instrumentation/
Ever wonder what it's like to be a maintainer in a large open source project? Read our latest blog post to learn about the hard-working, passionate group of people who are steering the #OpenTelemetry project and building its community.
https://opentelemetry.io/blog/2025/day-opentelemetry-maintainer/
We are excited to launch our second annual #OpenTelemetry Community Awards! Do you know folks whose contributions deserve recognition? Nominate up to five awesome humans before midnight UTC on November 6! Winners will be announced at #KubeConNA!
Get ready #CloudNative fans! #KubeCon North America is almost here! If you're wondering where to find all things #OpenTelemetry, we've got you covered. Bookmark our latest blog post so you don't miss a thing!
🚀 #OpenTelemetry Android is on the road to stable! Check out what’s coming, get involved, and share your feedback!
Join us in welcoming the newest members of the #OpenTelemetry Technical Committee! 🎉
Call for contributors! The #OpenTelemetry Kotlin project proposal is looking for contributors to maintain the codebase and influence the project's direction. Our latest blog post has the details!
https://opentelemetry.io/blog/2025/kotlin-multiplatform-opentelemetry/
Do you care about the governance of #OpenTelemetry? Want to have a say in the future of the project? Make your voice heard in the upcoming Governance Committee election!
If you're a member of standing, make sure you're on the voter roll. Nominate yourself or someone else as a candidate! Find out more in the latest #OTel blog post.
Came across this over the weekend: https://rotel.dev/docs/category/aws-lambda-extension
A lightweight #OpenTelemetry collector in Rust (because ofc it's Rust)
It does seem to cut down on coldstart times within #AWS #Lambda compared to the upstream OTEL Lambda layer (https://github.com/open-telemetry/opentelemetry-lambda) not the ADOT one, haven't compared that.
github.com
Create your own Lambda Layer in each OTel language using this starter code. Add the Lambda Layer to your Lambda Function to get tracing with OpenTelemetry. - open-telemetry/opentelemetry-lambda
Our latest blog post is a retrospective of the go.opentelemetry.io certificate expiration incident that occurred on September 25. Find out what happened and what #OpenTelemetry project leaders learned from it.
https://opentelemetry.io/blog/2025/go-opentelemetry-io-expired-certificate/
New blog post for everyone who wants to get started with contributing to #OpenTelemetry: https://opentelemetry.io/blog/2025/contribute-to-otel/
opentelemetry.io
You might have heard about OpenTelemetry, found it interesting and want to get involved, but the path to contribution isn’t immediately clear. You might start messaging people asking to get assigned to issues, or just give a shout out saying “I’m here to help, just let me know”, but you never hear back. So how can you actually start contributing to OpenTelemetry? Open source thrives on community, mutual support, and the collaborative development of innovative technology. It also comes with challenges, especially if you’re new to this ecosystem.
TIL about the OpenLit for AI observability. It builds on #OpenTelemetry and #Grafana supports it
github.com
Open source platform for AI Engineering: OpenTelemetry-native LLM Observability, GPU Monitoring, Guardrails, Evaluations, Prompt Management, Vault, Playground. 🚀💻 Integrates with 50+ LLM Providers,...
🚀 Vești bune pentru comunitatea din România!
Documentația OpenTelemetry are acum o pagină de prezentare disponibilă în limba română 🇷🇴
Construim acest proiect împreună și ne-ar bucura să avem alături mai mulți contribuitori vorbitori de română. Dacă vrei să ajuți, te așteptăm pe canalul #otel-localization-ro de pe Slack-ul CNCF.
Hai să facem observabilitatea accesibilă pentru toată lumea!
Every established enterprise has that one system. It’s the one running in the corner, performing a critical function for years. It’s reliable, but it’s also a black box. No one wants to touch it for fear of breaking it. 🫣
But what if you could make that black box more transparent with no risk? Check out our latest #OpenTelemetry blog post to learn how to instrument legacy applications without touching the code. Gain visibility, even in the cobwebby corners! 🕸️
https://opentelemetry.io/blog/2025/opentelemetry-for-legacy-app/
Naming is hard, but it doesn't have to be! #OpenTelemetry Semantic Conventions are designed to help you standardize naming across your telemetry. Next up in the blog series on naming things, today's post guides you through how to name your #OTel span attributes. Read, learn, do!
https://opentelemetry.io/blog/2025/how-to-name-your-span-attributes/
Our latest blog post explains how the End User SIG created a clear, low-effort, data-driven way for the #OpenTelemetry community to signal the work that matters most.
So the next time you’re browsing #OTel issues, don’t just read and leave. When you find an issue that describes a problem you’re also facing or a feature you’d like to see implemented, give the issue description a 👍 reaction. That’s it! Like and subscribe. That’s the signal.
Our latest blog post walks you through how to use basic grammar to name your custom spans. Follow this best practice to create clear, consistent names with low cardinality. Your future self thanks you!
opentelemetry.io
One of the most fundamental yet often overlooked aspects of good instrumentation is naming. This post is the first in a series dedicated to the art and science of naming things in OpenTelemetry. We’ll start with spans, the building blocks of a distributed trace, and give you the most important takeaway right at the beginning: how to name the spans that describe your unique business logic. Naming your business spans While OpenTelemetry’s automatic instrumentation is fantastic for covering standard operations (like incoming HTTP requests or database calls), the most valuable insights often come from the custom spans you add to your own business logic. These are the operations unique to your application’s domain.
⏳ Haven’t shared your experience with the OpenTelemetry Collector yet? There’s still time!
Our follow-up survey is still open, and we’re inviting all Collector users to help us understand:
- What’s improved
- What still needs work
- How we can better support your use cases
Even if you responded to the first survey, we’d love your updated perspective.
📝 Take 5 minutes and tell us what’s up → https://buff.ly/Ghoh5H9
New blog post! #OpenTelemetry in Practice: Alibaba's OpenTelemetry Journey
opentelemetry.io
In the latest session of OTel in Practice, engineers Huxing Zhang and Steve Rao shared Alibaba’s journey adopting OpenTelemetry within their services. The discussion focused on a wide range of topics, from Java agents to Go compile-time instrumentation, and of course Gen-AI observability! Focusing on Java, Alibaba initially used an in-house solution based on Pinpoint, but faced limitations with framework support and asynchronous context propagation. It was then that they decided to migrate to OpenTelemetry to leverage its strong ecosystem and status as an industry standard.
OpenTelemetry Collector users — we want to hear from you (again)!
Last year, we did a survey to learn how you’re using the Collector. The response shaped a lot of our thinking. Now we’re back with a quick follow-up.
Tell us what’s changed, what’s working, and what’s still rough.
docs.google.com
This follow-up survey helps the OTel Collector SIG track how usage patterns and needs have evolved since our previous survey. Your responses will help us see what's working, what's changed, and where we should focus our efforts next. 📅 It will run for one month from the day it's published. ⌚ It will only take a few minutes to complete.
#OpenTelemetry resource attributes and #Prometheus.
You know it and we know it: they don't always play well together.
This year, #LFX mentee Victoria Nduka researched how Prometheus handles #OTel resource attributes and how we can improve the user experience. Read our latest blog post to learn about her research findings and insightful recommendations. https://opentelemetry.io/blog/2025/ux-research-prometheus-otel/
🎬 And that's a wrap! In the latest session of #OTel in Practice, we spoke with Huxing Zhang and Steve Rao of Alibaba, as they explained how Alibaba adopted #OpenTelemetry over the years, including their contributions to the project. If you missed it, catch up on the recording at https://buff.ly/iDYzz4J
Is anybody I know (or who reads this post 😅) using #Azure Container Apps with #OpenTelemetry collection enabled sending the telemetry to an external provider?
https://learn.microsoft.com/en-us/azure/container-apps/opentelemetry-agents#otlp-endpoint
learn.microsoft.com
Learn to record and query data collected using OpenTelemetry in Azure Container Apps (preview).
📣 This Wednesday, 16th July at 4PM CST / 10AM CET join us for a new session of OTel in Practice with Huxing Zhang and Steve Rao.
🔭 Discover how Alibaba has approached #OpenTelemetry adoption within their internal platform and services. We’ll cover challenges and learnings from large-scale migrations, and the journey that has led them to be active contributors to OpenTelemetry!
community.cncf.io
Virtual Event - Join us for a new session of OTel in Practice with Huxing Zhang, Staff Engineer at Alibaba and OTel Go Compile-Time Inst...
So are we doing Tempo, Victoria, Influx... what for home lab observability now?
#o11y #Observability #HomeLab #HomeLabbing #Grafana #Prometheus #OpenTelemetry #Otel
Observability by design (n.)
1 : the practice of integrating observability into the design and development phases of the software development life cycle
2 :#OpenTelemetry Weaver
Don't let observability be an afterthought. Learn how to leverage semantic conventions with #OTel Weaver in our latest blog post.
Introducing...the #OpenTelemetry Injector! The Injector, recently donated by #Splunk, helps you automatically instrument your applications no matter the programming languages used. Learn more in our latest blog post!
opentelemetry.io
As OpenTelemetry adoption grows across infrastructure and application layers, easing the operational burden of instrumentation remains a shared priority. Today, we’re excited to highlight a recent donation from Splunk to the OpenTelemetry community: a host-based mechanism to automatically inject OpenTelemetry Automatic Instrumentation into your app on any Linux host. This component has reached production stability and is now being donated to the community as the OpenTelemetry Injector. It helps streamline OpenTelemetry deployment across languages and systems.
#OTel Community Day is around the corner! Will we see you in Denver?
On June 26, join members of the #OpenTelemetry governance and technical committees, project maintainers, contributors and end users for a day of knowledge sharing, community building, and collaboration!
⚠️ Action required! ⚠️
The #CNCF Slack workspace is shifting to a free plan on Friday, June 20, 2025. Read the latest #OpenTelemetry blog post to find out what you should consider doing before then.
#OpenTelemetry is celebrating #Pride Month!
Download, use, and share our new logos! Happy Pride!
Earlier this year, we heard from #OpenTelemetry contributors in our Contributor Experience Survey. Now we're ready to release the results! Our latest blog post explains everything we learned from the contributor community. Your responses will guide us as we improve the project and the contribution experience.
Thank you to all the contributors who took time to complete the survey and provide thoughtful feedback!
https://opentelemetry.io/blog/2025/contribex-survey-results/
🎉 It's today! In just a few hours, Oluwatomisin Taiwo and Andrei Morozov of Compass Digital will be telling us how they're implementing #OpenTelemetry in their organization.
🕐 13:00 EDT | 19:00 CEST | 10:00 PDT
🎤 With Adriana Villela and Andrej Kiripolski
Join us live: https://buff.ly/2oGtiAq
Our newest blog post walks you through how to expose the #OpenTelemetry Collector securely using the #Kubernetes Gateway API and mutual TLS.
https://opentelemetry.io/blog/2025/expose-otel-collector-gateway-api/
opentelemetry.io
The goal of this blog post is to demonstrate how you can expose an OpenTelemetry (OTel) Collector running inside Kubernetes to the outside world securely, using the Kubernetes Gateway API and mutual TLS (mTLS) for authentication and encryption. As observability becomes increasingly critical in modern distributed systems, centralizing telemetry data via OTel Collectors deployed in one or many Kubernetes clusters is common practice. Often, services or agents running outside your Kubernetes cluster need to send data to these Collectors. Exposing internal services requires careful consideration of security and standardization. This is where the Kubernetes Gateway API and mTLS shine.
🚨 Just 2 days to go! Have you RSVP’d for the next OTel Me session?
We’re chatting with Oluwatomisin Taiwo and Andrei Morozov about how they're using #OpenTelemetry at Compass Digital. Don't miss it.
🗓️ June 10, 2024
🕐 13:00 EDT | 19:00 CEST | 10:00 PDT
📌 Register here: https://buff.ly/2oGtiAq
"Head sampling is a sampling technique used to make a sampling decision as early as possible. A decision to sample or drop a span or trace is not made by inspecting the trace as a whole."
https://opentelemetry.io/docs/concepts/sampling/#head-sampling
opentelemetry.io
Learn about sampling and the different sampling options available in OpenTelemetry.
baggage vs. attributes in OpenTelemetry
https://opentelemetry.io/docs/concepts/signals/baggage/#baggage-is-not-the-same-as-attributes
https://opentelemetry.io/docs/specs/otel/overview/#baggage-signal
"Baggage can be used regardless of whether Distributed Tracing is used." https://www.w3.org/TR/baggage/
w3.org
This specification defines a standard for representing and propagating a set of application-defined properties associated with a distributed request or workflow execution.
We're a few days away from OTel Me ... with Oluwatomisin Taiwo and Andrei Morozov from Compass Digital. They'll be walking us through their organization’s #OpenTelemetry journey.
🗓️ June 10, 2024
🕐 13:00 EDT | 19:00 CEST | 10:00 PDT
✨ Save your seat: https://buff.ly/2oGtiAq
Do you work on an RPC framework or use them extensively? Check out the newest #OpenTelemetry blog post announcing the RPC Semantic Convention stabilization project!
https://opentelemetry.io/blog/2025/stabilizing-rpc-conventions/
opentelemetry.io
The Semantic Conventions SIG is excited to kick off the RPC stabilization effort! Following the stabilization of the database conventions in May 2025, we’re continuing our work to stabilize key areas—and RPC is next. It takes a village to define a solid convention, especially for a space as diverse as RPC technologies, which include gRPC, JSON-RPC, Apache Dubbo, and many others. If you work on one of these frameworks, use them extensively, or are simply interested in learning more, come join us—we’d love your help!
🎙️ Join us for the next edition of OTel Me. This time, we’ll hear from Oluwatomisin Taiwo and Andrei Morozov of Compass Digital as they share their organization's #OpenTelemetry journey.
🗓️ June 10, 2024
🕐 13:00 EDT | 19:00 CEST | 10:00 PDT
🎤 Co-hosted by Adriana Villela and Andrej Kiripolski
Join the #OpenTelemetry community in Tokyo for #KubeCon + #CloudNativeCon Japan 2025.
Join the #OpenTelemetry community in Tokyo for #KubeCon + #CloudNativeCon Japan 2025.
Join the #OpenTelemetry community in Hong Kong for #KubeCon + CloudNativeCon China 2025.
opentelemetry.io
The OpenTelemetry project invites you to join members of the OpenTelemetry community at KubeCon + CloudNativeCon China (registration) in Hong Kong from June 10 to 11, 2025. This post covers all currently scheduled activities related to OpenTelemetry that are happening during KubeCon. Check back for updates before the start of the conference! KubeCon talks and maintainer sessions Antipatterns in Observability: Lessons Learned and How OpenTelemetry Solves Them by Steve Flanders, Splunk Tuesday, June 10 • 13:45 - 14:15 Advancing Observability With Compile-Time Auto-Instrumentation in Golang by Liu Ziming, Alibaba Cloud & Przemek Delewski, Quesma Tuesday, June 10 • 14:30 - 15:00 OpenTelemetry Project Update by Zihao Rao, Alibaba Cloud; Hui Wang, VictoriaMetrics; Jared Tan, DaoCloud Tuesday, June 10 • 16:15 -16:45 Unified Observability in gRPC: Metrics and Tracing Using OpenTelemetry Plugin by Purnesh Dixit, Google Wednesday, June 11 • 11:00 - 11:30 Join us Come listen, learn, and get involved in OpenTelemetry. See you in Hong!
এখন থেকে #OpenTelemetry এর হোমপেজ বাংলায়ও উপলব্ধ!
বাংলাভাষী ডেভেলপারদের জন্য অবজারভেবিলিটি শেখা এখন আরও বেশি সহজ।
এখানে দেখুন: https://opentelemetry.io/bn
---
We’re excited to share that the OpenTelemetry homepage is now available in Bengali!
This makes it easier for Bengali-speaking developers to get started with observability.
Visit here: https://opentelemetry.io/bn
We've made the initial code drop of Grafana Beyla to #OpenTelemetry, under the new project name OpenTelemetry eBPF Instrumentation.
Here's a closer look at why we’re donating Beyla, what it means for users and the broader open source community, and what’s next: https://grafana.com/blog/2025/05/07/opentelemetry-ebpf-instrumentation-beyla-donation/?camp=blog&mdm=social
grafana.com
We’re excited to share that we’ve made the initial code drop of Grafana Beyla to OpenTelemetry, under the new project name OpenTelemetry eBPF Instrumentation.
We've made the initial code drop of Grafana Beyla to #OpenTelemetry, under the new project name OpenTelemetry eBPF Instrumentation.
Here's a closer look at why we’re donating Beyla, what it means for users and the broader open source community, and what’s next: https://grafana.com/blog/2025/05/07/opentelemetry-ebpf-instrumentation-beyla-donation/?camp=blog&mdm=social
grafana.com
We’re excited to share that we’ve made the initial code drop of Grafana Beyla to OpenTelemetry, under the new project name OpenTelemetry eBPF Instrumentation.
Phase 2 of the OTel-Arrow project is underway! Find out more in our newest blog post.
https://opentelemetry.io/blog/2025/otel-arrow-phase-2/
#opentelemetry #apache-arrow
opentelemetry.io
We are excited to announce the next phase of the OpenTelemetry Protocol with Apache Arrow project (OTel-Arrow). We began this project several years ago with the goal of bridging between OpenTelemetry data and the Apache Arrow ecosystem. Apache Arrow is a framework designed for zero-copy exchange of structured data between column-oriented data producers and consumers. We believe that having OpenTelemetry data accessible to external systems through Apache Arrow will lead to powerful integrations, with the potential for new telemetry systems and applications to emerge. For large streams of telemetry, we know that column-oriented data handling is substantially more efficient, with improved data compression and performance.
Missed our latest OTel Me... with guest Eromosele Akhigbe? No problem! You can catch the recording on our YouTube channel!
Eromosele shares tips on contributing to the #OpenTelemetry project as someone who initially came into the project with zero experience in OTel and Go.
https://www.youtube.com/live/KzqY4roXhHs?si=PyIM4bLyJgKtc9JV
TODAY!!! Join us for the next edition of OTel Me... with guest Eromosele Akhigbe, as he talks about his journey into #OpenTelemetry through #Outreachy, from his first PR, to writing an exporter for the OTel Collector.
WHEN: 10:00 PDT/13:00 EDT/19:00 CEST
Sign up: https://community.cncf.io/j/6vyedmvem34rv/
THIS WEEK! Join us for the next edition of OTel Me... with guest Eromosele Akhigbe, as he talks about his journey into #OpenTelemetry through #Outreachy, from his first PR, to writing an exporter for the OTel Collector.
Date: April 30th at 10:00 PDT/13:00 EDT/19:00 CEST
Sign up: https://community.cncf.io/j/6vyedmvem34rv/
How to automatically associate console logs by request with @opentelemetry and Hyperdx
How to automatically associate console logs by request with @opentelemetry and Hyperdx
How to automatically associate console logs by request with @opentelemetry and Hyperdx
Simplify debugging with Deno and @opentelemetry
✅ logs associated with requests
✅ immediate traces and metrics
✅ works on Node.js backends
without any additional code or config ✨
https://deno.com/blog/zero-config-debugging-deno-opentelemetry
We hope everyone is enjoying KubeCon EU!
Today's blog post is all about the #OpenTelemetry community. In a follow-up to his KubeCon talk of the same name, Governance Committee member Juraci Paixão Kröhling shares his interviews with community members, learning what they love and hate about #OTel. Whether you're an end user or a project contributor, we hear you and value your feedback!
opentelemetry.io
OpenTelemetry (OTel) is often touted as the future of observability, promising vendor neutrality and comprehensive data collection. But what’s the reality for those who use it daily? We sat down with several engineers and SREs to get their unfiltered thoughts on OTel. The result? A candid conversation about the good, the bad, and the sometimes frustrating aspects of working with OTel. In preparation for the KubeCon talk OTel Sucks (But Also Rocks!), Juraci spoke with community members and gathered a wealth of valuable insights. Due to time constraints, not all the material could be included in the presentation, so this is an attempt to do justice to the community’s contributions.
Join Adriana Villela and Reese Lee as they interview Austin Parker and Marylia Gutierrez for the second edition of the Humans of #OpenTelemetry Livestream... live from #KubeCon EU in London, on April 3rd, at 13:00 BST (08:00 EDT).
Sign up below to join us!
https://community.cncf.io/events/details/cncf-opentelemetry-presents-humans-of-otel-livestream/
The results are in! Check out our latest blog post that reports the findings of the #OpenTelemetry Developer Experience Survey.
Thank you to the 218 participants! Your feedback will help improve #OTel #DevEx in key areas, including the documentation, SDKs, and the Collector.
Can you really do tracing on mobile devices? won't it eat up your battery and memory???
I sat down with #Android expert Hanson Ho to hear how #OpenTelemetry supports mobile and client-side telemetry.
https://horovits.medium.com/observability-for-mobile-with-opentelemetry-2eb847c41941
Can you really do tracing on mobile devices? won't it eat up your battery and memory???
I sat down with #Android expert Hanson Ho to hear how #OpenTelemetry supports mobile and client-side telemetry.
https://horovits.medium.com/observability-for-mobile-with-opentelemetry-2eb847c41941
The #OpenTelemetry JavaScript SDK 2.0 is here!
opentelemetry.io
Exciting news: OpenTelemetry JavaScript has released SDK 2.0! Migration guide For a detailed description of breaking changes, see the migration guide: Upgrade to OpenTelemetry JS SDK 2.x. What is JS SDK 2.x? JS SDK 2.x encompasses new releases of the @opentelemetry/* JavaScript packages published from the opentelemetry-js repository, except the API and semantic-conventions packages. The package versions for this new major will be >=2.0.0 for the stable and >=0.200.0 for the unstable packages. Details on the full list of packages can be found in the migration guide.
The #OpenTelemetry JavaScript SDK 2.0 is here!
opentelemetry.io
Exciting news: OpenTelemetry JavaScript has released SDK 2.0! Migration guide For a detailed description of breaking changes, see the migration guide: Upgrade to OpenTelemetry JS SDK 2.x. What is JS SDK 2.x? JS SDK 2.x encompasses new releases of the @opentelemetry/* JavaScript packages published from the opentelemetry-js repository, except the API and semantic-conventions packages. The package versions for this new major will be >=2.0.0 for the stable and >=0.200.0 for the unstable packages. Details on the full list of packages can be found in the migration guide.
The #OpenTelemetry JavaScript SDK 2.0 is here!
opentelemetry.io
Exciting news: OpenTelemetry JavaScript has released SDK 2.0! Migration guide For a detailed description of breaking changes, see the migration guide: Upgrade to OpenTelemetry JS SDK 2.x. What is JS SDK 2.x? JS SDK 2.x encompasses new releases of the @opentelemetry/* JavaScript packages published from the opentelemetry-js repository, except the API and semantic-conventions packages. The package versions for this new major will be >=2.0.0 for the stable and >=0.200.0 for the unstable packages. Details on the full list of packages can be found in the migration guide.
The #OpenTelemetry JavaScript SDK 2.0 is here!
opentelemetry.io
Exciting news: OpenTelemetry JavaScript has released SDK 2.0! Migration guide For a detailed description of breaking changes, see the migration guide: Upgrade to OpenTelemetry JS SDK 2.x. What is JS SDK 2.x? JS SDK 2.x encompasses new releases of the @opentelemetry/* JavaScript packages published from the opentelemetry-js repository, except the API and semantic-conventions packages. The package versions for this new major will be >=2.0.0 for the stable and >=0.200.0 for the unstable packages. Details on the full list of packages can be found in the migration guide.
Discover how Relativity, an early adopter of #OpenTelemetry, has transformed its observability practices over the years as OTel has progressed! Happening this Thursday, March 20, at 10AM Pacific. RSVP via the CNCF event link: https://community.cncf.io/events/details/cncf-opentelemetry-presents-otel-mean-end-user-conversation-with-jerome-johnson-and-cal-loomis-of-relativity/.
This week on March 20! We've got our very first repeat guest lined up for OTel Me, our end user Q&A. Join us to find out how the team at Relativity, an early #OpenTelemetry adopter, have handled the various project changes over the last 3 years, and what's next for them.
Last week before our #OpenTelemetry #Contributor Survey closes. Take it and help us enhance the contributor experience. We appreciate your time and feedback! https://buff.ly/MXTzSdD
opentelemetry.io
TL;DR Take our OpenTelemetry Contributor Survey and help us enhance the contributor experience. We appreciate your time and feedback! Since its founding, OpenTelemetry has had thousands of contributors from around the world, including end users, vendors, and students. Last summer some members of the OpenTelemetry project came together to create the Contributor Experience SIG, which is focused on ensuring that contributors of all types have a great experience with the OpenTelemetry project. Since then, the SIG has worked on several initiatives, including an Outreachy project to develop up-to-date contributor docs.
We’re thrilled to announce that #OpenTelemetry Demo 2.0 is here! https://buff.ly/4hTCv7x
Take our #OpenTelemetry #Contributor Survey and help us enhance the contributor experience. We appreciate your time and feedback! https://opentelemetry.io/blog/2025/contribex-survey/
#OpenTelemetry SIG Mainframe is looking for your feedback! Please fill out the following survey: https://buff.ly/3PZdpaW
opentelemetry.io
The OpenTelemetry project and The Open Mainframe Project established the SIG “OpenTelemetry on Mainframe” at the beginning of 2024. Our focus is to enable OpenTelemetry on the mainframe for improved end-to-end observability and to support mainframe participation in hybrid cloud applications. The SIG launched a new survey that calls for your participation. Background While there are many definitions of observability, we will refer here to the ability to receive actionable insight about the behavior of hybrid applications spanning multiple landing zones such as public and private cloud and mainframe environments.
🎉 Grafana Beyla 2.0 is here! Check out new features related to distributed tracing, #Kubernetes deployments, and deeper alignment with #OpenTelemetry.
grafana.com
Grafana Beyla 2.0 is here, delivering a number of new features related to distributed tracing, Kubernetes deployments, and deeper alignment with OpenTelemetry.
🎉 Grafana Beyla 2.0 is here! Check out new features related to distributed tracing, #Kubernetes deployments, and deeper alignment with #OpenTelemetry.
grafana.com
Grafana Beyla 2.0 is here, delivering a number of new features related to distributed tracing, Kubernetes deployments, and deeper alignment with OpenTelemetry.
New blog post: Observing #Lambdas using the #OpenTelemetry Collector Extension Layer
If you are you a #mainframe user, you can help #OpenTelemetry SIG Mainframe by filling out the following survey:
Missed our CFP writing livestream? No problem! You can catch the recording below! Got follow-up questions? Drop them in the #otel-sig-end-user channel on CNCF Slack!
youtube.com
If you've got the KubeCon rejection blues, cheer up, because we've got just what you need! Join our panel of experts to learn how to craft a successful CFP. ...
We are excited to announce the beta release of the #OpenTelemetry #Go Auto-Instrumentation project!
We are excited to announce the beta release of the #OpenTelemetry #Go Auto-Instrumentation project!
We are excited to announce the beta release of the #OpenTelemetry #Go Auto-Instrumentation project!
Are you a #mainframe user? Then take our #OpenTelemetry on Mainframe priorities survey to let us know, which activities we should focus on! https://buff.ly/3PZdpaW
New blog post: #Kubernetes annotation-based discovery for the #OpenTelemetry Collector
Fediverse Advent Calendar 23日目の記事です。
最後に衝撃の事実が判明しました。
はてなブログに投稿しました
MastodonのOpenTelemetry対応をちょっとだけ改善してみた - await wakeUp(); https://sublimer.hatenablog.com/entry/2024/12/23/075236
#はてなブログ #Mastodon #OpenTelemetry #Observability #FediverseAdventCalendar
There's still time to give gift of feedback! ❤️🔭🎁 Are you a developer using #OpenTelemetry? Then take our OTel developer experience survey to let us know what you think! Your feedback helps us make improvements to the project. Survey runs through January 31st, 2025.
Fediverse Advent Calendar 23日目の記事です。
最後に衝撃の事実が判明しました。
はてなブログに投稿しました
MastodonのOpenTelemetry対応をちょっとだけ改善してみた - await wakeUp(); https://sublimer.hatenablog.com/entry/2024/12/23/075236
#はてなブログ #Mastodon #OpenTelemetry #Observability #FediverseAdventCalendar
We’re back with our third edition of Humans of #OpenTelemetry, this time from #KubeCon NA in Salt Lake City, Utah, USA: https://buff.ly/49QOjo4
Join us TODAY (Dec 19th at 13:00 EST) for our final event of 2024: OTel Me...An End User Conversation. We wrap up the year by chatting with Ariel Valentin of GitHub! Sign up below to join us! #opentelemetry
The #OpenTelemetry End-User SIG surveyed the community on how user-friendly our documentation is! You can read the insights from the survey in our latest blog post: https://buff.ly/4gKBFJt
Do you love #OpenTelemetry? Are you a developer using #OTel? Then take our OTel developer experience survey to let us know what you think! Your feedback helps us make improvements to the project. Survey runs through January 31st, 2025. ❤️🔭
THIS WEEK, on Dec 19th at 13:00 EST, join us for our final event of 2024: OTel Me...An End User Conversation. We wrap up the year by chatting with Ariel Valentin of GitHub! Sign up below to join us! #opentelemetry
When observing our CI/CD we typically look at performance metrics of various entities, such as the pipeline run duration, the queue length, or the worker count.
Time to standardize that! see #OpenTelemetry's Special Interest Group for #CICD #Observability latest PR:
https://www.linkedin.com/feed/update/urn:li:activity:7274318442936098817/
This holiday season, give the gift of feedback. 🎁 Are you a developer using #OpenTelemetry? Then take our OTel developer experience survey to let us know what you think! Your feedback helps us make improvements to the project. Survey runs through January 31st, 2025.
Save the date for OTel Me...An End User Conversation on Dec 19th at 13:00 EST, and is our final event of 2024. We wrap up the year by chatting with Ariel Valentin of GitHub! Sign up below to join us! #opentelemetry
What do you think about #OpenTelemetry support for database migration tools such as golang-migrate?
Worth the effort?
#Fedify 1.3.0이 릴리스되었습니다. #OpenTelemetry 서포트들 비롯해 많은 것이 바뀌었으니, 아래 릴리스 노트에서 살펴보세요!
#Fedify's @opentelemetry instrumentation works like a charm with @getsentry!
Okay. While #Sentry SDK for #Node.js supports #OpenTelemetry integration, Sentry SDK for #Deno does not.
Does anyone have experience integrating Spans measured using the #OpenTelemetry API with #Sentry in #Node.js or #Deno?
According to the docs in the Sentry SDK, OpenTelemetry integration is out of the box and doesn't require any configuration, but Spans instrumented using the OpenTelemetry API are ignored. Spans made with the Sentry API are working fine.
https://docs.sentry.io/platforms/javascript/guides/node/opentelemetry/
We are going to add instrumentation support for #OpenTelemetry to #Fedify. What kind of spans or events would you like to be instrumented?
🔭✨ Know someone who is passionate about #OpenTelemetry? Nominate them for our #OTel Community Award! Nominations are open until midnight UTC on November 8th. Winners will be announced at KubeCon next week! Click below for more info! ⬇️
I usually don't post about work-related stuff except for ranting or asking technical questions, but this time I'll make an exception:
Today, Dash0 went out of beta and I am very proud to be part of the magnificent team making this #OpenTelemetry Native #Observability solution possible. 😀
If you’re looking for an observability solution, such as #Grafana, #ElasticStack, #NewRelic, #Datadog or #SigNoz, then give it a spin!
Okay, all done. You can now use #LogTape to send logs directly to the #OpenTelemetry collector!
I'm implementing an #OpenTelemetry sink for #LogTape, but it's more complicated than I thought and has a lot of package dependencies… 🤔
❓ Is there any database migration tool (such as #Flyway, Liquibase, go-migrate, …) which supports emitting its progress via #OpenTelemetry?
"@Veeam Strengthens #Data Resilience ... with Increased Visibility to Potential #Cyber Threats Through #Integration with @Splunk"
Hrrm. Why the proprietary 'App for Splunk' architecture, instead of a modern technique like #streaming or #OpenTelemetry?
As we take our first steps into the fediverse, we are wondering - are there specific things you'd like to see from us?
Obviously we plan to keep posting about #observability & #OpenTelemetry, with our usual meanderings into engineering management & #devops. And you'll never pry us away from #hugops or snark.
Also: if you're wondering why we followed you here, it's because you were following us on Twitter and we wanted you to know we were here!