VisualMode Tracker, built with Python

August 2, 2026 · View on GitHub

A command-line time tracker for your project and work sessions

Usage

Standard usage of vmt is to start a session by name (e.g. py-vmt) with zero or more tags (e.g. +python) while you work. You can always check the status. When you are done with a session, you can stop it. Check the log to see what sessions you have tracked over the last 7 days.

 vmt start py-vmt +python --at "14 minutes ago"
 Started tracking 'py-vmt' [python] at 12:00PM

 vmt status
 Tracking 'py-vmt' [python] for 27m20s (since 12:00PM)

 vmt stop --round
 Stopped tracking 'py-vmt' [python] (30m)

 vmt log
Session Log
Sunday, August 02
  12:00PM - 12:30PM		30m		'py-vmt' [python]

 vmt status
 Not tracking
Last: 'py-vmt' [python] (30m) at 12:00PM

Installation

vmt (visualmode-tracker) can be installed via uv and pipx:

 uv tool install visualmode-tracker
 pipx install visualmode-tracker

Note: that while the package name on PyPI is visualmode-tracker, the executable binary is called via vmt.

Development

Run the CLI in development with uv:

 uv run vmt start taco --at "1 hour ago"
 Started tracking 'taco' at 12:56PM
  with flag --at of '1 hour ago'

 uv run vmt status
 Tracking 'taco' for 3m

 uv run vmt start burrito
Error: already tracking 'taco'. Stop the current session first.
Aborted!

Testing

The test suite uses pytest and click's CliRunner to verify the behavior of the vmt CLI.

Run the tests like so:

 uv run pytest