Skip to main content

🌐 English · 中文

worklog

PyPI version Python versions Test codecov License: MIT

A local CLI worklog and task tracker backed by SQLite. Add tasks, log what you did, plan your day — all from the terminal, all in one file.

wl demo — a day in the terminal: plan, log, recap

Background: A todo tool where the writing is done by an AI, not me tells the story behind wl and the design choices.

Why wl:

  • Everything in one place. Time (year → month → week → day) and projects (area → task) share the same tree and the same id space. No switching between apps.
  • A daily rhythm that sticks. Set a goal in the morning, log as you go, recap at night. wl day replays the whole day with stats.
  • Structured and queryable. Every item carries status, priority, tags, props, and relations. Filter with wl ls, track dependencies/splits with wl relation (block / split / related), search by meaning with wl query.
  • AI-ready out of the box. Every command outputs plain text or -o json. There's a bundled Claude Code skill so an AI assistant can drive it directly.
  • Local and transparent. One SQLite file, no daemon, no account. You own the data.

Install

pipx install pyworklog   # or: uv tool install pyworklog
wl init

Requires Python ≥ 3.9. Shell completion:

wl print-completion fish | source        # fish — add to config.fish
eval "$(wl print-completion bash)"       # bash — add to .bashrc
eval "$(wl print-completion zsh)"        # zsh  — add to .zshrc

Quickstart

wl add "write the report" -p A    # add a task, priority A
wl log 1 "drafted the intro"      # log progress → status auto-flips to DOING
wl done 1                         # mark done
wl day                            # replay today: plan + logs + stats

Key workflows

Daily planning rhythm

Start the day with a goal, log as you work, close with a recap. wl day shows the full picture.

wl goal "ship the landing page today"     # morning intent (bare = read back)
wl log 42 "finished the hero section"     # progress note mid-day
wl recap "shipped it, copy still TBD"     # evening summary (bare = read back)
wl day                                    # the whole day: plan, logs, what changed

Real output from wl demo (the tasks carry -t work / -t personal — that tag is what sorts them into the day's buckets):

#9 2026-07-16 Thu · workday
  > 🎯 Send out the monthly report [1/1] ✅
     1. [x] #3 Write the report summary
  > 📝 Recap: Focus nailed - report's out, and I didn't chase the new idea. Weak spot:
    only scratched the AI tutorial. (written at 07-16 12:20)
  work
    ▸ planned
      [x] #3 [# ] Write the report summary
        · Draft written, sent to the team
  personal
    ▸ planned
      [ ] #4 [# ] Do the AI-agents tutorial

  ── 2026-07-16: 1/1 tasks with progress · DONE 1 · planned·not-done 1

wl tree --by project groups the same data by project instead of by time:

▸ #1 [#A] Ship the monthly report  (1)
[x] [# ] #3 Write the report summary
▸ #2 [#A] Learn how AI agents work  (2)
[ ] [# ] #4 Do the AI-agents tutorial
[ ] [# ] #10 Build a tiny agent myself

Schedule and track status

Assign tasks to dates and move them through a status machine.

wl add "review PR" --parent 7             # add under a project
wl sched 42 tomorrow                      # plan for tomorrow; also: next-week, +3w
wl start 42                               # clock in
wl stop 42                                # clock out — elapsed recorded
wl defer 42 next-month                    # push to backlog; also: someday
wl done 42                                # close

Statuses: TODO → DOING → DONE · also LATER (backlog) · WAIT (blocked) · CANCELED

wl find "deploy"                           # full-text, hits highlighted
wl query "follow up with the client"       # finds related even if exact words differ

wl query uses any OpenAI-compatible embedding server. For best results (LanceDB + CJK segmentation): pip install 'pyworklog[semantic]'.

AI-readable output

Every command accepts -o json — place it before or after the verb.

wl -o json ls --para project              # array of open projects
wl show 42 -o json | jq '.logs'           # node detail, pipe to jq
wl -o json active                         # currently running tasks

All commands

# capture
wl add "task" -p A -t work                # new task, priority, tags
wl log 42 "what I did"                    # log progress
wl done 42                                # close; also: defer / cancel / wait

# plan & review
wl goal "deliver X by EOD"                # today's goal  (bare = read)
wl recap "shipped, one blocker left"      # end-of-day summary (bare = read)
wl day                                    # today: plan + logs + stats
wl sched 42 2026-07-01                    # schedule; also: tomorrow / +3w / someday

# navigate
wl show 42                                # full detail + timeline
wl ls --para project -t work              # list open work projects
wl tree                                   # whole structure, top-down
wl summary --week 2026-W25                # weekly aggregate by project

# search
wl find "keyword"                         # full-text search
wl query "follow up with the client"      # semantic + keyword hybrid

Every command has wl <cmd> --help; wl help <topic> browses topic docs inline.

Contributing

CONTRIBUTING.md · DESIGN.md · CHANGELOG.md

Metadata

Release files for pyworklog 0.13.0

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

Source distribution (sdist)

Source distribution for pyworklog 0.13.0
File Size Uploaded
pyworklog-0.13.0.tar.gz 745.1 kB Details

Built distribution (wheel)

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

Total release size: 1.1 MB

Release files / pyworklog-0.13.0.tar.gz

Download URL pyworklog-0.13.0.tar.gz
Size 745.1 kB
Tags Source
SHA-256 checksum
How to use checksums
c73baeffc23a0f76ad0ecdbe901bb6cc50d669d96116c7cbbc5ebd1c1a0d2b50
BLAKE2b-256 checksum
How to use checksums
eaeeff95cd099d9041ca8281ad0e488953ad6bb83be7d57827a7ef29857d7af1
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 Oct 11, 2026.

Transparency log

Release files / pyworklog-0.13.0-py3-none-any.whl

Download URL pyworklog-0.13.0-py3-none-any.whl
Size 370.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
4f48b5faafa37a51a84096a980e3423aa786c296016cda8c2d7f8f8e1dfa12c9
BLAKE2b-256 checksum
How to use checksums
82f03cfade1c5c30e4a34318229c45febdfcbb7ccb6ad312af27a802fda0f9ba
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 Oct 11, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.13.0 This release

2 release files

0.12.0

2 release files

0.11.0

2 release files

0.10.0

2 release files

0.9.0

2 release files

0.8.0

2 release files

0.7.0

2 release files

0.6.0

2 release files

0.5.0

2 release files

0.4.0

2 release files

0.3.0

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