selfhost.directory

The index of self-hostable projects — ranked, categorized and served with live updates.
Own your data and stop giving it to big tech.

Qtap logo

Self-host Qtap

v0.17.1

eBPF agent capturing pre-encrypted network traffic

AlphaOpen SourceApache-2.0
Updatedlast week
LanguageC
Setup difficultyAdvanced
Stars
1 465
RAM
Sufficient memory for BPF operations
Storage
Storage space for logs and configuration
Port
10001 (metrics and DevTools HTTP endpoint)
Docker
us-docker.pkg.dev/qpoint-edge/public/qtap:v0
Install with Docker
Qtap demo showing real-time traffic capture in terminalDevTools web UI showing Chrome DevTools-like network tab for HTTP/S traffic inspection

What is Qtap?

Qtap is an eBPF-based network traffic analysis agent that hooks into TLS libraries to capture traffic before encryption and after decryption. It runs on Linux with kernel 5.10+ and BTF enabled, and can be deployed as a standalone binary, Docker container, Helm chart, or Kubernetes DaemonSet. The agent provides process and container attribution for each connection, a flexible plugin system for traffic processing, and multiple output destinations including stdout and S3-compatible storage. It includes a built-in DevTools web UI accessible on port 10001 for live HTTP/S traffic inspection, plus Prometheus metrics endpoints and OpenTelemetry tracing support. The project is in early development (version 0.17.x) and licensed under Apache-2.0.

Should you self-host Qtap?

Qtap scores 51/100 on selfhost.directory (how scoring works) and ranks #21 of 48 in Network Monitoring. It has 1 465 GitHub stars.

There was no stable release in the past 12 months, so check the repository's recent activity before you rely on it.

Setup is advanced: plan for several services and some ongoing maintenance. An official Docker image is available. It is Apache-2.0-licensed and written mostly in C.

Its closest alternative on selfhost.directory is mitmproxy (86/100, 46 451 stars). It scores higher overall, so compare the two before you pick. See Qtap vs mitmproxy side by side.

Features

  • Container runtime integrationOptional
  • DevTools web UI
  • eBPF traffic capture
  • Flexible plugin system
  • Kubernetes daemonset deployment
  • OpenTelemetry tracing
  • Pre-encryption TLS visibility
  • Process and container attribution
  • Prometheus Metrics
  • Traffic filtering and rules

Qtap README

How to install Qtap

Install Qtap with Docker

Environment variables
TINI_SUBREAPER=1, config via --config flag

docker pull us-docker.pkg.dev/qpoint-edge/public/qtap:v0

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
-v "$(pwd):/app/config"
-e TINI_SUBREAPER=1
--ulimit=memlock=-1
us-docker.pkg.dev/qpoint-edge/public/qtap:v0
--log-level=info
--log-encoding=console
--config=/app/config/qpoint.yaml

Requires Docker, Linux host with kernel 5.10+, privileged access

How to configure Qtap

  • --configPath to YAML configuration file or HTTP/HTTPS URL

    Path to YAML configuration file or HTTP/HTTPS URL

    values: local file path or remote URL

  • --enable-dev-toolsfalseEnable browser-based DevTools UI at http://localhost:10001/devtools

    Enable browser-based DevTools UI at http://localhost:10001/devtools

    values: boolean flag

  • --log-encodingconsoleLog format

    Log format

    values: console, json

  • LOG_ENCODINGjsonLog encoding for container

    Log encoding for container

    values: console, json

  • --log-levelinfoSet logging detail level

    Set logging detail level

    values: debug, info, warn, error

  • LOG_LEVELinfoLog level for container

    Log level for container

    values: debug, info, warn, error

  • OTEL_EXPORTER_OTLP_PROTOCOLOpenTelemetry OTLP protocol

    OpenTelemetry OTLP protocol

    values: per OpenTelemetry spec

  • OTEL_TRACES_EXPORTEROpenTelemetry traces exporter

    OpenTelemetry traces exporter

    values: per OpenTelemetry spec

  • --registration-tokenToken for cloud-connected mode (Qplane)

    Token for cloud-connected mode (Qplane)

    values: token string

  • servicesEvent and object storage configuration

    Event and object storage configuration

    values: stdout, s3, etc.

  • stacksProcessing plugin stacks

    Processing plugin stacks

    values: plugin configurations

  • STATUS_LISTEN0.0.0.0:10001Address for metrics/health endpoint

    Address for metrics/health endpoint

    values: host:port

  • --tagsDeployment tags for categorization (comma-separated key:value pairs)

    Deployment tags for categorization (comma-separated key:value pairs)

    values: key:value pairs

  • tapTraffic capture settings

    Traffic capture settings

    values: egress/ingress, loopback, DNS, HTTP stack

  • TINI_SUBREAPER1Enable Tini subreaper for signal handling

    Enable Tini subreaper for signal handling

    values: 1

  • --tls-probesnodetls,openssl,gotls,javasslTLS libraries to monitor

    TLS libraries to monitor

    values: nodetls, openssl, gotls, javassl (comma-separated)

  • version2Configuration file version

    Configuration file version

    values: 2

