caldav2ntfy
caldav2ntfy is a lightweight Linux CLI utility that watches local CalDAV calendar files and sends notifications to an ntfy server when relevant calendar changes are detected.
It is primarily useful in self-hosted environments where a CalDAV server (for example Radicale) is used together with ntfy for push notifications.
The tool relies on Linux inotify to watch .ics files, parses calendar events, and publishes notifications to a configured ntfy topic.
Use Cases
Typical setups where caldav2ntfy can be useful:
- Self-hosted Radicale calendar server
- vdirsyncer syncing CalDAV calendars locally
- Personal ntfy server for notifications
- Minimal Linux automation environments
- Lightweight calendar reminder system without heavy clients
Example workflow:
Radicale → calendar file change → caldav2ntfy → ntfy notification
Features
- Watches CalDAV
.icsfiles using inotify - Sends notifications to an ntfy topic
- Configurable through a TOML configuration file
- Minimal dependencies
- Designed for Linux environments
- Simple CLI interface
Installation
Install from PyPI:
pip install caldav2ntfy
Configuration
caldav2ntfy is configured using a TOML file.
Example configuration:
[app]
default_watch_dir="/var/lib/radicale/collections/collection-root/<USER>/<CALENDAR>/"
[ntfy]
server="https://ntfy.sh"
topic="calendar_notif"
token="tk_xyzabc123="
Usage
Run the watcher using:
caldav2ntfy --config config.toml
caldav2ntfy
The program will monitor the configured calendar directory and send notifications when events are detected.
Overriding the config
You can override parameters from the config before running
use caldav2ntfy --help to get a list of all available options
How It Works
- The program watches the calendar directory using Linux inotify.
- When a calendar file changes, it parses the
.icscontent. - Relevant events are extracted.
- A notification is sent to the configured ntfy topic.
Requirements
- Python >= 3.11+
- Linux (uses
inotify) - An ntfy server
- A CalDAV setup (Radicale, Nextcloud, etc.)
Related Projects
License
MIT License
Release files for caldav2ntfy 0.1.7
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| caldav2ntfy-0.1.7.tar.gz | 5.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| caldav2ntfy-0.1.7-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 12.5 kB
Release files / caldav2ntfy-0.1.7.tar.gz
| Download URL | caldav2ntfy-0.1.7.tar.gz |
|---|---|
| Size | 5.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
b0d6d4ba326c65ee140a9a242e17704707d66a60cb0000caafaadceed5cfe19d
|
|
BLAKE2b-256 checksum How to use checksums |
a5d2a997486b0b76b16e5d0f8dcfbe9460cd18e88140879062ee3bcf74a5f98e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 17, 2026.
Transparency logRelease files / caldav2ntfy-0.1.7-py3-none-any.whl
| Download URL | caldav2ntfy-0.1.7-py3-none-any.whl |
|---|---|
| Size | 6.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
2aa48f4874a7280a99a6e2f67a1656fdd24384ab7459596e3750998ddc70b7e9
|
|
BLAKE2b-256 checksum How to use checksums |
d0b4158815221819f5b185ea585b0964a6ebc85ba2f31160dd5dfccf28b9e2e9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 17, 2026.
Transparency log