Skip to main content

Manual WakaTime tracker — send heartbeats with a live TUI

Project description

PyPI Python License

manualwakatime

Manual WakaTime tracker with a live terminal UI.
Sends heartbeats every 60 seconds while you work — no editor plugin required.

Works with the official WakaTime API and compatible backends like Hackatime.

┌──────────────────────────────────────────────┐
│                  Tracking                    │
│                                              │
│     Project:    my-awesome-project           │
│     Elapsed:    00:12:35                     │
│     Heartbeats: 12                           │
│     Last beat:  23s ago                      │
│     Status:     ● Running                    │
│                                              │
├──────────────────────────────────────────────┤
│     Press q or Ctrl+C to stop                │
└──────────────────────────────────────────────┘

Why?

Sometimes you aren't writing code in an editor. Maybe you're:

  • Reviewing PRs in a browser
  • Designing in Figma
  • Writing docs in Notion
  • Pair programming over a call

manualwakatime lets you track any activity as a WakaTime project with a single command. Fire and forget.

Install

pip install manualwakatime

Requires Python 3.8+.

Quick start

mwt start my-project

A fullscreen TUI opens. Heartbeats are sent every 60 seconds. Press q or Ctrl+C when you're done, and a summary prints:

  Stopped  Tracked 01:23:45  83 heartbeat(s) sent.

No project name? Run mwt start — it shows your recent projects and lets you pick one by number or type a new name.

Commands

mwt start <project>    Start tracking a project
mwt start              Pick from recent projects interactively
mwt projects           List all tracked projects
mwt config             Show API key / URL status
mwt --help             Show help

Configuration

API credentials are read from (highest priority first):

Source Variable
Environment WAKATIME_API_KEY
Environment WAKATIME_API_URL
WakaTime config ~/.wakatime.cfgapi_key
WakaTime config ~/.wakatime.cfgapi_url

If no api_url is set, it defaults to https://api.wakatime.com/api/v1.

Example ~/.wakatime.cfg

[settings]
api_key = waka_your_api_key_here
api_url = https://api.wakatime.com/api/v1

Get your API key at wakatime.com/settings/api-key.

How it works

  1. On startup, mwt reads your API key and URL from config or environment.
  2. A background thread sends a heartbeat every 60 seconds.
  3. The TUI refreshes 8 times per second, showing elapsed time, heartbeat count, and status.
  4. Press q or Ctrl+C to stop cleanly — the alternate screen restores your terminal.

Project history is saved locally to %APPDATA%/mwt/projects.json (Windows) or ~/.config/mwt/projects.json (Linux/macOS).

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

manualwakatime-0.2.0.tar.gz (8.4 kB view details)

Uploaded Source

Built Distribution

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

manualwakatime-0.2.0-py3-none-any.whl (8.7 kB view details)

Uploaded Python 3

File details

Details for the file manualwakatime-0.2.0.tar.gz.

File metadata

  • Download URL: manualwakatime-0.2.0.tar.gz
  • Upload date:
  • Size: 8.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.5

File hashes

Hashes for manualwakatime-0.2.0.tar.gz
Algorithm Hash digest
SHA256 3cecd178be5f92f29bd0987374298b45d6c244b323bcdec2952b5819b9506609
MD5 4ab9ba47b95e8f422c970f05b978bcd2
BLAKE2b-256 2d776bb87046c0369bc24ab3dc97e10684d8cc950a6a5de642d77022008a5cb3

See more details on using hashes here.

File details

Details for the file manualwakatime-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: manualwakatime-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 8.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.5

File hashes

Hashes for manualwakatime-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 b3947eed656744833a43ed614096d861c50b2c83d928f1e953ce68617af082dc
MD5 9eef332a9e32441c5b3ad8bdfe1a48fc
BLAKE2b-256 7551438d8842d7c7c99649e5376eaff8c914423025a65c6035a6d9c06d4a638b

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