qtap is a free, open source monitoring & observability project written in C and released under Apache-2.0. It has 1,459 GitHub stars, 55 forks and 8 open issues, and was last pushed 7 days ago. On this registry it ranks #200 of 271 tracked projects in Monitoring & Observability, with 5 head-to-head comparisons available.

What is qtap?

Qtap is an Apache-2.0 eBPF agent that intercepts network traffic inside the Linux kernel at the TLS/SSL layer, letting platform engineers, SREs, security auditors, and application developers inspect egress connections and the originating processes without modifying applications, deploying proxies, or managing certificates.

What it is

Qtap is an eBPF agent written in C that attaches to TLS/SSL functions in the Linux kernel and captures data both before encryption and after decryption. Captured traffic is passed to flexible plugins along with full context: process, container, host, user, and protocol. It operates out-of-band, which the README describes as adding no latency and only minimal disruption to application performance. It belongs to the Linux observability and security ecosystem alongside libbpf and container and Kubernetes tooling, as its topic list reflects.

The concrete problem it solves is opaque egress traffic. Encrypted connections hide what an application actually sends and receives, so debugging failed APIs, auditing for exposed sensitive data, or validating third-party integrations normally requires either instrumenting the application or inserting a TLS-terminating proxy and distributing certificates. Qtap replaces both approaches: it surfaces the original, unencrypted payload with process and container attribution, and it needs no source code access, which also covers poorly documented legacy systems.

Key capabilities

  • Captures pre-encryption and post-decryption payloads by attaching to TLS/SSL functions in the Linux kernel.
  • Supplies per-connection context spanning process, container, host, user, and protocol.
  • Passes traffic to plugins, so the agent can feed existing observability pipelines or act as a building block for custom tooling.
  • Ships a built-in DevTools interface in pkg/devtools/app, a Chrome DevTools-like network tab for a single Linux node with HTTP transaction monitoring, connection and process views, filtering, search, and detailed inspection.
  • Runs in Demo mode with curl -s https://get.qpoint.io/demo | sudo sh for a real-time terminal trial.
  • Exposes Go embedding for process discovery through process.NewMonitor in pkg/process, including lifecycle callbacks and resource release.
  • Deploys in containers with the image us-docker.pkg.dev/qpoint-edge/public/qtap:v0 using CAP_BPF, CAP_SYS_ADMIN, host PIDs, and host networking.

Who uses it and how

  • Security professionals verifying that sensitive data is not unintentionally exposed in network communications.
  • Developers debugging APIs that return errors or connections that fail, by reading the actual request parameters and responses.
  • API developers confirming that applications send correctly formatted requests and handle responses properly without changing code.
  • Engineers troubleshooting third-party integrations to see what data is exchanged versus what documentation claims.
  • Teams investigating legacy or poorly documented systems without source code access, and validating that application changes do not alter network communication patterns.

Getting started

Install the agent with curl -s https://get.qpoint.io/install | sudo sh, then run sudo qtap with defaults. For containerized deployment, run the us-docker.pkg.dev/qpoint-edge/public/qtap:v0 image privileged with CAP_BPF and host PIDs.

How it compares

The facts name no comparable tools and no list of paid products that Qtap replaces, so it stands alone in this registry. Its own documentation positions it as a component that can augment an observability pipeline or underlie a custom solution such as Qpoint, rather than as a substitute for a named incumbent.

When to use it — and when not to

A self-hoster must operate it on Linux kernel 5.10 or newer with BPF Type Format enabled at /sys/kernel/btf/vmlinux, with eBPF available and elevated privileges: sudo on the host, or a privileged container with CAP_BPF, CAP_SYS_ADMIN, host PIDs, host networking, a mounted /sys, a mounted Docker socket, and an unlocked memlock ulimit. Teams that cannot grant host-level privilege, run non-Linux platforms, or operate kernels below 5.10 without BTF should not pick it, and the built-in DevTools interface observes one Linux node at a time rather than a whole fleet.

project readme (upstream, from github) — read inline


Link to Qpoint website  Link to documentation  GitHub Repo stars  GitHub main branch check runs  GitHub License


An eBPF agent that captures traffic flowing through the Linux kernel. By attaching to TLS/SSL functions, data is intercepted before and after encryption and then passed to flexible plugins with full visibility along with all of the available context - process/container/host/user/protocol/etc. Qtap makes it possible to understand what's happening with your egress traffic, without modifying apps, installing proxies, or managing certs.


Qtap shows you exactly what data is being sent and received in its original, unencrypted form while operating out-of-band with minimal overhead, without adding latency or disrupting application performance.





