Skip to main content

CarpeDiem

CI PyPI

CarpeDiem (carpe diem — seize the day) turns quick notes into a realistic day plan: natural-language capture, a smart morning proposal with real time slots, pomodoro focus during the day, evening closing. Offline-first, in English or Italian, no account, no network in the planning path.

Capture in seconds (n, natural language) → morning proposal to confirm (P)
→ work from the Day plan timeline with pomodoro (p, o) → evening Closing (R).

In the app, open the menu (m) → Day → Recommended workflow for the 5-step daily checklist.

Leggimi in italiano

CarpeDiem home with due-date radar Home: task table with the due-date radar (priority × horizon, b cycles chart → text → hidden, click a dot to open the task).

Morning: context, availability, fixed events and proposal with time slots Buongiorno (P): explicit availability window (HH:MM–HH:MM), fixed events (HH:MM-HH:MM Title) and the proposal with HH:MM–HH:MM slots plus today context above. Confirming only adds — Esc writes nothing.

Day plan: the operational timeline of the day Day plan (p): the confirmed tasks re-scheduled in the persisted window, with inline HH:MM–HH:MM prefixes, read-only EVENT: rows and the ▶ marker on the pomodoro task. Fully operational (Enter/Space/o/O/x).

Day closing: today summary and tomorrow plan Day closing (R): today summary (done vs goal, pomodoros) and the picker that becomes exactly tomorrow's plan.

Stats with estimates-vs-actual calibration Stats (k): goals and streaks, per-project breakdown, peak hours, punctuality, heatmap — plus the estimates-vs-actual factor the planner learns from.

Agenda: overdue, today, tomorrow, next 7 days Agenda (Day → Agenda): the chronological radar — overdue, today, tomorrow, next 7 days, important undated.

Install in 2 minutes

  1. You need Python 3.12+: check with python3 --version.
  2. Recommended: isolated install with pipx (puts carpediem on your PATH):
pipx install carpediem

From the git repo:

pipx install git+https://github.com/fabx-dev/carpediem.git
  1. Alternative for developers (virtualenv):
python3 -m venv .venv
.venv/bin/pip install .
  1. Start the TUI:
carpediem

On first run: load the demo data to explore, or start empty.

Check it works:

carpediem --help
carpediem list

Common issues: pipx: command not found (install pipx first), old Python (<3.12), separate data dir with TASKO_HOME=/tmp/carpediem-demo carpediem. Docker (docker compose up) is dev-only, not the main install path.

Requires Python 3.12+. Built with Textual; data stays in local JSON (see Data below).

The daily loop

  1. Capture — n opens the form; ctrl+l fills the fields from the title using #tag *project !priority ~estimate //note (dates in Italian or English, e.g. domani, friday). Same parser in the CLI: carpediem add "Call bank tomorrow #calls *personal !high". The due field also has a 📅 calendar picker; Esc never writes.
  2. Morning (P, Buongiorno) — context (planned, due, overdue, load in 🍅 over capacity, yesterday, streak) plus the smart proposal with inline reasons (deadline, priority, calibrated estimates…). You set an explicit availability window (HH:MM–HH:MM, overnight rejected) and optional fixed events (one per line HH:MM-HH:MM Title, never persisted as tasks); the proposal shows HH:MM–HH:MM slots around them. Confirming is additive only: already-planned stay, Esc writes nothing, confirming with an empty/invalid window clears the persisted one (no stale reuse).
  3. Execution (p, Day plan) — the operational sheet: exactly the confirmed tasks (planned_for == today), re-scheduled in the persisted window in Planner merit order. Scheduled rows carry an inline HH:MM–HH:MM prefix and stay fully operational (Enter detail, Space state, o/O pomodoro, x remove); fixed events appear as read-only EVENT: rows; tasks without a slot wait at the tail without a prefix. The ▶ marker follows the running pomodoro; the evening report adds a Planned vs executed section (estimate, slot, sessions, actuals, state).
  4. Closing (R, Day closing + evening report) — R shows today (done vs goal, pomodoros) and the picker that becomes exactly tomorrow's plan; the evening report (Day → Evening report) recaps done/leftovers, can print, and jumps to R in one click. No window, no slots invented: without a confirmed window the plan shows plain rows, never a default 09:00–18:00.

Planner notes: deterministic (same input → same plan) and explainable (every row carries its reason). day_hours in Settings is capacity, not working hours. A task without an estimate counts as 1 pomodoro (30 min) for planning only — a fallback, never a user estimate. Finishing an estimated task asks for the actual pomodoros (pre-filled with the counted ones); the planner calibrates with the local median factor (min 5 samples) and shows it in Stats. No network, no AI, no external calendar in v1.

Views

Day: agenda, plans, calendar

  • Recommended workflow — 5-step checklist (capture / morning / day / evening / week), first entry of Day.
  • Buongiorno (P) — context + proposal + slots, see loop step 2.
  • Agenda — chronological radar: overdue, today, tomorrow, next 7 days, important undated.
  • Day plan (p) — manual plan of today (+ add from Upcoming, x remove, Space pause, Enter detail, o/O pomodoro).
  • Week (w) / Calendar (c) — week strip and month calendar (day → day plan).
  • Evening report / Day closing (R) — recap + print + tomorrow picker.

Views and insights

  • Due-date radar (b cycles chart → text → hidden, B full board) — strip-scatter priority × horizon with today line, worst-offenders caption and undated count; click a dot for the detail (or a picker on overlap). Falls back to text automatically when empty, without overwriting your preference.
  • Stats (k) — goals/streaks, week totals, per-priority and per-project, time-of-day and weekday peaks, pomodoros, 14-day completions, punctuality, 🍅 heatmap, estimates-vs-actual factor; CSV export.
  • Smart lists — name the current home filter (state/tag/project/search) and reapply it in one click from menu or palette (ctrl+p); any manual filter touch detaches back to manual (max 10, unique names).
  • Project health (y) — OK / at-risk / critical per project (progress, overdue, momentum).
  • Templates (T) — create/edit/apply, including from a project.
  • Goals — daily/weekly targets with streaks.

