Pulls the dates out of your emails and PDFs, so you stop copying them into a calendar by hand.
The appointment is in the confirmation email. The deadline is on page three of a PDF. The reminder is a note you wrote yourself. None of it is in the calendar, because putting it there is manual work you do at the end of a day you already ran out of.
LifePlanner reads those files, extracts what has a date on it, and checks the result against your calendar for collisions before you commit to anything.
Extraction, calendar sync and conflict detection need no model at all. The optional local Ollama briefing summarises the day in plain words; you can ignore it and lose nothing.
Everything stays on the machine. There is no account and no sync service.
Not for you if your appointments already arrive as calendar invitations. Then your calendar has them, and the extraction has nothing left to do.
How it runs: LifePlanner is a native desktop app (Tauri), not a server and not a browser tab. It opens its own window like any installed program and runs fully offline.
💾 Download: macOS (DMG) · Windows (Installer) · Linux (AppImage): always the latest release, not code-signed/notarized (Gatekeeper/SmartScreen will warn on first run). Or build from source, see Getting Started below.
🌱 New here? → Step-by-step guide for beginners
In practice: you get a native desktop app that turns messy emails, PDFs and notes into a structured, conflict-checked daily schedule. Extraction, calendar sync and conflict detection work without any AI at all; the local AI briefing (via Ollama) is an optional add-on for a plain-language summary, not a requirement to use the app.
- Smart Extraction: Paste any text (email, chat, document) and LifePlanner detects dates, deadlines and tasks automatically
- Calendar Sync: ICS files and CalDAV
- Conflict Detection: Overlapping appointments are flagged instantly
- Free Slot Finder: See where your day has breathing room
- Energy Sorting: Tasks grouped by focus / creative / routine energy level
- Project Tracker: Group tasks into projects with progress visualization
- Daily AI Summary: Local AI generates a plain-language briefing for your day
- Full-text Search: SQLite FTS5-powered instant search across all events and tasks
- 100% Offline: No cloud, no account, no telemetry
| Component | Version |
|---|---|
| Rust | 1.77+ |
| Node.js | 18+ |
| Tauri CLI | v2 |
| Ollama | latest (optional, for AI features) |
Ollama model (recommended): llama3 or any instruction-tuned model
# 1. Clone
git clone https://github.com/9t29zhmwdh-coder/LifePlanner.git
cd LifePlanner
# 2. Install frontend dependencies
cd frontend && npm install && cd ..
# 3. Development
cargo tauri dev
# 4. Build
cargo tauri buildTo enable AI features, install Ollama and pull a model:
ollama pull llama3Then set the Ollama URL in Settings → Local AI.
Remove the app the usual way for your OS (drag to Trash on macOS, "Apps & Features" on Windows).
Local data is not removed automatically: see Privacy below for exact paths and the OS keychain entry.
LifePlanner is designed for complete data sovereignty:
- All data stored locally in SQLite:
~/Library/Application Support/LifePlanner/(macOS),%APPDATA%\LifePlanner\(Windows) - Calendar credentials stored in the OS keychain (macOS Keychain, Windows DPAPI), removable manually via Keychain Access / Credential Manager if desired
- AI processing runs entirely on-device via Ollama. No data is sent to any server.
- No analytics, no crash reporting, no external connections
LifePlanner/
├── crates/
│ ├── lp-core/ # Core library: models, DB, calendar sync, AI, extractors
│ └── lp-cli/ # Optional CLI interface
├── src-tauri/ # Tauri backend + IPC commands
└── frontend/ # React + TypeScript + Tailwind UI
Key technologies:
sysinfo,ical,quick-xmlfor data ingestionsqlx + SQLitewith FTS5 for storage and searchkeyringfor secure credential storagereqwest + rustlsfor CalDAV (fully local network support)recharts,zustand,date-fnson the frontend
Author: Rafael Yilmaz · Status: Active · · License: MIT

