A small Python CalDAV and CardDAV server that shares calendars, to-do lists and contacts with standard clients.
pimutils/khal
A standards-based command-line calendar program that reads and writes iCalendar data and syncs with CalDAV servers via vdirsyncer.
Open-source alternative to:Google Calendar
- Stars
- 3,088
- Forks
- 241
- Open issues
- 270
- Last commit
- 4 days ago
What is it?
khal is a terminal calendar application that works with standard iCalendar files stored in the vdir format. Because it reads and writes that format directly, it can be paired with vdirsyncer to keep calendars in sync with CalDAV servers and other compatible programs.
Beyond plain command-line use, khal offers a quick way to add new events from the shell, and ikhal provides an interactive interface for browsing and editing calendars and events. It runs on Python 3.10 and later and is aimed at Linux, macOS and other non-Windows systems.
The project lists some limitations, including that editing the timezones of existing events is not yet supported. Alternatives mentioned in its documentation include calendar-cli, which has a different scope and no offline storage, and gcalcli, which only works with Google Calendar.
Key features
- 01Reads and writes iCalendar events in the vdir format.
- 02Synchronizes with CalDAV servers when paired with vdirsyncer.
- 03Adds events quickly from the command line.
- 04ikhal provides an interactive terminal interface for browsing and editing events.
- 05Requires Python 3.10 or later and runs on major non-Windows operating systems.
Use cases
- Managing calendars entirely from a terminal or shell scripts.
- Keeping a local copy of CalDAV calendars for offline viewing and editing.
- Adding quick events without leaving the command line.
Quick start
- 1
Install khal from PyPI-style git source with pip
pip install git+https://github.com/pimutils/khal - 2
Or install via Homebrew on macOS
brew install khal - 3
Read the documentation to configure khal
Things to know
- No support for editing the timezones of events yet.
- Does not run on Microsoft Windows.
In collections
Topics
FAQ
- What is khal?
- A standards-based command-line calendar program that reads and writes iCalendar data and syncs with CalDAV servers via vdirsyncer. khal is a terminal calendar application that works with standard iCalendar files stored in the vdir format. Because it reads and writes that format directly, it can be paired with vdirsyncer to keep calendars in sync with CalDAV servers and other compatible programs.
- Is khal free to use? What license does it have?
- khal is open source under the MIT license. Check the license terms before using it in commercial products.
- Is khal still maintained?
- Actively maintained. The last commit to khal was on Nov 2, 2026.
- What can I use khal for?
- Managing calendars entirely from a terminal or shell scripts. Keeping a local copy of CalDAV calendars for offline viewing and editing. Adding quick events without leaving the command line.
- How do I install khal?
- Install khal from PyPI-style git source with pip: pip install git+https://github.com/pimutils/khal Or install via Homebrew on macOS: brew install khal Read the documentation to configure khal
- Where can I get khal?
- The source code and installation instructions are on GitHub: https://github.com/pimutils/khal
Summary generated by AI from the project's README. GitHub stats refresh daily.
Related projects
A self-hosted CalDAV and CardDAV server for syncing calendars and contacts across devices and apps.
A self-hosted web frontend for managing CalDAV tasks and calendar events, with list, Gantt and calendar views.
A CalDAV/CardDAV server written in Rust that stores calendars and contacts in a single SQLite database.
Self-hosted web calendar frontend that aggregates CalDAV, iCal and Google Calendar sources into one interface.
A lightweight, local-first browser calendar client that syncs with CalDAV, CardDAV and JMAP servers you configure.