Inspect, debug, and operate your Django app from one place, directly inside the admin.
pip install dj-control-roomThe Platform
Django Control Room is a framework and ecosystem for building operational tools for Django, with interfaces for both developers and AI agents.
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.
Install standalone panels for common Django infrastructure and application behavior, including Celery, Redis, caching, URLs, and signals.
Build reusable panels or operational tools specific to your application on DCR’s shared foundation.
Serve developers through Django admin and expose selected capabilities to AI agents through MCP.
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
The Django admin is a natural starting point for operational tooling: close to the application, built on its access controls, and already familiar to the teams operating it.
Work directly with Django's configuration, URLs, signals, caches, queues, models, and runtime behavior.
Govern operational access through the authentication, groups, and permissions your application already uses.
Give developers operational tools within an interface they already understand.
Make DCR capabilities available through admin-native panels and to AI agents through MCP.
Community tutorials
Independent Django creators walk through installation, explore the panel ecosystem, and demonstrate what you can build inside Django admin.
Follow step-by-step guides to install Django Control Room, build custom panels, and configure access.
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.
Prefer a video? Watch Cloud With Django set it up or browse more walkthroughs.
Each panel provides its own configuration options. See individual panel information →
FAQ
Everything you need to know about Django Control Room.
Django Control Room is an extensible platform for production Django tooling, created and maintained by Yasser Toruño. It continues to grow through feedback, contributions, and ideas from the Django community.
New panels, project updates, and Django content straight to your inbox.