Skip to main content

Handy plain-text task, time & expense tracker, with AI parsing.

Project description

jasem

jasem

A plain-text task manager, time tracker, and spending log for your terminal — natural-language input, pluggable AI parsing, zero dependencies. Your data stays in human-readable Markdown under ~/.jasem/.

📖 Full guide & command reference → the wiki

Install

Needs Python 3.8+.

pipx install jasem   # or: pip install jasem

Quick start

# Capture — write naturally; jasem reads the deadline, amount & tags for you
jasem todo  "pay rent next friday, high priority, finance"
jasem track "1h30min code review, work"
jasem acc   "50k lunch with the team, food"

# Review
jasem todo            # open tasks, soonest deadline first
jasem track report    # time totals, by-tag & timeline
jasem acc report      # spending totals, by-tag & timeline
jasem                 # welcome screen
jasem --help          # full command reference

If no AI model is reachable, entries still save (dates parsed by regex).

Commands

Three symmetric namespaces, same verbs in each — prefix every command with jasem:

Action todo — tasks track — time acc — spending
Add (natural language) todo "pay rent friday, finance" track "1h30min review, work" acc "50k lunch, food"
List todo list [tag] track list [period] [tag] acc list [period] [tag]
Report (totals · by-tag · timeline) track report [period] [tag] acc report [period] [tag]
Filtered views todo today · week · overdue · all
Search todo find "rent"
Categories todo tags track tags acc tags
Mark done todo done <id>
Edit a field todo set <id> deadline tomorrow track set <id> time 2h acc set <id> amount 60k
Remove todo rm <id> track rm <id> acc rm <id>

period = today · week · month · all. Lists and reports render as aligned tables with bar charts and sparklines.

AI backend

Parsing is the only step that uses a model. Default is local Ollama (free, private, offline).

# Local (default)
ollama serve && ollama pull qwen2.5:3b

# OpenAI-compatible (OpenAI, Groq, OpenRouter, LM Studio, …)
export JASEM_PROVIDER=openai JASEM_API_KEY=sk-...
export JASEM_OPENAI_API_BASE=https://openrouter.ai/api/v1   # for non-OpenAI hosts

# Anthropic (Claude)
export JASEM_PROVIDER=anthropic JASEM_API_KEY=sk-ant-...

Persian (Jalali) calendar

Set JASEM_JALALI=true to read and show every date in the Persian (Jalali/Shamsi) calendar:

export JASEM_JALALI=true
jasem todo "pay rent 1405-04-10, finance"   # type dates in Jalali
jasem todo list                              # dates shown in Jalali

Dates you type and dates jasem shows are Jalali, but files on disk stay Gregorian ISO (YYYY-MM-DD) — so the same data works with or without the flag. Relative phrases (tomorrow, next friday, in 3 days) work in both modes. Leave it unset (or false) for the default Gregorian calendar.

Config

  • Storage~/.jasem/*.md; grep, edit, sync, or version-control it freely.
  • ColorJASEM_ACCENT recolors the accent; NO_COLOR forces plain text.

Run jasem --help for every command, option, and environment variable.

A note on AI

I used AI to create some parts of Jasem, but I carefully reviewed all the code written by AI rather than blindly copy-pasting.

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.1.1.tar.gz (56.8 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.1.1-py3-none-any.whl (57.1 kB view details)

Uploaded Python 3

File details

Details for the file jasem-1.1.1.tar.gz.

File metadata

  • Download URL: jasem-1.1.1.tar.gz
  • Upload date:
  • Size: 56.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for jasem-1.1.1.tar.gz
Algorithm Hash digest
SHA256 5dbc5cd190379c517ca5d4b7fff53fa5c9ef0f55c4c8b5bba7bd43a6cf01d1f9
MD5 a3ff5e2ff6ded1343d2cb3df1fc44899
BLAKE2b-256 0287372c2eb10a65cf7841aba0f0e4c1dcc8dab6c8792007c1667e0fc13e8819

See more details on using hashes here.

File details

Details for the file jasem-1.1.1-py3-none-any.whl.

File metadata

  • Download URL: jasem-1.1.1-py3-none-any.whl
  • Upload date:
  • Size: 57.1 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.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 2af9c6b88647412e696a344856c9cc3721cc10bd26963df27bf3744d84928e9b
MD5 d4fdc9492dd06cae79e83e9b64328acf
BLAKE2b-256 bc157e6d8379a71c5b8e6871d4e55fb84fa609776ff4ed2646bbf389bc09849d

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