Skip to content

feat: add MQTT notifications - #187

Merged
olalie merged 11 commits into
mainfrom
feat/notifications
Sep 10, 2026
Merged

olalie merged 11 commits into
mainfrom
feat/notifications

Conversation

@olalie

@olalie olalie commented Sep 10, 2026

Copy link
Copy Markdown
Owner

Summary

Add optional MQTT notifications for new Significant Connections.

Notifications build on the existing Significant Connections detection. Events are stored independently of notification delivery, and a learning period prevents notifications while TapMap is still building its initial Insights history.

MQTT can be configured with tapmap --configure-mqtt and supports TLS and optional authentication. Broker addresses are restricted to IPv4 or IPv6 addresses so TapMap does not perform DNS lookups when connecting to the broker.

MQTT delivery is best effort. Messages use QoS 0, are not retained, and TapMap automatically reconnects after connection loss.

Desktop credentials are stored in the operating system keyring. Docker stores MQTT configuration and credentials in the persistent /data directory.

The default notification learning period is 7 active Insights days and can be configured with TAPMAP_NOTIFICATION_LEARNING_DAYS.

Testing

MQTT was manually tested on Windows, Linux, macOS, and Docker, including configuration and persistence, TLS and authentication, message delivery and payloads, learning-period behavior, connection loss and reconnection, unavailable brokers, authentication rejection and recovery, invalid configuration, and clean shutdown.

The automated test suite and Ruff checks pass.

Documentation

Add MQTT documentation and update Help, About, Docker, environment variables, privacy information, and architecture documentation.

@olalie
olalie merged commit c478c52 into main Sep 10, 2026
7 checks passed
@olalie
olalie deleted the feat/notifications branch September 10, 2026 16:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant