pimalaya/carillon
pimalaya/carillon has 69 GitHub stars and 3 forks. GitHot measured 0 stars in 24 hours. Last checked 2026-11-14 19:30 UTC. Last push 2026-11-13.
What you can do
- Mail backend support: IMAP rfc2177, JMAP rfc8621, Maildir specs
- Calendars and contacts backend support: CalDAV, CardDAV rfc6578, JMAP rfc9610, calendars
- Alarms of events and tasks rfc5545, fired from a CalDAV calendar or a local pimdir store, no sync needed for the former
- Vendor API support: Microsoft Graph (mail, contacts, calendar), Gmail, Google Calendar, Google People
Crecimiento de estrellas medido
- in 24h
- 0
- in 7 days
- Recopilando historial
- in 15 days
- Recopilando historial
- in 1 month
- Recopilando historial
Cambios netos en períodos que se solapan, no totales diarios. Los datos no disponibles se dejan en blanco. Las estrellas indican interés, no calidad.
Acerca de
CLI to watch PIM collection changes
Herramientas de desarrolloREADME.md
Original🔔 carillon

CLI to watch PIM collection changes, written in Rust
[!CAUTION] Carillon is
v0.x: expect breaking changes between releases until it stabilises.
Table of contents
Features
- Mail backend support: IMAP rfc2177, JMAP rfc8621, Maildir specs
- Calendars and contacts backend support: CalDAV, CardDAV rfc6578, JMAP rfc9610, calendars
- Alarms of events and tasks rfc5545, fired from a CalDAV calendar or a local pimdir store, no sync needed for the former
- Vendor API support: Microsoft Graph (mail, contacts, calendar), Gmail, Google Calendar, Google People
- Watch support: IMAP idle, JMAP event stream, collection poll everywhere else
- Hook support: desktop notification, shell command, or both, on every change
- Simple auth support for IMAP: anonymous, login, plain, oauthbearer, xoauth2, scram-sha-256
- HTTP auth support for JMAP (basic, bearer, raw header), DAV (basic, bearer) and the vendor APIs (bearer)
- TLS support:
- Rustls with ring crypto (requires
rustls-ringfeature, enabled by default) - Rustls with aws crypto (requires
rustls-awsfeature) - Native TLS (requires
native-tlsfeature)
- Rustls with ring crypto (requires
- Discovery support:
- Multi-account watch: every configured account at once, each reconnecting on its own
- Interactive wizard:
carillon configureturns an email address into a tested account
[!TIP] Carillon is written in Rust and uses cargo features to gate backend support. The default feature set is declared in Cargo.toml.
The default
wizardfeature brings the interactiveconfigure; leave it out of a scripted or embedded build that never prompts.
Installation
Pre-built binary
As root:
curl -sSL https://raw.githubusercontent.com/pimalaya/carillon/master/install.sh | sudo sh
As a regular user:
curl -sSL https://raw.githubusercontent.com/pimalaya/carillon/master/install.sh | PREFIX=~/.local sh
These commands install the latest binary from the GitHub releases section.
For a more up-to-date version, check the releases workflow and look for the Artifacts section: those are built from master, with the default cargo features.
Cargo
cargo install --locked --git https://github.com/pimalaya/carillon.git
With IMAP support only, which drops every other backend:
cargo install --locked --git https://github.com/pimalaya/carillon.git \
--no-default-features \
--features imap,rustls-ring
Nix
If you have the Flakes feature enabled:
nix profile install github:pimalaya/carillon
Or run without installing:
nix run github:pimalaya/carillon
Sources
git clone https://github.com/pimalaya/carillon
cd carillon
nix run
Configuration
The configuration is loaded from the first existing path among:
$XDG_CONFIG_HOME/carillon/config.toml$HOME/.config/carillon/config.toml$HOME/.carillonrc
Override the path with carillon -c <PATH> or CARILLON_CONFIG=<PATH>. Multiple paths can be passed at once, separated by :; the first is the base and the rest are deep-merged on top. The full field reference lives in config.sample.toml.
Run carillon with no command to launch the wizard, carillon configure to run it again later. It discovers the services your provider publishes from your email address, offering the Microsoft Graph or Google APIs first for such an account, asks which one to watch and how to authenticate, then tests the connection.
The watch method is never asked: an account takes the best one its backend supports. The result is saved, appended to the configuration already there, or printed for you to place by hand.
An account declares one backend block (imap, jmap, maildir, caldav, carddav, msgraph, gmail, gcal, gpeople, pimdir) carrying the collection it watches (one per domain over JMAP and Microsoft Graph, sharing one connection), how it watches it (watch) and what it fires (hook). Declaring several is allowed, -b/--backend then selecting one.
Usage
Generate an account:
carillon configure
Watch every configured account, until interrupted:
carillon watch
Watch one account:
carillon -a work watch
Check that an account still connects and authenticates, on every backend it declares, before trusting a watch to keep running:
carillon -a work check
Force a backend on an account declaring several:
carillon -b jmap watch
Every command and every flag is documented behind --help. Man pages, shell completions and the JSON Schemas of the --json output are generated by carillon manual --dir <DIR>, carillon completion --dir <DIR> and carillon json-schema --dir <DIR>.
Logs go to stderr, so they can be redirected to a file while the command output stays on stdout:
carillon watch --log-level debug 2>/tmp/carillon.log
Use --log-file <PATH> to append them to a file directly. When --log-level is omitted the RUST_LOG environment variable is consulted, and RUST_BACKTRACE=1 adds the full error backtrace.
License
This project is licensed under either of:
Social
- Chat on Matrix
- News on Mastodon or RSS
- Mail at [email protected]
Sponsoring
Special thanks to the NLnet foundation and the European Commission that have been financially supporting the project for years:
- 2022 → 2023: NGI Assure
- 2023 → 2024: NGI Zero Entrust
- 2024 → 2026: NGI Zero Core
- 2026 → 2027: NGI Zero Commons Fund
This program is part of Pimalaya, free software funded entirely by grants and donations. If you find it useful, consider sponsoring its development:
