A plain-text task manager and time tracker with pluggable AI parsing (Ollama / OpenAI-compatible / Anthropic).
Project description
jasem
A plain-text task manager, time tracker, and spending log 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 todo "pay rent next friday, high priority, finance"
✓ added #1: pay rent
priority=high deadline=2026-06-19 tags=finance
$ jasem todo
Open tasks ──────────────────────────────────────────────
● 1 ⚑ high in 4d pay rent #finance today
● 2 med today call dentist #health 2d
──────────────────────────── 2 open · 1 due today
That's the whole loop: write naturally, jasem extracts the deadline, priority,
and tags for you. Deadlines show as relative time (in 4d, today, overdue)
and the last column is each task's age.
Run jasem with no arguments for a one-screen dashboard — what needs
attention today, plus the time you've tracked and spent — drawn straight from
your logs, fully offline.
Everything is organized into three symmetric namespaces — todo (tasks),
track (time), and acc (spending) — and each shares the same verbs:
a quoted "<text>" adds, then list, tags, rm, and set. Lists and
reports render as aligned, width-aware tables with bar charts and sparklines;
set JASEM_ACCENT to recolor the accent, or NO_COLOR for plain text.
Features
- Natural-language tasks —
jasem todo "submit report by friday, work"becomes a title, deadline, priority, and tags. - Views, search & edits —
jasem todo list,today,week,overdue,tags,find rent,done 3,set 3 deadline tomorrow,rm 3. - Time tracking —
jasem track "1h 30min, code review, work", thenjasem track listto see entries andjasem track report weekfor per-day totals; fix or drop an entry withjasem track set 3 time 2handjasem track rm 3. - Spending log —
jasem acc "50k lunch with the team, food"records the amount, date, and category; review withjasem acc listandjasem acc report month; edit or drop withjasem acc set 3 amount 60kandjasem acc 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 todo "pay rent 1405-04-10, finance" # type deadlines in Jalali
jasem todo 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, or jasem version to check what you have installed.
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-1.0.0.tar.gz.
File metadata
- Download URL: jasem-1.0.0.tar.gz
- Upload date:
- Size: 55.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0d1a9cb4cf8442533d93fc8f3185e6f0410f805fc8be8c425143e3bccc618fd4
|
|
| MD5 |
7183ff89c73573b846fdf8a357634475
|
|
| BLAKE2b-256 |
8db3ab6694a08a25c8c054f89d89dc73ba66582f25404f4632127b6fb160af8f
|
File details
Details for the file jasem-1.0.0-py3-none-any.whl.
File metadata
- Download URL: jasem-1.0.0-py3-none-any.whl
- Upload date:
- Size: 55.6 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 |
1258aa05d7a4da48d8c49495b1f80c29b97fbcf1402a97d803231e9314deb78e
|
|
| MD5 |
a9af2089f3fef27cd101bd6304880e2c
|
|
| BLAKE2b-256 |
b6edd862a9f68f4429504fc838c4c41e3d33cf6eca823175c5b14e826a7d111c
|