Skip to main content

Local CLI for tracking tasks, git commits, and generating summaries

Project description

worktick

Track your work, capture git commits, generate summaries. All local. No cloud. No accounts.

PyPI Python License

Why

Time tracking shouldn't require browser extensions, web apps, or yet another account. Your org wants quantified task output — they don't care how you track it. But manually logging hours, copy-pasting commit messages, and formatting standup notes is tedious busywork.

worktick runs entirely on your machine. Start a timer, code as usual, and it auto-captures your git commits across repos. When you stop, it generates markdown summaries you can paste directly into Trello, Slack, or standup notes. Optional local AI tools add meeting minutes from mic recordings — no audio leaves your machine.

Quick Start

pip install worktick

wt start "Fix auth bug"
# ... code, commit as usual ...
wt note "Tested in Postman"
wt stop
wt summary today

Output:

## 2026-03-08 (Saturday)

**Fix auth bug** (2h 15m)
- Fix token refresh logic (abc123d)
- Add retry on 401 responses (def456a)
- Tested in Postman

**Total: 2h 15m**

Ready to paste into Trello, Slack, or your standup notes.

Install

pip install worktick

Or with uv (recommended for CLI tools):

uv tool install worktick

This installs two commands: worktick (full name) and wt (short alias). All examples below use wt.

Commands

Core

These work out of the box — no extra setup needed.

Command Description
wt start "title" [--card URL] Start a new task timer
wt stop [--at HH:MM] Stop timer, capture git commits
wt status Show current task and elapsed time
wt pause / wt resume Pause and resume the timer
wt note "text" Add a note to the current task
wt list [--days N] List recent tasks
wt summary [today|yesterday|week] Generate markdown summary
wt daily [today|yesterday|week] Compact hours summary (Ollama optional)
wt repo [path] Register git repo(s)
wt cancel Discard the current task
wt edit ID [--title T] [--card U] Edit a past task

Meeting Minutes

These require optional AI tools (see Setup below).

Command Description
wt mom listen Start recording from mic
wt mom pause / wt mom resume Pause and resume recording
wt mom stop [--model M] Stop, transcribe, generate minutes
wt mom file <path> [--model M] Generate minutes from a file or stdin
wt mom list List all saved meetings
wt mom show <id> View meeting minutes
wt mom retry <id> [--model M] Retry a failed meeting

What needs what:

Command Ollama whisper.cpp sox/ffmpeg
wt daily optional
wt mom file <text-file> required
wt mom file <audio-file> required required
wt mom listen/stop required required required
wt mom list/show/retry

Example Workflow

wt start "Fix auth bug" --card https://trello.com/c/xxx
wt repo /path/to/workspace/myorg

# code, commit as usual...
git commit -m "Fix token refresh logic"
wt note "Tested flow in Postman"

wt stop
wt summary today

wt summary output

## 2026-03-08 (Saturday)

