A debugging dashboard for FastAPI applications providing real-time request, database query, and exception monitoring.
Just one line to add powerful monitoring to your FastAPI app!
See it in Action
Installation
pip install fastapi-radar
Or with your favorite package manager:
# Using poetry poetry add fastapi-radar # Using pipenv pipenv install fastapi-radar
Note: The dashboard comes pre-built! No need to build anything - just install and use.
Quick Start
With SQL Database (Full Monitoring)
from fastapi import FastAPI from fastapi_radar import Radar from sqlalchemy import create_engine app = FastAPI() engine = create_engine("sqlite:///./app.db") # Full monitoring with SQL query tracking radar = Radar(app, db_engine=engine) radar.create_tables() # Your routes work unchanged @app.get("/users") async def get_users(): return {"users": []}
Without SQL Database (HTTP & Exception Monitoring)
from fastapi import FastAPI from fastapi_radar import Radar app = FastAPI() # Monitor HTTP requests and exceptions only # Perfect for NoSQL databases, external APIs, or database-less apps radar = Radar(app) # No db_engine parameter needed! radar.create_tables() @app.get("/api/data") async def get_data(): # Your MongoDB, Redis, or external API calls here return {"data": []}
Access your dashboard at: http://localhost:8000/\_\_radar/
Features
- Zero Configuration - Works with any FastAPI app (SQL database optional)
- Request Monitoring - Complete HTTP request/response capture with timing
- Database Monitoring - SQL query logging with execution times (when using SQLAlchemy)
- Exception Tracking - Automatic exception capture with stack traces
- Real-time Updates - Live dashboard updates as requests happen
- Flexible Integration - Use with SQL, NoSQL, or no database at all
Configuration
radar = Radar( app, db_engine=engine, # Optional: SQLAlchemy engine for SQL query monitoring dashboard_path="/__radar", # Custom dashboard path (default: "/__radar") max_requests=1000, # Max requests to store (default: 1000) retention_hours=24, # Data retention period (default: 24) slow_query_threshold=100, # Mark queries slower than this as slow (ms) capture_sql_bindings=True, # Capture SQL query parameters exclude_paths=["/health"], # Paths to exclude from monitoring theme="auto", # Dashboard theme: "light", "dark", or "auto" db_path="/path/to/db", # Custom path for radar.duckdb file (default: current directory) )
Custom Database Location
By default, FastAPI Radar stores its monitoring data in a radar.duckdb file in your current working directory. You can customize this location using the db_path parameter:
# Store in a specific directory radar = Radar(app, db_path="/var/data/monitoring") # Creates: /var/data/monitoring/radar.duckdb # Store with a specific filename radar = Radar(app, db_path="/var/data/my_app_monitoring.duckdb") # Creates: /var/data/my_app_monitoring.duckdb # Use a relative path radar = Radar(app, db_path="./data") # Creates: ./data/radar.duckdb
If the specified path cannot be created, FastAPI Radar will fallback to using the current directory with a warning.
Development Mode with Auto-Reload
When running your FastAPI application with fastapi dev (which uses auto-reload), FastAPI Radar automatically switches to an in-memory database to avoid file locking issues. This means:
- No file locking errors - The dashboard will work seamlessly in development
- Data doesn't persist between reloads - Each reload starts with a fresh database
- Production behavior unchanged - When using
fastapi runor deploying, the normal file-based database is used
# With fastapi dev (auto-reload enabled): # Automatically uses in-memory database - no configuration needed! radar = Radar(app) radar.create_tables() # Safe to call - handles multiple processes gracefully
This behavior only applies when using the development server with auto-reload (fastapi dev). In production or when using fastapi run, the standard file-based DuckDB storage is used.
What Gets Captured?
- ✅ HTTP requests and responses
- ✅ Response times and performance metrics
- ✅ SQL queries with execution times
- ✅ Query parameters and bindings
- ✅ Slow query detection
- ✅ Exceptions with stack traces
- ✅ Request/response bodies and headers
Contributing
We welcome contributions! Please see our Contributing Guide for details.
Development Setup
For contributors who want to modify the codebase:
- Clone the repository:
git clone https://github.com/doganarif/fastapi-radar.git
cd fastapi-radar- Install development dependencies:
- (Optional) If modifying the dashboard UI:
cd fastapi_radar/dashboard npm install npm run dev # For development with hot reload # or npm run build # To rebuild the production bundle
- Run the example apps:
# Example with SQL database python example_app.py # Example without SQL database (NoSQL/in-memory) python example_nosql_app.py
License
This project is licensed under the MIT License - see the LICENSE file for details.
