Getting Started with DevTools
Get DevTools running and see your first HTTP/S traffic in under 5 minutes.
DevTools is a browser-based interface for real-time HTTP/S traffic inspection. Think Chrome DevTools Network tab, but for your Linux server.
See inside HTTPS without proxies or certificates
Know which process/container/pod made each request
Full request/response details including headers and bodies
No application restarts or code changes required

Prerequisites
Linux host with kernel 5.10+
Root/sudo access
A browser to access the DevTools UI
Step 1: Install Qtap
curl -s https://get.qpoint.io/install | sudo shThis installs the qtap binary to your system path.
For manual installation, see Linux Binary Installation.
docker pull us-docker.pkg.dev/qpoint-edge/public/qtap:v0For detailed Docker setup, see Docker Container Installation.
For Kubernetes deployments, install via Helm:
helm repo add qpoint https://charts.qpoint.io
helm repo update
helm install qtap qpoint/qtap --set devtools.enabled=trueFor detailed Kubernetes setup, see Helm Chart Installation.
Step 2: Run with DevTools Enabled
sudo qtap --enable-dev-toolsQtap starts capturing traffic immediately. DevTools is now accessible.
docker run -d --name qtap \
--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 \
-e ENABLE_DEV_TOOLS=true \
--ulimit=memlock=-1 \
us-docker.pkg.dev/qpoint-edge/public/qtap:v0 \
--log-level=warnThe -e ENABLE_DEV_TOOLS=true environment variable enables the DevTools UI.
If you installed with --set devtools.enabled=true, DevTools is already enabled.
Port-forward to access DevTools locally:
kubectl port-forward pod/qtap-xxxxx 10001:10001Replace qtap-xxxxx with your actual pod name from kubectl get pods.
Step 3: Access DevTools
Open your browser and navigate to:
http://localhost:10001/devtoolsYou should see the DevTools interface with three tabs: Processes, Connections, and Requests.
For remote servers, use SSH port forwarding:
# From your local machine
ssh -L 10001:localhost:10001 user@remote-server
# Then open in your local browser
open http://localhost:10001/devtoolsStep 4: Verify It Works
Generate some test traffic to confirm DevTools is capturing:
# In a separate terminal on the same host
curl https://httpbin.org/get
curl -X POST https://httpbin.org/post -d "test=data"Switch to the Requests tab in DevTools. You should see:
The
GETandPOSTrequests tohttpbin.orgStatus codes (200)
The process that made the request (
curl)Request timing
Click on any request to see:
Full request headers
Response body
A copy-pasteable cURL command
Success! If you see the requests appear in DevTools, everything is working. You're now capturing HTTP/S traffic with full visibility.
Quick Tour
DevTools has three tabs:
Processes
Real-time inventory of all processes on the host
Connections
Network connections with process attribution
Requests
Individual HTTP transactions with full details
For a detailed walkthrough of the interface, see the DevTools Interface Guide.
Next Steps
DevTools Interface Guide - Learn all the features of the DevTools UI
Storage Configuration - Save captured traffic to S3 for permanent storage
Traffic Capture Settings - Filter and customize what traffic is captured
Qplane - Centralized management for multi-host deployments
Troubleshooting
DevTools Not Loading
Check Qtap is running:
Binary:
ps aux | grep qtapDocker:
docker ps | grep qtap
Verify DevTools is enabled:
Binary: Must include
--enable-dev-toolsflagDocker: Must include
-e ENABLE_DEV_TOOLS=true
Check the port:
Ensure nothing else is using port 10001
Verify with
curl http://localhost:10001/devtools
No Traffic Appearing
Qtap must be running BEFORE traffic is generated - Restart qtap, then make requests
Check traffic direction - Default captures egress (outbound) traffic
Verify the event stream is working - Check the raw API to confirm events are flowing:
curl -sN http://localhost:10001/devtools/api/events | head -20You should see SSE events like event: process.started and event: connection.opened. If events are streaming but the UI is empty, try refreshing your browser.
Last updated