Model or dataset
deepflowio/deepflow avatar
deepflowio/deepflow

DeepFlow: Zero-Code eBPF Observability for Cloud and AI Workloads

eBPF Observability - Distributed Tracing and Profiling

4,264 stars485 forksGoApache-2.0

At a glance

What is it?
DeepFlow is an Apache-2.0 licensed, Go-based observability platform that uses eBPF to collect traces, metrics, and profiles without code changes. It targets Kubernetes and AI environments, with SmartEncoding for tag compression and support for OpenTelemetry, Prometheus, and other backends.
Who is it for?
Adopt DeepFlow if you run Kubernetes or AI workloads and need full-stack visibility without instrumenting every service, especially where code changes are impractical or impossible. Do not adopt it if you require deep application-level context that eBPF cannot infer, or if your team is already heavily invested in a manual instrumentation workflow and needs fine-grained control over span semantics.
Can I use it commercially?
Yes. Apache-2.0 is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 1 day ago.
What is it written in?
Mainly Go, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 15, 2026, and from our analysis. They are not legal advice.

DEEP OPEN-SOURCE ANALYSIS

The Problem DeepFlow Solves and Who It Targets

DeepFlow addresses a specific pain point: distributed tracing and profiling traditionally require developers to add instrumentation libraries to every service, which is costly and often leaves gaps in infrastructure components like gateways, databases, and message queues. DeepFlow eliminates that requirement by using eBPF to collect data from the kernel and application processes without code changes. The target user is a DevOps or SRE team managing complex cloud-native or AI applications in Kubernetes, where the service mesh, database, and DNS layers are as important as the application code itself. The README explicitly mentions AI services and GPU profiling, which suggests a focus on modern ML workloads that often run as black boxes. For these users, the promise is immediate observability across the full stack, from kernel functions to CUDA calls, without waiting for engineering teams to add SDKs.

How DeepFlow Works: eBPF Collection and SmartEncoding

DeepFlow's architecture separates data collection from storage and query. The Agent runs on every Kubernetes node, legacy host, or cloud host, and is responsible for AutoMetrics and AutoTracing. It uses eBPF to capture network traffic and system calls, then reconstructs requests and spans from that data. The Server runs in a Kubernetes cluster and handles agent management, tag injection, data ingest, and query services. The critical mechanism here is SmartEncoding, which the README claims reduces storage overhead tenfold compared to ClickHouse String or LowCard methods. Instead of storing raw string tags on every record, DeepFlow standardizes and pre-encodes metadata tags, separating custom tags from observability data. This allows high-cardinality dimensions without the typical performance penalty. The system also supports Wasm plugins for private protocols, meaning that if eBPF cannot parse a proprietary protocol out of the box, you can write a plugin to teach it. This is a key differentiator, though it implies that protocol recognition is not universal.

Getting DeepFlow Running: Deployment and Configuration

The quick start points to a dedicated deployment document for the Community Edition, which is the open-source core. The README does not include a one-line install command, but it does describe a demo environment accessible at ce-demo.deepflow.yunshan.net with login credentials deepflow / deepflow-2026. For a real deployment, you would follow the all-in-one guide at the provided URL. The Community Edition consists of two components: the Agent and the Server. The Agent is deployed on each node, while the Server runs in a Kubernetes cluster. You would need to configure the Agent to connect to the Server, and the Server to ingest data. The README also mentions that DeepFlow can serve as a storage backend for Prometheus, OpenTelemetry, SkyWalking, and Pyroscope, which implies you can point those tools at DeepFlow instead of running separate storage. The exact configuration keys are not in the README, so you would need to consult the deployment documentation for specifics like agent.yaml or server settings. The source compilation guide for the agent is available in agent/build.md.

Distributed Tracing and Profiling: What You Get Without Code

DeepFlow's core claim is that it provides distributed tracing for any request and continuous profiling for any function, all without code changes. For tracing, eBPF captures network packets and correlates them into spans, including infrastructure components like databases and NICs. The README says that full-stack network performance metrics and file I/O events are automatically attached to each span. For profiling, DeepFlow collects OnCPU, OffCPU, GPU, Memory, and Network call stacks, and can identify bottlenecks in business functions, libraries, runtime functions, and even kernel and CUDA functions. The cost is claimed to be below 1% overhead, but that figure is not backed by any benchmark in the README, so treat it as a vendor claim. The integration with distributed tracing means you can jump from a slow span to the function-level flame graph. This is powerful, but it also raises a question: how accurate is the correlation between kernel-level events and application-level transactions? The README does not explain the reconstruction algorithm, only that it works. For engineers who need precise span boundaries, this could be a concern.

Seamless Integration or Storage Backend? The API Story

