Inspect, debug, and operate your Django app from one place, directly inside the admin. No third-party dashboards. No signups.
pip install dj-control-roomThe Suite
A growing collection of Django admin panels that bring operational visibility to your stack without leaving your admin.
Authentication and Authorization
DJ Control Room
Select a panel to view monitoring tools.
Installed Panels
Redis Panel
Monitor connections, memory, keys, and throughput.
View panel →
Cache Panel
Inspect cached entries, hit/miss ratios.
View panel →
Celery Panel
Track workers, monitor task queues.
View panel →
URLs Panel
Browse registered URL patterns.
View panel →
Signals Panel
Inspect connected signal receivers.
View panel →
Errors Panel
Track recent exceptions, tracebacks.
View panel →
More panels coming soon
New panels are being built to extend your control room.
Every panel lives inside your Django admin. No new dashboards to learn, just the interface your team already knows.
Install only what you need. Each panel is an independent Django app with zero cross-dependencies.
Live stats, auto-refreshing views, and instant feedback on your infrastructure health. Straight from the admin.
Your data never leaves your servers. Full control over retention, access, and compliance requirements.
pip install, add to INSTALLED_APPS, done. No agents, sidecars, or external services to configure.
Leverage Django's auth system. Control who sees what using the groups and permissions you already manage.
Django Control Room runs inside the Django admin and relies entirely on Django's own authentication and permission system. There is no DEBUG=True requirement. A built-in granular permission system lets you control exactly which users and groups can access each panel, so you can deploy with confidence and operate your app every day.
Get Started
Install Django Control Room to get all of the tools at once, or install them separately if you prefer.
Install Control Room and specify any panels you want.
pip install dj-control-room[redis,celery] # or simply use [all]Drop it into your Django settings like any other app.
INSTALLED_APPS = [
# ...
"dj_control_room_base",
"dj_celery_panel",
"dj_redis_panel",
"dj_control_room", # place control room after any panels
]Register the control room route before your admin URLs.
urlpatterns = [
path("admin/dj-control-room-base/", include("dj_control_room_base.urls")), # for base
path("admin/dj-redis-panel/", include("dj_redis_panel.urls")), # for redis panel
path("admin/dj-celery-panel/", include("dj_celery_panel.urls")), # for celery panel
path("admin/dj-control-room/", include("dj_control_room.urls")), # for the control room
path("admin/", admin.site.urls),
]Head to your Django admin. The Control Room is ready.
Authentication and Authorization
DJ Control Room
Select a panel to view monitoring tools.
Installed Panels
Redis Panel
Monitor connections, memory, keys, and throughput.
View panel →
Cache Panel
Inspect cached entries, hit/miss ratios.
View panel →
Celery Panel
Track workers, monitor task queues.
View panel →
URLs Panel
Browse registered URL patterns.
View panel →
Signals Panel
Inspect connected signal receivers.
View panel →
Errors Panel
Track recent exceptions, tracebacks.
View panel →
More panels coming soon
New panels are being built to extend your control room.
Each panel provides its own configuration options. See individual panel information →
The Panels
Each project is a standalone Django app. Install one or all. They work independently.
Redis monitoring, inside your admin
Get full visibility into your Redis instances without leaving Django. Inspect keys, monitor memory usage, view real-time stats, and debug connection issues, all from a familiar interface.
Memory Used
48.2 MB
Connected Clients
12
Hit Rate
94.7%
Uptime
14d 6h
| Key | Type | TTL | Size |
|---|---|---|---|
| session:user_4821 | STRING | 1800s | 2.1 KB |
| cache:product_list | HASH | 3600s | 14.8 KB |
| queue:email_jobs | LIST | ∞ | 892 B |
| rate:api_10.0.1.5 | STRING | 60s | 48 B |
| lock:payment_proc | STRING | 30s | 64 B |
Cache visibility, zero guesswork
Understand exactly what's happening in your cache layer. Visualize hit rates, inspect stored keys, and debug invalidation issues so you can stop guessing and start optimizing.
| Key | Backend | TTL | Hits | Status |
|---|---|---|---|---|
| views.homepage | Redis | 300s | 1,284 | active |
| views.product_42 | Redis | 600s | 847 | active |
| api.user_prefs | Memcached | 120s | 2,103 | active |
| template.nav_frag | File | 3600s | 432 | stale |
Task queues, tamed
Monitor your Celery workers, queues, and tasks from Django admin. See what's running, what's failed, and what's stuck without deploying Flower or a separate monitoring stack.
| Task | Status | Duration | When |
|---|---|---|---|
| send_welcome_email | success | 0.4s | 2m ago |
| process_payment | success | 1.2s | 4m ago |
| generate_report | running | — | now |
| sync_inventory | failed | 8.1s | 6m ago |
| resize_image | retry | — | 7m ago |
Your URL map, at a glance
Browse every registered URL pattern, namespace, and view in your Django project. Search, filter, and reverse-lookup routes without touching the terminal.
:api-v1
14 routes
:admin
38 routes
:auth
5 routes
:catalog
9 routes
| Pattern | Name | View | Methods |
|---|---|---|---|
| / | home | views.HomeView | GET |
| /api/v1/users/ | user-list | api.views.UserViewSet | GET, POST |
| /api/v1/users/<id>/ | user-detail | api.views.UserViewSet | GET, PUT, DELETE |
| /admin/ | admin:index | admin.site.index | GET |
| /auth/login/ | login | auth.views.LoginView | GET, POST |
| /products/<slug>/ | product-detail | catalog.views.ProductDetail | GET |
Your signal landscape, fully mapped
Get full visibility into your project's signal landscape. See which signals are registered, which receivers are connected, and what that receiver code actually does.
Signals
12
Receivers
23
Built-in
6
Custom
6
| Signal | Sender | Receiver | Module |
|---|---|---|---|
| post_save | auth.User | profiles.create_profile | profiles.signals |
| post_save | orders.Order | notifications.send_order_email | notifications.signals |
| pre_delete | catalog.Product | catalog.clear_product_cache | catalog.signals |
| post_save | payments.Payment | ledger.record_transaction | ledger.signals |
| request_finished | None | analytics.flush_buffer | analytics.signals |
| user_logged_in | auth.User | audit.log_login | audit.signals |
We're building more tools to bring full observability to your Django admin. Star us on GitHub to stay in the loop.
Star on GitHubDjango Control Room is built to be extended. Use our cookiecutter template to scaffold a fully structured panel plugin in seconds — with all the conventions already in place.
Philosophy
Keep your stack simple and your data close.
Everything runs on your servers. No data leaves your network. Full control over retention and access.
Stop paying per-seat or per-event fees. Open source means free forever — no surprise invoices.
One Django admin login. No new accounts, API keys, or third-party dashboards to juggle.
Built on Django's admin framework. Uses your existing models, permissions, and authentication.
FAQ
Everything you need to know about Django Control Room.
Django Control Room is open source and free to use. If it saves you time in production, consider supporting its ongoing development.
Sponsor on GitHubDjango Control Room is built and maintained by Yasser Toruno, a software engineer focused on building admin-native tools for production Django systems.
Open source from day one. Contributions, bug reports, and feature requests are always welcome.
New panels, project updates, and Django content straight to your inbox.