A plain-text task manager and time tracker with pluggable AI parsing (Ollama / OpenAI-compatible / Anthropic).
Project description
jasem
A plain-text task manager and time tracker for your terminal, with pluggable AI parsing. One file, zero dependencies, your data in human-readable Markdown.
Install & run
Needs Python 3.8+.
pipx install jasem # recommended — isolated, puts `jasem` on your PATH
# or
pip install jasem
Then write a task in plain language and see what's due:
$ jasem "pay rent next friday, high priority, finance"
✓ added #1: pay rent
priority=high deadline=2026-06-19 tags=finance
$ jasem today
Due today
☐ 2 [medium] 2026-06-15 (today) call dentist #health
That's the whole loop: write naturally, jasem extracts the deadline, priority, and tags for you.
Features
- Natural-language tasks —
jasem "submit report by friday, work"becomes a title, deadline, priority, and tags. - Views & edits —
jasem list,today,week,overdue,done 3,set 3 deadline tomorrow,rm 3. - Time tracking —
jasem track "1h 30min, code review, work", thenjasem track weekfor per-day totals; fix or drop an entry withjasem track set 3 time 2handjasem track rm 3. - Plain-text storage — everything lives in
~/.jasem/*.md; read, grep, edit, sync, or version-control it however you like. - Pluggable AI, local by default — runs fully offline with Ollama, or point it at any OpenAI-compatible API or Anthropic. If no model is reachable, tasks still save (dates parsed by regex).
Choosing an AI backend
Parsing is the only step that uses a model — pick one with environment variables:
# Local, free, private (default) — just have Ollama running
ollama serve && ollama pull qwen2.5:3b
# Any OpenAI-compatible API (OpenAI, Groq, OpenRouter, LM Studio, …)
export JASEM_PROVIDER=openai JASEM_API_KEY=sk-...
export JASEM_OPENAI_API_BASE=https://openrouter.ai/api/v1 # or OPENAI_BASE_URL
# Anthropic (Claude)
export JASEM_PROVIDER=anthropic JASEM_API_KEY=sk-ant-...
Persian (Jalali) calendar
Set JASEM_JALALI=true to work in the Persian (Jalali/Shamsi) calendar:
export JASEM_JALALI=true
jasem "pay rent 1405-04-10, finance" # type deadlines in Jalali
jasem list # dates are shown in Jalali
Every date jasem shows is Jalali and every explicit date you type is read
as Jalali — but your data on disk stays Gregorian ISO (YYYY-MM-DD), so the same
files work with or without the flag. Relative phrases (tomorrow, next friday,
in 3 days) work in both modes. Leave the variable unset (or false) for the
default Gregorian calendar.
More
Run jasem help for the full command reference, every option, and all
configuration variables.
License
MIT — see LICENSE.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file jasem-0.7.0.tar.gz.
File metadata
- Download URL: jasem-0.7.0.tar.gz
- Upload date:
- Size: 39.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
95bdefcebb21154a4d236dde32131327eb863ca4f74f5888756cae87cb210be7
|
|
| MD5 |
bb3f26645d80c9d43d06a5a85072f208
|
|
| BLAKE2b-256 |
8b2eb65f32e46329bdd46fbb1b9ba60e1517af19ddc43b8723b65b61846a0f71
|
File details
Details for the file jasem-0.7.0-py3-none-any.whl.
File metadata
- Download URL: jasem-0.7.0-py3-none-any.whl
- Upload date:
- Size: 40.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9f30836dd9cac1b90f988770d04d6c082b25cdc79ec16b68bb87b8b9a69f7e62
|
|
| MD5 |
be74fcf9f6900997cdd11c4a96c672cd
|
|
| BLAKE2b-256 |
411ba1821341cc3b07672330a58aa6c5947bd26c8b0b84aee4dd6eac70391da5
|