Planner is a Personal Information System (PIM) that is built around the notions that having a convienent system is a matter of synchronizing many small snippets of data (tasks, contacts, events, notes, etc.) to many devices (laptop, phone, smart displays, etc.) and have them available in many places (desktop apps, cli commands, applets, AI agents, etc.)
Thefore the architecture aims to bring the right information to the right place as quickly as possible.
Stores generalized data snipptes in a Postgres database and can sync them with clients over HTTP Rest and Websockets. Clients can subscribe to the types of snippets they are interested in. For example, only tasks and events.
See here for more details on the synchonization protocol.
On a device like a laptop or workstation there can be many different apps that want to communicate with the Synchronization server. To simplify communication there is a local service that keeps local data in sync with the server and exposes it to local clients over a Unix socket.
Current local clients include:
- Task cli command
- Gui app for today's task
- Cinnamon applet that shows the next task
- Mcp-server for connecting AI agents
See Local Service API for details on the API endpoints and Data Model for task structure.
For devices that don't have the local service, or for functionality that is not yet present in the local service, there are apps that communicate directly with te server over HTTP REST:
- Task cli command
- Schedule cli command
- Homeassistant webhook
See the Data Model for details on tasks and schedules.
- Data Model - Core types and their structure
- Synchronization - How data syncs between server and client
- Local Service API - Local service REST API documentation