vdirsyncer
Synchronize calendars and contacts
What it is and what it does
Vdirsyncer is a command-line synchronization tool designed to keep calendars and addressbooks in sync across multiple sources—typically a server and your local filesystem, or two servers directly. It works by pulling calendar and contact data from remote servers, storing it locally, allowing you to edit it with your preferred local tools, and then pushing changes back to the server. The package depends on click, click-log, requests, aiohttp, and aiostream to handle CLI interaction, HTTP communication, and asynchronous operations.
The tool is positioned as the calendar-and-contacts equivalent of OfflineIMAP for email: it enables an offline-first workflow where you maintain a local copy of your calendar and contacts, work on them with any compatible application, and let vdirsyncer handle the bidirectional synchronization. It supports a variety of server types and can also synchronize between two servers without a local copy, making it flexible for different workflow needs.
Use it for:
- Synchronize a CalDAV server calendar to a local folder, edit events with a local calendar app, then sync changes back.
- Keep an addressbook from a CardDAV server in sync with local contact files for offline access and editing.
- Mirror calendars or addressbooks between two different servers without storing a local copy.
- Maintain an offline backup of calendars and contacts while working with them in local tools.
- Integrate calendar and contact synchronization into a personal data management workflow using command-line automation.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
Vdirsyncer is a command-line tool that synchronizes calendars and addressbooks between servers and the local filesystem, or between two servers directly.
Yes, if you need reliable calendar and addressbook synchronization between servers and local storage. The low install friction, permissive license, and support for modern Python versions make it straightforward to set up. However, the aging maintenance status (351 days since last release) means you should verify compatibility with your specific servers and be prepared for slower issue resolution if problems arise.
Install
vdirsyncer on PyPI
pip
pip install vdirsynceruv
uv add vdirsyncerpoetry
poetry add vdirsyncerInstalling vdirsyncer
Before you install
Low install friction with a pure-Python wheel. Maintenance status is aging—the latest release was 351 days ago—so expect slower response to issues, though the package remains functional across modern Python versions (3.8–3.13).
License in practice
Licensed under BSD-3-Clause (permissive), so you can use, modify, and redistribute vdirsyncer freely in both open and closed projects, provided you include the license notice.
Quickstart
pip install vdirsyncer
vdirsyncer discover
vdirsyncer sync
Requires Python 3.8 or later; also requires network access to the calendar/addressbook servers you intend to synchronize with.
Verify before relying
- Whether the aging maintenance status (351 days since last release) affects reliability with newer CalDAV/CardDAV server implementations.
- Specific server types and authentication methods supported beyond the general 'variety of servers' claim in the description.
Package facts
| License | BSD-3-Clause (permissive) |
| Python support | supports the current Python release (>=3.8) |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | 5 — click, click-log, requests, aiohttp, aiostream |
| Maintenance | aging — 351 days since the last release |
| First released | |
| Downloads | 159,127/month — #10,707 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: vdirsyncer-0.20.0-py3-none-any.whl
Keywords: todo, task, icalendar, cli
Tags
More Internet packages
Botocore provides low-level, data-driven access…
permissive · top 100 on PyPI
aiobotocoreProvides an async client for AWS services using…
permissive · top 100 on PyPI
pydanticPydantic validates Python data structures…
permissive · top 100 on PyPI
filelockProvides a platform-independent file locking…
permissive · top 100 on PyPI
fastapiFastAPI is a Python web framework for building…
permissive · top 100 on PyPI
googleapis-common-protosProvides common Protocol Buffer message…
permissive · top 100 on PyPI
caldavA CalDAV (RFC4791) client library for Python…
unclear · top 5,000 on PyPI
dirsyncSynchronizes, updates, or reports differences…
permissive · top 15,000 on PyPI
icalendarParses, creates, and modifies iCalendar files…
permissive · top 5,000 on PyPI
vobjectParses and serializes iCalendar and vCard…
permissive · top 5,000 on PyPI
icsReads and writes iCalendar (RFC 5545) files in…
permissive · top 15,000 on PyPI
workalendarWorkalendar provides holiday calendars and…
permissive · top 5,000 on PyPI
sysrsyncWraps the system rsync command for Python,…
unclear · top 15,000 on PyPI
icalendar-searcherSearches, filters, and sorts iCalendar…
agpl · top 15,000 on PyPI
recurring-ical-eventsExpands recurring iCalendar events (RFC 5545)…
copyleft · top 5,000 on PyPI
rucio-clientsRucio-clients provides command-line and…
permissive · top 15,000 on PyPI