Flask
Set up debugger in a Flask project.
Last updated March 19, 2026
Python + Flask
This guide covers adding debugger to a Python app using Flask. The setup takes two lines.
| Feature | Support |
|---|---|
| Server console | Yes |
| Server errors | Yes |
| HTTP requests | Yes |
| Browser script injection | Automatic |
Prerequisites
- Python 3.10 or later
Install
pip install ephem-debugger[flask]
Or with uv:
uv add ephem-debugger[flask]
Set up
Initialize debugger on your Flask app:
from flask import Flask
from ephem_debugger_py.middleware.flask import init_debugger, logger, close
app = Flask(__name__)
init_debugger(app, port=5000)
log = logger()
@app.route("/")
def index():
log.info("home page hit")
return {"status": "ok"}
if __name__ == "__main__":
try:
app.run(port=5000, debug=True)
finally:
close()
Two lines handle debugger setup:
init_debugger(app, port=5000)— capture HTTP requests and start the sessionlog = logger()— get a logger that writes to both stderr and the debugger store
What gets captured
- HTTP requests — method, path, status code, and latency
- Logging calls — any
log.info(),log.error()call - Unhandled exceptions — captured via Flask's
teardown_requesthook, which runs even when exceptions occur
Verify
Start your server:
flask run
Open another terminal and query:
npx dbg statuspnpm dlx dbg statusbun x dbg statusyarn dlx dbg statusnpx dbg server consolepnpm dlx dbg server consolebun x dbg server consoleyarn dlx dbg server consoleProduction safety
Guard the middleware for production:
import os
if os.getenv("DEBUG") == "1":
init_debugger(app, port=5000)
Browser support
If your application serves HTML pages, the debugger automatically captures browser-side data. The middleware:
- Serves the browser client script at
/_/d.js - Handles browser log ingest at
POST /_/d - Auto-injects script tags into HTML responses before
</body>
No additional setup is needed. Query browser data with:
npx dbg browser consolepnpm dlx dbg browser consolebun x dbg browser consoleyarn dlx dbg browser consolenpx dbg browser errorspnpm dlx dbg browser errorsbun x dbg browser errorsyarn dlx dbg browser errorsnpx dbg browser networkpnpm dlx dbg browser networkbun x dbg browser networkyarn dlx dbg browser networknpx dbg browser cookiespnpm dlx dbg browser cookiesbun x dbg browser cookiesyarn dlx dbg browser cookiesnpx dbg browser storagepnpm dlx dbg browser storagebun x dbg browser storageyarn dlx dbg browser storageFull example
See the complete working example at examples/python/flask.