FAQ

What's the difference between the open-source and Pro versions?

Open Source version supports OpenSSL only. Pro version adds support for Java, Go, NodeJS, additional plugins, and a cloud control plane for centralized management.

Can I configure which traffic is captured?

Yes, Qtap provides configuration options to control which traffic is captured with customizable rules for filtering based on various criteria, and TLS inspection can be disabled with --tls-probes=none.

Where does Qtap send the captured data?

Event data (connection metadata) can be sent to stdout or the Qpoint control plane. Object data (actual request/response content) can be sent to stdout or any S3-compatible storage you control.

Do I need to modify my applications to use Qtap?

No. Qtap works without any application instrumentation or code changes.

Does Qtap work on non-Linux platforms?

Currently Qtap is focused on Linux environments. The team has expressed interest in exploring Microsoft's eBPF implementation for potential Windows support in the future.

Does Qtap require root access?

Yes, Qtap requires root privileges to function as it uses eBPF to hook into kernel and userspace program functions.

Which programming languages and TLS libraries does Qtap support?

The open-source version currently supports OpenSSL. The Pro version adds support for Java, Go, and Node.js.

Will Qtap conflict with other eBPF tools like Cilium or Falco?

No. The Linux kernel is designed to support multiple eBPF programs running simultaneously. Qtap can run alongside Cilium, Falco, or any other eBPF-based tools without conflicts.

Is eBPF technology proven at enterprise scale?

Yes. All three major cloud providers use eBPF-based networking (Cilium) as their default or recommended CNI for Kubernetes. Major financial institutions run eBPF across thousands of developers and millions of containers. Leading content delivery and streaming platforms rely on eBPF for production networking and security.

How does eBPF ensure it won't crash my systems?

The Linux kernel includes a built-in verifier that mathematically proves eBPF programs cannot loop infinitely, access invalid memory, modify kernel code, or crash the system. Programs failing verification are rejected entirely.

Is this a security vulnerability?

No. As noted by eBPF expert Brendan Gregg, this is not a vulnerability because eBPF requires root access, and banning eBPF would reduce security by preventing eBPF-based security solutions.

How is Qtap different from traditional monitoring approaches?

Unlike forward proxies (which require TLS termination, certificate management, and introduce performance bottlenecks) or network firewalls (which operate at L3/L4 and lack payload visibility), Qtap does not require TLS termination, has minimal performance impact, provides process-level attribution, works without application modifications, and offers pre-encryption visibility.

What problem does Qtap solve?

Qtap solves the challenge of understanding what's happening inside encrypted traffic leaving production systems, such as identifying PII exposure or debugging integration issues, without the complexity and performance bottlenecks of traditional forward proxies.

What is Qtap?

Qtap is a lightweight eBPF sensor that taps into network traffic at the kernel level, hooking into common TLS libraries like OpenSSL before encryption and after decryption to provide visibility into actual request/response payloads of HTTPS/TLS traffic without terminating connections or managing certificates.

More in Network Monitoring

Rate this project

Click to rate — no account needed.

0 comments

Posting as guest
Loading comments…