**Fix auth bug** (2h 15m) [Trello](https://trello.com/c/xxx)
- Fix token refresh logic (abc123d)
- Add retry on 401 responses (def456a)
- Tested flow in Postman

**Build email automation** (1h 30m) [Trello](https://trello.com/c/yyy)
- Created webhook trigger for new signups
- Connected to SendGrid email node

**Daily standup** (15m)
- Sprint planning for next week

**Total: 4h 00m**

wt daily output

Compact format for quick standups. Titles cleaned up by Ollama if available.

Sat, 08 Mar 2026 - 4.00H

2.25H - Fixed auth token refresh and added retry on 401
1.50H - Built email automation with SendGrid webhooks
0.25H - Daily standup

wt mom — meeting minutes

wt mom listen              # start recording
wt mom pause               # pause during break
wt mom resume              # resume
wt mom stop                # stop → transcribe → generate minutes

wt mom file transcript.txt  # from text file
wt mom file meeting.wav    # from audio file
pbpaste | wt mom file -    # from clipboard (macOS)

Multi-Repo Git Tracking

Git repos are auto-detected from your working directory. You can also register repos explicitly:

wt repo /path/to/repo              # single repo
wt repo /path/to/workspace/org     # scan children for git repos

On wt stop, commits are scanned from all registered repos.

Setup for AI Features

The core commands work with zero setup. The tools below are only needed for AI-powered features (wt daily title cleanup, wt mom meeting minutes).

1. Ollama — Local LLM

Required for wt mom (meeting minutes). Optional for wt daily (cleans up task titles — falls back to raw titles without it).

macOS:

brew install ollama

Linux:

curl -fsSL https://ollama.com/install.sh | sh

Windows:

Download from ollama.com/download.

Then pull a model and start the server:

ollama pull gemma3             # ~5GB, works well on 16GB RAM
ollama serve                   # keep running in background

2. whisper.cpp — Local Speech-to-Text

Required for audio transcription (wt mom listen/stop and wt mom file <audio-file>). Not needed for text input (wt mom file notes.txt).

macOS:

brew install whisper-cpp

Linux / Build from source:

git clone https://github.com/ggerganov/whisper.cpp.git
cd whisper.cpp && cmake -B build && cmake --build build --config Release
sudo cp build/bin/whisper-cli /usr/local/bin/

Windows:

Download pre-built binaries from whisper.cpp releases and add whisper-cli to your PATH.

Then download a model:

mkdir -p ~/.cache/whisper

# Medium model (~1.5GB) — best accuracy
curl -L -o ~/.cache/whisper/ggml-medium.bin \
  https://huggingface.co/ggerganov/whisper.cpp/resolve/main/ggml-medium.bin

# Or base model (~150MB) — faster, slightly lower accuracy
curl -L -o ~/.cache/whisper/ggml-base.bin \
  https://huggingface.co/ggerganov/whisper.cpp/resolve/main/ggml-base.bin

All models: huggingface.co/ggerganov/whisper.cpp

3. sox or ffmpeg — Audio Recording

Required only for live mic recording (wt mom listen). sox is preferred for cleaner audio. ffmpeg works as a fallback.

macOS:

brew install sox              # recommended

Linux (Debian/Ubuntu):

sudo apt install sox          # recommended
# or: sudo apt install ffmpeg

Linux (Fedora/RHEL):

sudo dnf install sox
# or: sudo dnf install ffmpeg

Windows:

# With Chocolatey
choco install sox
# or: choco install ffmpeg

# With Scoop
scoop install sox
# or: scoop install ffmpeg

The code tries sox first, falls back to ffmpeg automatically.

Data Storage

All data is stored locally in ~/.worktick/ as JSON files:

File Purpose
tasks.json Task entries with timestamps, commits, notes
meetings.json Meeting minutes with transcript, status, audio path
recording.json Active recording state — auto-cleaned on stop

All writes are atomic (temp file + rename) to prevent corruption. No data leaves your machine.

License

MIT

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

worktick-0.3.0.tar.gz (38.5 kB view details)

Uploaded Source

Built Distribution

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

worktick-0.3.0-py3-none-any.whl (22.7 kB view details)

Uploaded Python 3

File details

Details for the file worktick-0.3.0.tar.gz.

File metadata

  • Download URL: worktick-0.3.0.tar.gz
  • Upload date:
  • Size: 38.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for worktick-0.3.0.tar.gz
Algorithm Hash digest
SHA256 58fa4155184ece6974ef2a8c367628e8304515dd92aec6704c1bb679368d88d1
MD5 64ac46e775fa5de734098787b6dfcd12
BLAKE2b-256 52fd6a8079fd4ef166742c434fd2e60dddb4fc22b752aecda4e673661ee10ae6

See more details on using hashes here.

Provenance

The following attestation bundles were made for worktick-0.3.0.tar.gz:

Publisher: publish.yml on karprabha/worktick

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file worktick-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: worktick-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 22.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for worktick-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 91b92300ee047f109e523e7af607ff38a8f948b8a3cc1cd85e8dbfd6e7f6174f
MD5 bb834285305ff2134e065d3d0ba5bfd0
BLAKE2b-256 7de78c976111ee7d7129c02ce5a6022e99dc9bb67d308f755e238048fa5ea013

See more details on using hashes here.

Provenance

The following attestation bundles were made for worktick-0.3.0-py3-none-any.whl:

Publisher: publish.yml on karprabha/worktick

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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