Django Signals Panel
See every Django signal and receiver, and where they fire. Right from the Django admin.
Compatible with dj-control-room. Register this panel in the Control Room to manage it from a centralized dashboard.
- Official site: djangocontrolroom.com
- Project repo: dj-control-room
Docs
https://django-control-room.github.io/dj-signals-panel/
Features
- Signal discovery - automatically discovers all registered Django signals across your project and installed apps
- Receiver inspection - lists every connected receiver for each signal, including function name, module, file location, and sender
- Source code viewer - inline syntax-highlighted source for each receiver, directly in the admin
- Search & filter - search signals by name, module, or app; filter by app with a dropdown
- Summary stats - at-a-glance counts for total signals, total receivers, and signals with no receivers
- Dark mode support - respects Django admin's built-in dark/light mode toggle
- django-unfold theme adapter - opt-in stylesheet that remaps colors to match django-unfold's accent/neutral palette (see Theme adapters)
- AI Agent Integration (MCP) - exposes
list_signals,get_receivers,find_signal_by_sender, andinspect_receivertools so AI agents (Cursor, Claude, etc.) can introspect your signal landscape via dj-control-room's MCP server - No migrations required - purely read-only introspection, zero database changes
Requirements
- Python 3.9+
- Django 4.2+
Django Control Room
Dj Signals Panel works great on its own, and it also pairs seamlessly as a panel inside Django Control Room - a centralized dashboard that brings all your Django admin panels together in one place.
pip install dj-control-room dj-signals-panel
Visit djangocontrolroom.com to learn more.
Screenshots
Django Admin Integration
Seamlessly integrated into your Django admin interface. A DJ SIGNALS PANEL section appears alongside your models - no migrations required.
Signal List & Search
Browse all registered signals with summary stats (total signals, total receivers, signals with no receivers). Search by name, module, or app, and filter by app using the dropdown.
Signal Detail
Drill into any signal to see its metadata and every connected receiver - including function name, module, and sender. Expand View Location (or View Source, when SHOW_SOURCE is enabled) to see the file path/line and syntax-highlighted source code inline.
Note: The source code viewer is opt-in. Set
SHOW_SOURCE: TrueinDJ_SIGNALS_PANEL_SETTINGSto enable it. UseSIGNAL_MODULESto add extra modules to signal discovery.
django-unfold Theme
When running under django-unfold, enable the bundled unfold.css theme adapter via EXTRA_CSS to match the panel's colors to the host site's accent and neutral palette. This is opt-in - it is not applied automatically just because django-unfold is installed.
django-jazzmin Theme
When running under django-jazzmin, enable the bundled jazzmin.css theme adapter via EXTRA_CSS to match the panel's colors to whichever Bootstrap/Bootswatch palette Jazzmin is configured with. This is opt-in - it is not applied automatically just because django-jazzmin is installed.
DJ_SIGNALS_PANEL_SETTINGS = {
'EXTRA_CSS': ['dj_control_room_base/css/themes/jazzmin.css'],
}
Installation
pip install dj-signals-panel
Add it (and dj_control_room_base, its core dependency) to INSTALLED_APPS, include its URLs, and migrate:
INSTALLED_APPS = [
# ...
'dj_control_room_base',
'dj_signals_panel',
]
urlpatterns = [
path("admin/dj-control-room-base/", include("dj_control_room_base.urls")),
path('admin/dj-signals-panel/', include('dj_signals_panel.urls')),
path('admin/', admin.site.urls),
]
python manage.py migrate
Then visit /admin/ and look for the "DJ SIGNALS PANEL" section.
For the full walkthrough and settings reference (source code viewer, extra signal modules, theme adapters), see the Installation and Configuration docs.
MCP Tools (AI Agent Integration)
Ships list_signals, get_receivers, find_signal_by_sender, and inspect_receiver tools that dj-control-room's MCP server exposes to AI agents (Cursor, Claude, etc.), so they can look up signals, receivers, and source locations without grepping your codebase.
See Configuration → Panel Tools (MCP) for the full tool reference and Scopes for how agent access is permissioned separately from the admin UI.
Development Setup
Want to contribute or set up the project for local development? See docs/contributing.md for prerequisites, Docker/virtualenv setup, running the example project, and the test suite.
License
This project is licensed under the MIT License. See the LICENSE file for details.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file dj_signals_panel-0.5.0.tar.gz.
File metadata
- Download URL: dj_signals_panel-0.5.0.tar.gz
- Upload date:
- Size: 32.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
049c91debfcc31199ba47ce83aafc41df048aad00afc3d69a89d48e1dc47868b
|
|
| MD5 |
631e73fbbbe4d482a4c6e94edbc1a7d1
|
|
| BLAKE2b-256 |
9732f7d2bae1e2586ffdb84181f0e727b92cd54dda665b474496abd3ce0c79ae
|
Provenance
The following attestation bundles were made for dj_signals_panel-0.5.0.tar.gz:
Publisher:
python-publish.yml on django-control-room/dj-signals-panel
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
dj_signals_panel-0.5.0.tar.gz -
Subject digest:
049c91debfcc31199ba47ce83aafc41df048aad00afc3d69a89d48e1dc47868b - Sigstore transparency entry: 2258461674
- Sigstore integration time:
-
Permalink:
django-control-room/dj-signals-panel@10e857880374ced31c79066d6269ce20a33444bc -
Branch / Tag:
refs/tags/0.5.0 - Owner: https://github.com/django-control-room
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@10e857880374ced31c79066d6269ce20a33444bc -
Trigger Event:
release
-
Statement type:
File details
Details for the file dj_signals_panel-0.5.0-py3-none-any.whl.
File metadata
- Download URL: dj_signals_panel-0.5.0-py3-none-any.whl
- Upload date:
- Size: 25.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e99b181817901cd9be26a86b434c2661825c54050a349854ed9403b217067ced
|
|
| MD5 |
49b1ca56dd75eba32a14b7eabcc2eee5
|
|
| BLAKE2b-256 |
9ed6c89d2fbda82f79d60abf6cc927f15dbc85186a63a307f1a69bb40af7bce6
|
Provenance
The following attestation bundles were made for dj_signals_panel-0.5.0-py3-none-any.whl:
Publisher:
python-publish.yml on django-control-room/dj-signals-panel
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
dj_signals_panel-0.5.0-py3-none-any.whl -
Subject digest:
e99b181817901cd9be26a86b434c2661825c54050a349854ed9403b217067ced - Sigstore transparency entry: 2258462002
- Sigstore integration time:
-
Permalink:
django-control-room/dj-signals-panel@10e857880374ced31c79066d6269ce20a33444bc -
Branch / Tag:
refs/tags/0.5.0 - Owner: https://github.com/django-control-room
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@10e857880374ced31c79066d6269ce20a33444bc -
Trigger Event:
release
-
Statement type: