Skip to main content

AI-powered runtime debugging agent for Python web applications

Project description

Python Debug Agent

debug-agent-py Tools Inspectors Python PyPI

An AI-powered runtime debugging agent that embeds directly into your Python web application. Add one dependency, configure an LLM key, and chat with your live app at /agent to inspect memory, threads, GC, modules, database connections, Redis, Django models/URLs, Celery tasks, Flask extensions, Jinja2 templates, signals, routes, HTTP requests, and more — 113 diagnostic tools across 38 inspectors.

Version Support

Python Version Status
3.8 Not supported
3.9 Minimum supported
3.10 Supported
3.11 Supported
3.12 Supported
3.13 Supported
3.14 Tested

Uses from __future__ import annotations so X | Y union types work on Python 3.9+. Optional dependencies (Flask, SQLAlchemy, Redis, Celery) are not required at install time.

Quick Start

1. Install

pip install debug-agent-py

2. Integrate (Flask)

from flask import Flask
from debug_agent import setup_debug_agent

app = Flask(__name__)

# One line to integrate
setup_debug_agent(app)

3. Configure LLM

export LLM_API_KEY=your-key
export LLM_BASE_URL=https://open.bigmodel.cn/api/coding/paas/v4  # default
export LLM_MODEL=glm-5.2                                          # default

Supports any OpenAI-compatible endpoint.

4. Run and open

http://localhost:8000/agent

Features

  • Streaming AI responses with real-time tool call badges (pending / success / error)
  • Context compression — automatically summarizes old conversation when token limit is approached
  • Dark-themed chat UI with full markdown rendering (tables, code blocks, lists)
  • Max tool rounds (25) with forced final summary when limit is reached
  • 113 diagnostic tools across 38 inspectors
  • Works with Flask, FastAPI, and Django
  • Zero external dependencies (no Datadog, no Grafana, no APM)

Inspectors & Tools (113)

Memory Inspector

Tool Description
get_tracemalloc_stats Python tracemalloc top allocations by file/line
get_object_counts Count objects by type via gc
get_gc_stats gc.get_stats() generation details
get_ref_cycles Count reference cycles detected by gc
trigger_gc Force garbage collection

Threads Inspector

Tool Description
get_thread_info List all threads with name, daemon, alive status
get_thread_count Active thread count
get_thread_summary Thread state distribution
get_thread_stacks Current frame/stack for all threads

Database Inspector

Tool Description
get_sqlalchemy_engines Find SQLAlchemy engines and pool status
get_db_connections Inspect database connection pools
get_db_pool_config Pool configuration: size, timeout, recycle settings

Modules Inspector

Tool Description
get_loaded_modules List loaded Python modules (sys.modules) with versions
get_module_count Total loaded module count
get_installed_packages List installed packages from pip

Async Tasks Inspector

Tool Description
get_async_tasks List pending asyncio tasks
get_event_loop_info Event loop details: type, running state
get_pending_callbacks List scheduled callbacks on the event loop

Runtime Inspector

Tool Description
get_memory_info Process memory info (RSS, VMS, shared)
get_cpu_usage CPU usage percentage
get_python_info Python version, implementation, executable path
get_open_fds Open file descriptor count and limits

System Inspector

Tool Description
get_system_info Hostname, platform, CPU cores, disk
get_environment_variables Environment variables (masked secrets)
get_disk_usage Disk usage for the working directory

Framework Inspector

Tool Description
get_routes List all registered web routes/endpoints
get_middleware List registered middleware

HTTP Tracker Inspector

Tool Description
get_recent_requests Recent HTTP requests ring buffer
get_slow_requests Slowest requests by duration
get_error_requests Error requests (4xx/5xx)
get_request_stats P50/P95/P99 latency, error rate

Redis Inspector

Tool Description
get_redis_info Redis server info: memory, clients, persistence
get_redis_keys Scan Redis keyspace with pattern matching
get_redis_config Redis runtime configuration (CONFIG GET)
get_redis_slowlog Redis slow query log entries

Django Inspector

