Skip to main content

debugwand 🪄

A zero-preparation remote debugger for Python applications running in Kubernetes clusters or Docker containers.

Made possible by the Python 3.14 remote debugging attachment protocol and debugpy

Note: debugwand is experimental and not made for production. Use at your own risk.

Features

  • Zero-preparation debugging - No code changes or restarts required
  • Full breakpoint debugging - Using debugpy
  • Kubernetes-native - Handles pod discovery, service routing, and Knative
  • Container support - Debug Python processes in local Podman or Docker containers
  • Process selection - Interactive selection with CPU/memory metrics

Requirements

  • Python 3.14+ on both local machine and target
  • debugpy installed in the target container
  • kubectl (for Kubernetes) or Docker CLI (for containers)
  • SYS_PTRACE capability - on Linux/containers (see troubleshooting)

Quick Start

Kubernetes

# List pods and Python processes
wand pods -n my-namespace -s my-service --with-pids

# Debug a live process
wand debug -n my-namespace -s my-service

Docker/Podman

# Debug a container (must have SYS_PTRACE capability)
wand debug --container my-container

Containers must be started with --cap-add=SYS_PTRACE and -p 5679:5679

Connect your editor

VSCode launch configuration:

{
  "name": "Attach to debugwand",
  "type": "debugpy",
  "request": "attach",
  "connect": { "host": "localhost", "port": 5679 },
  "pathMappings": [{ "localRoot": "${workspaceFolder}", "remoteRoot": "/app" }]
}

Other DAP clients: Connect to localhost:5679

Configuration

Environment Variable Description
DEBUGWAND_SIMPLE_UI Set to 1 for simplified output (useful for Tilt/CI)
DEBUGWAND_AUTO_SELECT_POD Set to 1 to auto-select the newest pod

Additional Documentation

How it works

┌─────────────────┐                            ┌────────────────────┐
│  Local Machine  │                            │   Pod / Container  │
│                 │                            │                    │
│  debugwand CLI  │◄─ kubectl/docker/podman ─► │   Python App       │
└────────┬────────┘                            └────────┬───────────┘
         │                                              │
         │ 1. Discover pods (k8s only)                  │
         ├─────────────────────────────────────────────►│
         │                                              │
         │ 2. List Python processes                     │
         ├─────────────────────────────────────────────►│
         │                                              │
         │ 3. Select process                            │
         │                                              │
         │ 4. Inject debugpy via                        │
         │    sys.remote_exec()                         │
         ├─────────────────────────────────────────────►│
         │                                              │
         │                            5. debugpy.listen()
         │                               ┌──────────────┤
         │ 6. Port-forward (k8s)         │              │
         │    or exposed port            │              │
         │◄──────────────────────────────┼─────────────►│
         │    localhost:5679             │              │
         │                               └──────────────┤
         │ 7. Connect editor                            │
         ├──────────────────────────────────────────────┤
         │         Debugging Session                    │
         │◄────────────────────────────────────────────►│

License

MIT

Metadata

Release files for debugwand 0.5.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for debugwand 0.5.0
File Size Uploaded
debugwand-0.5.0.tar.gz 158.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for debugwand 0.5.0
File Interpreter ABI Platform
debugwand-0.5.0-py3-none-any.whl Python 3 none any Details

Total release size: 180.9 kB

Release files / debugwand-0.5.0.tar.gz

Download URL debugwand-0.5.0.tar.gz
Size 158.4 kB
Tags Source
SHA-256 checksum
How to use checksums
d18328f8e684d4b155b7cc5bca94c3cdb702ffc8b39a4e2bf568d667fb1f2d2e
BLAKE2b-256 checksum
How to use checksums
fab10ef12d4ec68ac33545d3506a73ade0fffffcc674dca28cb9e0ecbf00e4a0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.11.5 {"installer":{"name":"uv","version":"0.11.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / debugwand-0.5.0-py3-none-any.whl

Download URL debugwand-0.5.0-py3-none-any.whl
Size 22.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
8b6a1299a9dbfd6bd6dcb0893cd62088287ccdd6eaef57af0ccb02c332bd0bc9
BLAKE2b-256 checksum
How to use checksums
535c62d63507218d237ea9da78d8ebad1b6422919fe529ce4e64871425a50253
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.11.5 {"installer":{"name":"uv","version":"0.11.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release history Release notifications | RSS feed

This release

0.5.0 This release

2 release files

0.4.2

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.3

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.0.2

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page