No description
  • Go 96.4%
  • Makefile 2.8%
  • Dockerfile 0.8%
Find a file
zemdregon 294261c7b9
Some checks are pending
CI / lint (push) Waiting to run
CI / test (push) Waiting to run
CI / build (push) Waiting to run
CI / docker (push) Blocked by required conditions
chore(deps): bump docker/setup-buildx-action to v4
Self-hosted CI workflows only.
2026-08-10 18:17:59 -05:00
.github/workflows chore(deps): bump docker/setup-buildx-action to v4 2026-08-10 18:17:59 -05:00
cmd/module chore: add README/CI/LICENSE and drop local notify proto 2026-07-22 19:10:04 -05:00
internal Advertise settings capability (v0.1.6). 2026-08-10 04:37:15 -05:00
.env.example fix: change default gRPC port to avoid collision with media-tvshows 2026-08-07 10:46:24 -05:00
.gitignore Add event subscription for media notifications 2026-06-16 06:50:37 -05:00
.golangci.yml Add event subscription for media notifications 2026-06-16 06:50:37 -05:00
CHANGELOG.md Advertise settings capability (v0.1.6). 2026-08-10 04:37:15 -05:00
COMPATIBILITY.md docs: add CHANGELOG and COMPATIBILITY (#5) 2026-08-09 19:58:19 -05:00
Dockerfile Add event subscription for media notifications 2026-06-16 06:50:37 -05:00
go.mod Expose channel settings via RegisterSettings mesh. (#10) 2026-08-10 01:30:42 -05:00
go.sum Expose channel settings via RegisterSettings mesh. (#10) 2026-08-10 01:30:42 -05:00
LICENSE chore: add README/CI/LICENSE and drop local notify proto 2026-07-22 19:10:04 -05:00
Makefile Add event subscription for media notifications 2026-06-16 06:50:37 -05:00
muxcore.json Advertise settings capability (v0.1.6). 2026-08-10 04:37:15 -05:00
README.md fix: change default gRPC port to avoid collision with media-tvshows 2026-08-07 10:46:24 -05:00

notification-default

MuxCore notification sidecar that delivers alerts to Discord, Slack, generic webhooks, and SMTP email.

How it works

gRPC sidecar implementing the NotificationProvider contract (Notify, Configure, Status). Channels are configured via environment variables or runtime Configure. Empty channels on Notify fans out to all configured channels.

Also dials the core mesh and subscribes to media events (movie/TV add/remove, file import, download dispatched), formatting them into notifications.

Configuration

Env variable Default Description
NOTIFY_GRPC_ADDR :9441 Notification gRPC listen address
DISCORD_WEBHOOK Discord incoming webhook URL
SLACK_WEBHOOK Slack incoming webhook URL
WEBHOOK_URL Generic JSON webhook URL
SMTP_HOST SMTP server hostname (enables email)
SMTP_PORT 587 SMTP port (587 STARTTLS, 465 implicit TLS)
SMTP_USER SMTP AUTH username
SMTP_PASS SMTP AUTH password
EMAIL_FROM From address (required when email enabled)
EMAIL_TO Default recipient (override per notify via fields.to)
MUXCORE_MODULE_ID notification-default Module ID (SDK)
MUXCORE_GRPC_ADDR localhost:9090 Core mesh address
MUXCORE_INSECURE_DISABLE_TLS unset Set true to disable TLS for mesh/SDK

Health passes when at least one channel is configured (any webhook or SMTP_HOST).

Runtime Configure (email)

Settings keys: smtp_host, smtp_port, smtp_user, smtp_pass, smtp_from (alias from), to.

Key features

  • Discord / Slack / webhook — severity-colored embeds/attachments or plain JSON
  • SMTP email — STARTTLS (587) or implicit TLS (465); clear errors if host/from/to unset
  • Runtime configure — enable channels via gRPC Configure
  • Media event bridge — auto-notify on subscribed core media events
  • Capabilitiesnotification, notification.default (contracts-notification / NotificationProvider v0.1.0)

Build

make build
make test