Tool Description
get_django_models List Django models with app label, table name, field count
get_django_urls List all URL patterns with view names and namespaces
get_django_settings Key Django settings (DBs, INSTALLED_APPS, MIDDLEWARE)
get_django_migrations Migration status per app: applied vs pending

Celery Inspector

Tool Description
get_celery_tasks List registered Celery tasks with routing info
get_celery_workers Active Celery workers with pool and concurrency
get_celery_queues Queue depth and message stats per queue

Flask Extensions Inspector

Tool Description
get_flask_extensions List registered Flask extensions and their bindings
get_flask_blueprints List Flask blueprints with URL prefixes and routes
get_flask_config Flask configuration object values (secrets masked)

Jinja2 Inspector

Tool Description
get_jinja_templates List loaded Jinja2 templates with loader paths
get_jinja_filters List registered Jinja2 filters, tests, and globals

Signals Inspector

Tool Description
get_signal_handlers List Python signal handlers registered via signal module
get_django_signals List Django signal receivers connected to senders

WSGI/ASGI Inspector

Tool Description
get_wsgi_info WSGI server details (Gunicorn/uWSGI workers, config)
get_asgi_apps List ASGI application scope and middleware chain

Logging Inspector

Tool Description
get_logging_tree Python logging module logger hierarchy and levels
get_recent_logs Recent log entries from the built-in ring buffer
get_logging_config Current logging configuration (handlers, formatters, levels)
set_log_level Dynamically set the log level for a named logger

Cache Inspector

Tool Description
get_cache_info Stats for registered caches (hit rate, miss count, key count)
get_cache_keys List keys from a registered cache with optional prefix filter
clear_cache Clear all entries from a registered cache

Outbound HTTP Inspector

Tool Description
get_http_pool_stats HTTP client connection pool stats (connections, keepalive, timeouts)
get_outbound_summary Aggregated outbound HTTP call stats (total, avg latency, error rate)

File Descriptor Inspector

Tool Description
get_fd_count Current number of open file descriptors
get_fd_limit File descriptor soft and hard limits (RLIMIT_NOFILE)
get_fd_list List open file descriptors with type and details

Metrics Inspector

Tool Description
get_registered_metrics List all registered metrics from prometheus_client
get_metric_value Get current value of a specific metric by name

FastAPI Inspector

Tool Description
get_fastapi_openapi List FastAPI routes, schemas, and OpenAPI spec details

Warnings Inspector

Tool Description
get_warnings List captured Python warnings with category, message, and location

Deadlock & Lock Contention Inspector (v0.6.0)

Tool Description
get_lock_contention Threading lock contention stats (wait time, hold time, acquisition count)
detect_deadlock Analyze all threads for deadlock patterns (circular wait detection)
get_mutex_stats Per-lock statistics: total acquisitions, contentions, average wait time

Database Migration Inspector (v0.6.0)

Tool Description
get_migration_status Current schema version, applied count, last migration applied
get_pending_migrations Migrations not yet applied (version, description, dependencies)
get_migration_history Applied migration history (version, applied_at, duration_ms)

Configuration Inspector (v0.6.0)

Tool Description
get_config_snapshot All registered config values (sensitive keys masked)
get_env_vars_masked Process environment variables with secret values redacted
get_config_sources Config source hierarchy (env, file, defaults) with effective values

Feature Flags Inspector (v0.6.0)

Tool Description
get_feature_flags List all registered feature flags with current state
evaluate_feature_flag Evaluate a specific flag for a given context/user

Endpoint Testing Inspector (v0.6.0)

Tool Description
test_endpoint Make an HTTP request to own app, return full response (status, headers, body)
batch_test_endpoints Test multiple endpoints in one call with aggregated results
get_endpoint_coverage Compare registered routes vs tested endpoints (coverage report)

Connection Pool Inspector (v0.6.0)

Tool Description
get_pool_details Detailed DB pool stats (pool size, checked-in, checked-out, overflow)
detect_pool_leaks Heuristic leak detection (growing pool, high wait ratio, saturation)
get_pool_wait_stats Connection acquire wait stats (avg, P95, max wait, timeout count)