DeepFlow positions itself as an observability platform that integrates with popular stacks. It can act as a storage backend for Prometheus, OpenTelemetry, SkyWalking, and Pyroscope, meaning those tools can send data to DeepFlow instead of their own storage. It also provides SQL, PromQL, and OTLP APIs, so you can use DeepFlow as a data source in Grafana or other dashboards. This is a pragmatic approach: rather than forcing you to abandon existing tooling, it slots in underneath. However, the README does not clarify whether DeepFlow's own eBPF-collected data can be exported to other backends, or if it is locked into its own storage. The tag injection feature adds metadata from cloud resources, Kubernetes labels, annotations, and CMDB attributes to all signals, which aims to eliminate data silos. The practical implication is that if you already run OpenTelemetry for manual instrumentation, DeepFlow can complement it, but the value of SmartEncoding only applies to data stored in DeepFlow, not to data you send elsewhere.

Limitations and Failure Modes: When DeepFlow Is the Wrong Tool

DeepFlow's zero-code approach has inherent limits. Because it relies on eBPF to observe network traffic and system calls, it cannot see inside encrypted payloads or application-level business logic that does not manifest in kernel events. For example, if your service uses end-to-end encryption, DeepFlow may only see connection metadata, not the actual request content. The README acknowledges this by supporting Wasm plugins for private protocols, but that requires you to write and maintain a plugin, which is not zero-code for the plugin developer. Another limitation is that the Server component must run in a Kubernetes cluster, so if your infrastructure is not Kubernetes-based, you need to adapt. The README also lists three editions: Community, Enterprise, and Cloud. The Enterprise edition is for organizations and is not fully open source; the Cloud edition is in beta. This means that some features, such as team collaboration, are not available in the Community Edition. Finally, the README does not provide details on how DeepFlow handles very high throughput environments or whether the eBPF probes cause any CPU contention on busy nodes. You would need to test this in your own environment.

Alternatives and How DeepFlow Differs

The most direct alternative is OpenTelemetry, which DeepFlow acknowledges as a source of vendor-neutral APIs. OpenTelemetry requires code instrumentation, either manual or automatic via language-specific agents, to generate traces and metrics. DeepFlow's approach is fundamentally different: it uses eBPF to observe traffic without any code changes, which means it can cover services that lack instrumentation, including third-party black boxes. However, OpenTelemetry provides a standard data model and SDKs that give developers fine-grained control over span attributes and context propagation. DeepFlow does not offer that level of control; it infers spans from network traffic, which may miss application-specific semantics. Another alternative is a dedicated profiler like Pyroscope, which DeepFlow can also serve as a backend for, but Pyroscope typically requires an agent to be installed in the application process. DeepFlow's eBPF-based profiling is less invasive. The key trade-off is between control and coverage. If you need precise, developer-defined traces, OpenTelemetry is the safer choice. If you need broad coverage with zero effort, DeepFlow is the stronger candidate.

Maintenance, Upgrades, and License Considerations

DeepFlow is released under the Apache-2.0 license, which is permissive and allows commercial use, modification, and distribution without copyleft restrictions. The repository has recent releases, with v7.2.1 in August 2026 and v7.1 in March 2026, indicating active maintenance. The project has a documented milestone plan and accepts issues and pull requests. The maintenance cost for adopters is not trivial: you must run the Server component in Kubernetes, manage the Agent on every node, and keep both updated as new versions arrive. The eBPF programs are kernel-version sensitive, so you need to track kernel updates and verify that DeepFlow's probes still work after a kernel upgrade. The README does not provide a migration guide or upgrade path, so you would need to rely on the documentation website. Also, the SmartEncoding feature is a proprietary algorithm, even though the code is open source; you need to understand how it handles schema changes when you add new tag dimensions. The project's affiliation with CNCF landscapes and a SIGCOMM paper suggests academic and industry credibility, but that does not reduce the operational burden of running a separate observability stack.

Editorial conclusion

Adopt DeepFlow if you run Kubernetes or AI workloads and need full-stack visibility without instrumenting every service, especially where code changes are impractical or impossible. Do not adopt it if you require deep application-level context that eBPF cannot infer, or if your team is already heavily invested in a manual instrumentation workflow and needs fine-grained control over span semantics. Before committing, verify that your kernel version supports the required eBPF features, test the Wasm plugin path for any private protocols, and confirm that the SmartEncoding tag compression works with your highest-cardinality labels. DeepFlow is a serious option for zero-code observability, but its value depends on the fit between its automated collection model and your specific tracing and profiling needs.

Official sources

  1. deepflowio/deepflow on GitHub
  2. License: Apache-2.0
  3. Project website
  4. README
  5. Releases
Community notes

Community notes