Data: backup, transfer, archive

  • Backup now / Restore backup — automatic zip snapshots in ~/Tasko_backups/ (14 kept), restore validates before touching disk with rollback.
  • Export: Markdown (ctrl+e) / CSV / stats CSV / iCal — the .ics covers active tasks with due dates; files land in ~/CarpeDiem_screenshots/.
  • Import: CSV — idempotent on (source, external_id) (re-import skips, internal ids untouched; rows without external id are always new).
  • Archive — done tasks aside with viewer and restore.

System

  • Settings — theme, filters, goals, language, day_hours capacity (1–16).
  • Security — optional Fernet encryption (PBKDF2, key in RAM only); locked files read as empty, never as corrupt.
  • Screenshot (ctrl+s) — SVG capture to ~/CarpeDiem_screenshots/.
  • Clear filters, Theme (v), Keys list, Refresh (r), Quit (q).

Keys

Key Action
n / s New todo / subtask of selected
ctrl+l (in form) Fill fields from title (natural language)
Space then 1/2/3 Active / Paused / Done (grid with arrows + Enter)
Enter / e Details (with inline edit) / Edit
d / u Delete (confirm) / Undo
o / O / X Start-open pomodoro / pause-resume / complete-skip
P / p Buongiorno proposal / Day plan
R / r Day closing / Refresh
b / B Radar chart → text → hidden / full board
c / w / k / y Calendar / week / stats / project health
f / t / g / / State, tag, project, search filters
Esc (search active) Clear search only (other filters kept)
T / v / m / ctrl+p Templates / theme / menu / command palette
ctrl+s / ctrl+e Screenshot SVG / Markdown export
q Quit

Press m for the menu (Day / Views and insights / Data / System). The footer shows only m ☰ Menu; the palette (ctrl+p, Category › Entry) holds every command with its shortcut.

CLI

carpediem add "Call bank tomorrow #calls *personal !high ~2"  # natural language (default)
carpediem add "Buy milk" --project home --due 2026-09-30 --priority alta --tags spesa
carpediem list                          # all, sorted by due then title
carpediem list --state active --project home
carpediem list --porcelain               # id|state|priority|due|title, script-friendly
carpediem done 12
carpediem show 12

add without flags parses the phrase (#tag *project !prio ~estimate //note, recurrence, dates it/en); with flags the title is taken literally. done/show use ids; errors go to stderr with exit codes.

Data

Everything lives in local JSON next to your home (offline-first):

File Content
~/.todo_app.json Tasks (+ .bak.json previous copy; fields include actual_pomo/minutes, source/external_id)
~/.todo_templates.json Templates
~/.todo_pomodoro.json Timer session + cycle
~/.todo_config.json Theme, filters, goals, language, day_hours, kanban_mode, smart_lists (max 10), day_window ({date, start, end, events[]})
~/.todo_archive.json Archived done tasks
~/Tasko_backups/ Automatic zip snapshots (14 kept)
~/CarpeDiem_screenshots/ SVG screenshots, CSV/Markdown exports

Single-writer commit() with inter-process lock and three-way per-id merge (CLI and TUI never overwrite each other). Restore a backup any time from the menu (Backup: restore). Optional encryption from System → Security. Language follows the system (Italian or English), override with TASKO_LANG=it|en or in Settings; isolate data with TASKO_HOME=/tmp/demo.

Dev

pip install -r requirements-dev.txt
python -m pytest tests/ -q
python -m ruff check src/ tests/

See CONTRIBUTING.md. Hobby project, Italian-first: issues in Italian or English welcome.

License

MIT — see LICENSE and CHANGELOG.md.

Metadata

Release files for carpediem 0.18.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for carpediem 0.18.3
File Size Uploaded
carpediem-0.18.3.tar.gz 282.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for carpediem 0.18.3
File Interpreter ABI Platform
carpediem-0.18.3-py3-none-any.whl Python 3 none any Details

Total release size: 472.0 kB

Release files / carpediem-0.18.3.tar.gz

Download URL carpediem-0.18.3.tar.gz
Size 282.0 kB
Tags Source
SHA-256 checksum
How to use checksums
b69ff1acc121cb0f6ecb88267dfdc392ee62106ad4a026d7c121bcc63b4ee5c1
BLAKE2b-256 checksum
How to use checksums
6ecf0a4b07ea82ae7a6a099ca3390c6843f26ff711511d35002b58d22130bc0e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 30, 2026.

Transparency log

Release files / carpediem-0.18.3-py3-none-any.whl

Download URL carpediem-0.18.3-py3-none-any.whl
Size 190.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
2fc8e6c876bf30d9ab70c2721b35db434a135056953ba8801c0d0b72204bcc43
BLAKE2b-256 checksum
How to use checksums
31b7c7a74ad109c8ea892ea9b04d4581f10098bb9c427ce5b882662fc0b7c6d0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 30, 2026.

Transparency log

Release history Release notifications | RSS feed

0.18.4

2 release files

This release

0.18.3 This release

2 release files

0.18.2

2 release files

0.18.1

2 release files

0.12.0

2 release files

0.11.1

2 release files

0.11.0

2 release files

0.8.4

2 release files

0.8.3

2 release files

0.7.1

2 release files

0.7.0

2 release files

0.6.1

2 release files

0.6.0

2 release files

0.5.3

2 release files

0.5.2

2 release files

0.5.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page