Skip to main content

Agentcore Notifier

中文

Notification management module (webhook, email, etc.) for Django. Part of the agentcore family (with agentcore-metering, agentcore-task).


Install

  • Not on PyPI; install only from GitHub.

From GitHub (editable after clone):

pip install -e git+https://github.com/cloud2ai/agentcore-notifier.git

Or, when the host project uses it as a submodule, from repo root:

pip install -e path/to/agentcore-notifier
  • Add to INSTALLED_APPS in the main project (e.g. Agentcore Notifier):
'agentcore_notifier.adapters.django',
  • The host project Dockerfile should iterate over agentcore/ submodules and run pip install -e.
  • See the host project README for details.

Configuration

All configuration is stored in the NotifierConfig table (scope=global, key+value JSON). No main-project settings or app_config injection; webhook URL, provider, language, etc. are set via notifier UI/API.

Configure via:

  • Django Admin: NotifierConfig (key=global, silence_rules); NotificationChannel for Webhook/email channels.
  • API: Channels via channels/ (CRUD); global and silence via global/, silence-rules/ (see API reference below).

Default channel helpers

get_default_webhook_channel() and get_default_email_channel() (in adapters.django.services.webhook_service and email_service) both return (channel, config_dict) or (None, None).

  • Webhook default: first active webhook channel, ordered by created_at (earliest first). Name and ordering do not affect which channel is default.
  • channel: the active NotificationChannel instance (or None).
  • config_dict: a dict built from channel.config (url/headers for webhook; smtp_host/from_email etc. for email), or None.

When the application layer wants to select a specific channel (e.g. from its own config), pass channel by UUID so that channel name changes do not break references:

  • get_webhook_channel_by_uuid(channel_uuid) in webhook_service returns (channel, config) or (None, None).
  • When calling send_webhook_notification.delay(..., channel_config={"channel_uuid": "<uuid>"}), the task resolves the channel by UUID and uses that channel's config.

When unpacking, use consistent names so call sites stay clear and do not shadow gettext _ in modules that use translation:

  • Need both: channel, config = get_default_webhook_channel()
  • Need only channel: channel, _config = get_default_webhook_channel()
  • Need only config: _channel, config = get_default_webhook_channel()

Same pattern for get_default_email_channel().


Sending notifications

Send only via Celery task (no HTTP send API). The task runs silence and merge checks, then calls WebhookService and writes NotificationRecord.

from agentcore_notifier.adapters.django.tasks.send import send_webhook_notification

send_webhook_notification.delay(
    payload={"msg_type": "post", "content": {...}},
    provider_type="feishu",
    source_app="my_app",
    source_type="alert",
    source_id="123",
    user_id=user_id,
)

API reference

  • Mount under an admin prefix (e.g. api/v1/admin/notifications/).
  • Auth: IsAdminUser (staff or superuser), otherwise 403.

Stats and config

Method Path Description
GET .../notification-stats/ Summary, by_source, by_provider, series
GET .../notification-records/ Paginated list of notification records
GET / PUT .../global/ Global config (retention_days, cleanup, etc.)
GET / PUT .../silence-rules/ Silence rules (NotifierConfig key=silence_rules)
GET / POST .../channels/ List and create notification channels (Webhook/Email)
GET / PUT / DELETE .../channels/<uuid>/ Get, update, or delete one channel
POST .../channels/validate/ Validate channel config without saving

Cleanup

Cleanup of old notification records is configured via NotifierConfig key=global (retention_days, cleanup_crontab, cleanup_enabled). When enabled, a Celery Beat task runs periodically. Schedule is merged in AppConfig.ready().


Project structure

  • agentcore_notifier/ – Package root.
  • agentcore_notifier/adapters/django/ – Django app: models, admin, views, URLs, Celery tasks.
  • agentcore_notifier/adapters/django/services/ – WebhookService, email, merge/silence, notification_config, stats, cleanup.
  • docs/ – Feishu webhook and other reference docs.
  • tests/ – Pytest tests (Django settings in tests.settings).

Tests

From the package root (agentcore-notifier):

pip install -e ".[dev]"
pytest

Run with coverage for the services layer:

pytest --cov=agentcore_notifier.adapters.django.services --cov-report=term-missing

Requires Django and Celery to be configured; tests.settings and tests.conftest provide the test environment.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

agentcore_notifier-0.1.0.tar.gz (87.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

agentcore_notifier-0.1.0-py3-none-any.whl (80.8 kB view details)

Uploaded Python 3

File details

Details for the file agentcore_notifier-0.1.0.tar.gz.

File metadata

  • Download URL: agentcore_notifier-0.1.0.tar.gz
  • Upload date:
  • Size: 87.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for agentcore_notifier-0.1.0.tar.gz
Algorithm Hash digest
SHA256 c68ac1d9248e2c7baddebc5b2e96f7d03ec571f0ddfe005127762d2c7de4c407
MD5 8adbb5a098ba1b495847de572297556e
BLAKE2b-256 3ea1159d0a1f0ae32a04bff687663ee7eed30d7a1483c6b5f8b9e8f416259e3e

See more details on using hashes here.

Provenance

The following attestation bundles were made for agentcore_notifier-0.1.0.tar.gz:

Publisher: release.yml on cloud2ai/agentcore-notifier

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file agentcore_notifier-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for agentcore_notifier-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 066efe8f0590bb8d0b23cd2d2fad14cdddaa059807ec0dedccff314bc811500d
MD5 2bfca2b4b38d822486c8d922f586e92c
BLAKE2b-256 d225250e65dfa58aa5c86b2eb5b50e9a10a18c6621b4406ed9956466a07546b8

See more details on using hashes here.

Provenance

The following attestation bundles were made for agentcore_notifier-0.1.0-py3-none-any.whl:

Publisher: release.yml on cloud2ai/agentcore-notifier

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page