Skip to main content

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 tasksjasem todo "submit report by friday, work" becomes a title, deadline, priority, and tags.
  • Views, search & editsjasem todo list, today, week, overdue, tags, find rent, done 3, set 3 deadline tomorrow, rm 3.
  • Time trackingjasem track "1h 30min, code review, work", then jasem track list to see entries and jasem track report week for per-day totals; fix or drop an entry with jasem track set 3 time 2h and jasem track rm 3.
  • Spending logjasem acc "50k lunch with the team, food" records the amount, date, and category; review with jasem acc list and jasem acc report month; edit or drop with jasem acc set 3 amount 60k and jasem 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

jasem-1.0.0.tar.gz (55.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

jasem-1.0.0-py3-none-any.whl (55.6 kB view details)

Uploaded Python 3

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

Hashes for jasem-1.0.0.tar.gz
Algorithm Hash digest
SHA256 0d1a9cb4cf8442533d93fc8f3185e6f0410f805fc8be8c425143e3bccc618fd4
MD5 7183ff89c73573b846fdf8a357634475
BLAKE2b-256 8db3ab6694a08a25c8c054f89d89dc73ba66582f25404f4632127b6fb160af8f

See more details on using hashes here.

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

Hashes for jasem-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 1258aa05d7a4da48d8c49495b1f80c29b97fbcf1402a97d803231e9314deb78e
MD5 a9af2089f3fef27cd101bd6304880e2c
BLAKE2b-256 b6edd862a9f68f4429504fc838c4c41e3d33cf6eca823175c5b14e826a7d111c

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page