Qtap can augment your existing observability piplines or can be used as a foundational component for a custom solution, like Qpoint, in a variety of ways, including:

  • Security auditing - Security professionals can verify sensitive data isn't being unintentionally exposed in network communications.
  • Debugging network issues - When APIs return errors or connections fail, seeing the actual data being sent helps identify misconfigured parameters, malformed requests, or unexpected responses.
  • API development - Developers can verify their applications are sending correctly formatted requests and properly handling responses without modifying code.
  • Troubleshooting third-party integrations - When integrating with external services, Qtap helps confirm what data is actually being exchanged versus what documentation claims.
  • Learning and exploration - Understanding how protocols actually work by observing real traffic between applications and services.
  • Legacy system investigation - When working with poorly documented or legacy systems, Qtap provides insights into how they communicate without requiring source code access.
  • Validation testing - Confirming that application changes don't unexpectedly alter network communication patterns.

Qtap Demo

For more information see the "How It Works" section of our website.

Quick Start

Want to give Qtap a test run? Spin up a temporary instance in Demo mode! See the traffic in real time right in your terminal.

# Run Qtap in demo mode
$ curl -s https://get.qpoint.io/demo | sudo sh

Or install and start running right away!

# Install the Qtap agent
$ curl -s https://get.qpoint.io/install | sudo sh

# Run with defaults!
$ sudo qtap

DevTools

Qtap includes a built-in DevTools interface (located in pkg/devtools/app) that provides a Chrome DevTools-like network tab for monitoring processes and traffic on a single Linux node. The interface offers real-time monitoring of HTTP transactions, network connections, and processes with filtering, search, and detailed inspection capabilities. See the DevTools README and DevTools documentation for more details.

DevTools Demo

Community

Converse with Qpoint devs and the contributors in Github Discussions.

Requirements

  • Linux with Kernel 5.10+ with BPF Type Format (BTF) enabled. You can check if your kernel has BTF enabled by verifying if /sys/kernel/btf/vmlinux exists on your system.
  • eBPF enabled on the host.
  • Elevated permissions on the host or within the Docker container running the agent:
    • on host run with sudo
    • within docker it's best to run with CAP_BPF, host pids, and privileged. For example:
    docker run \
        --user 0:0 \
        --privileged \
        --cap-add CAP_BPF \
        --cap-add CAP_SYS_ADMIN \
        --pid=host \
        --network=host \
        -v /sys:/sys \
        -v /var/run/docker.sock:/var/run/docker.sock \
        -e TINI_SUBREAPER=1 \
        --ulimit=memlock=-1 \
        us-docker.pkg.dev/qpoint-edge/public/qtap:v0 \
        --log-level=info
    

Embedding process discovery

Go applications can use process.NewMonitor in pkg/process to construct one Linux process monitor, receive the existing lifecycle callbacks, and release its resources without starting the QTap application. See the separate Go module example for usage, runtime requirements, and callback limitations.

Development

Prerequisites

OS
  • linux (kernel 5.10+)
    • MacOS developers at Qpoint have enjoyed using Lima as a quick, easy linux VM for development.
Tools:
  • go1.27.1+
  • make
  • clang14 (version 14 is required)
  • clang-tidy (optional/recommended)

Quick Start

$ git clone https://github.com/qpoint-io/qtap.git
$ make build
Popular Makefile targets

These are the most commonly used targets by Qpoint devs:

  • build - generates the eBPF binaries and builds the Go application
  • generate - generates the eBPF binaries
  • run - runs a debug instance of the Qtap
  • ci - runs all of the ci checks (nice to use before pushing code)

Telemetry

Traces

Tracing can be enabled by setting the OTEL_TRACES_EXPORTER and OTEL_EXPORTER_OTLP_PROTOCOL env vars per the OpenTelemetry docs [1] [2].

Metrics

We have two metrics endpoints on localhost:10001:

  • /metrics contains metrics that can be used to create dashboards for monitoring the activity on your system
  • /system/metrics contains metrics related to the health of the qtap agent

We have a sample Grafana dashboard: examples/dashboards/qtap-http-overview.json.

sample http overview dashboard

Project Status

This project is currently in early development. We're excited to share our work with the community and welcome your feedback! While we're actively improving things, please note that:

  • Some APIs may change as we refine our approach
  • Do

readme truncated — read the full docs on github

Frequently asked questions

Is qtap free to use?

qtap is open source under the Apache-2.0 licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does qtap do?

Qtap: An eBPF agent that captures pre-encrypted network traffic, providing rich context about egress connections and their originating processes.

What is qtap written in?

qtap is primarily written in C. Its source is publicly available at https://github.com/qpoint-io/qtap, and it has 1,459 GitHub stars.