CPU Profiler Inspector (v0.7.0)

Tool Description
start_cpu_profile Start a CPU profiling session (cProfile/yappi)
stop_cpu_profile Stop CPU profiling and return collected profile data
get_top_functions Get top CPU-consuming functions from the current profile

Memory Leak Detector Inspector (v0.7.0)

Tool Description
take_heap_snapshot Capture a heap snapshot for leak analysis (tracemalloc)
compare_heap_snapshots Compare two heap snapshots to identify object growth
get_leak_candidates Identify objects likely to be memory leaks

Deployment/Build Info Inspector (v0.7.0)

Tool Description
get_build_info Build version, commit hash, and package metadata
get_deployment_info Deployment environment, container, and orchestration metadata
get_runtime_version Python interpreter version and implementation details

Snapshot & Diff Inspector (v0.7.0)

Tool Description
take_snapshot Capture a runtime state snapshot
compare_snapshots Compare two snapshots to identify state changes
list_snapshots List all saved snapshots with timestamps

Service Registry Inspector (v0.7.0)

Tool Description
get_registered_services List all registered application services
get_service_dependencies Map service-to-service dependency graph

Custom Tools

from debug_agent import debug_tool

@debug_tool('check_redis', 'Check Redis connection')
def check_redis():
    return {'connected': True}

Configuration

Env Var Default Description
LLM_BASE_URL https://open.bigmodel.cn/api/coding/paas/v4 LLM endpoint
LLM_API_KEY (required) API key
LLM_MODEL glm-5.2 Model name
LLM_MAX_TOOL_ROUNDS 25 Max tool-calling rounds
LLM_CONTEXT_WINDOW_TOKENS 100000 Context window size

Run the Demo

The demo uses Flask + redis-py + SQLAlchemy + Celery. Start Redis with Docker Compose first:

Docker Compose

# docker-compose.yml
services:
  redis:
    image: redis:7-alpine
    ports:
      - "6379:6379"
    command: redis-server --save 60 1 --loglevel warning
docker compose up -d

Start the app

export LLM_API_KEY=your-key
cd demo && python app.py
# Open http://localhost:8000/agent

PyPI

debug-agent-py

Built With

ggcode

This project was built using ggcode — an AI coding assistant for terminal-based development.

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

debug_agent_py-0.7.1.tar.gz (85.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

debug_agent_py-0.7.1-py3-none-any.whl (103.1 kB view details)

Uploaded Python 3

File details

Details for the file debug_agent_py-0.7.1.tar.gz.

File metadata

  • Download URL: debug_agent_py-0.7.1.tar.gz
  • Upload date:
  • Size: 85.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for debug_agent_py-0.7.1.tar.gz
Algorithm Hash digest
SHA256 ae2b6835dc1eed922fb182776a0ac2ce36cf05f26a5f3b91697810d016c19564
MD5 920cd75f060d863c69ada1c3cca24755
BLAKE2b-256 d66cca197d6b593c0ae369cbdf0b7c0c055c4c0f0f334b9aecffa8a2fed5d56a

See more details on using hashes here.

Provenance

The following attestation bundles were made for debug_agent_py-0.7.1.tar.gz:

Publisher: pypi-publish.yml on topcheer/python-debug-agent

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file debug_agent_py-0.7.1-py3-none-any.whl.

File metadata

  • Download URL: debug_agent_py-0.7.1-py3-none-any.whl
  • Upload date:
  • Size: 103.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for debug_agent_py-0.7.1-py3-none-any.whl
Algorithm Hash digest
SHA256 5e7aa90fd994b97928c863ac78d73db593500cff2a751b4d90bc700db6415fc1
MD5 2b1b27fc8c2a50ddc90052e1e0ea0860
BLAKE2b-256 7497b05ffde81acc613a5ea72b0a0ecad278470a4ed8cca9fa3821f2135ea6e3

See more details on using hashes here.

Provenance

The following attestation bundles were made for debug_agent_py-0.7.1-py3-none-any.whl:

Publisher: pypi-publish.yml on topcheer/python-debug-agent

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page