Skip to main content

Time Buddy

A simple to use time tracking CLI for macOS.

Track your screen time based on macOS system logs to calculate how many hours you've worked each day.

Time Buddy Preview

Features

  • 📊 Track screen time based on macOS unlock/lock events
  • 📅 Calculate time spent per day with hourly breakdown visualization
  • 📈 Compare periods with trend analysis (week-over-week, etc.)
  • 💾 Smart caching for faster subsequent runs
  • 🎨 Colorful terminal output with progress indicators
  • 📤 Export data to CSV or JSON for integration with other tools
  • 📄 Export data as PDF for easy sharing

Requirements

  • macOS (uses macOS system logs)
  • Python 3.7+ (for development)

Setup (Required)

Before using Time Buddy, you must enable persistent logging for screen lock/unlock events:

sudo log config --subsystem com.apple.loginwindow --mode "persist:info"

This command configures macOS to persistently store login window events. Without this, the system may not retain the screen lock/unlock logs needed for accurate time tracking.

Note: You only need to run this once. The setting persists across reboots.

Installation

pip install time-buddy

Standalone Binary

If you don't have Python installed:

curl -fsSL https://raw.githubusercontent.com/alen-z/time-buddy/main/install.sh | bash

Or build from source:

git clone https://github.com/alen-z/time-buddy.git
cd time-buddy
make install
make install-binary

Usage

# Show version
time-buddy --version

# Show screen time for the last 7 days (default)
time-buddy

# Show screen time for the last 30 days
time-buddy --days 30

# Show detailed session information
time-buddy --verbose

# Force refresh (ignore cache)
time-buddy --no-cache

# Include weekends in expected hours calculation
time-buddy --include-weekends

# Clear the cache
time-buddy --clear-cache

# Export data as JSON
time-buddy --days 30 --export json

# Export data as CSV
time-buddy --days 30 --export csv > december.csv

# Export data as PDF
time-buddy --days 30 --export pdf > december-report.pdf

# View 7 days from a month ago
time-buddy --days 7 --offset 30

# Compare with previous consecutive period (default: no gap)
time-buddy --days 7 --compare-offset

# Compare with a week gap (e.g., this week vs 2 weeks ago)
time-buddy --days 7 --compare-offset 7

Development

# Install dependencies
make install

# Install locally for testing (editable mode)
pip install -e .

# Run the application
make run

# Create standalone binary
make create-binary

# Test the binary
make test-binary

# Clean build artifacts
make clean

How It Works

Time Buddy reads macOS system logs for screen lock/unlock events and calculates:

  • Raw time: Actual screen-on time between unlock and lock events
  • Block time: Sum of time spans for each continuous work session (gaps >1 hour create separate blocks)

The output shows a 24-hour visualization where each block represents an hour, colored by activity intensity.

License

MIT License

Metadata

Release files for time-buddy 1.3.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 time-buddy 1.3.0
File Size Uploaded
time_buddy-1.3.0.tar.gz 13.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for time-buddy 1.3.0
File Interpreter ABI Platform
time_buddy-1.3.0-py3-none-any.whl Python 3 none any Details

Total release size: 26.3 kB

Release files / time_buddy-1.3.0.tar.gz

Download URL time_buddy-1.3.0.tar.gz
Size 13.0 kB
Tags Source
SHA-256 checksum
How to use checksums
a6856fa26ffaf55efd78beef68b2d9a041937f2d95737f5fbc751f95b827790f
BLAKE2b-256 checksum
How to use checksums
485ddebe69adfe755451acb41f4867bb86b24fb907e2fc634ca4288233a6749e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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 Jan 22, 2026.

Transparency log

Release files / time_buddy-1.3.0-py3-none-any.whl

Download URL time_buddy-1.3.0-py3-none-any.whl
Size 13.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
51d5cf896edb88c6662852419aead9ebf5151a2435c34d327d5bd5143652adc7
BLAKE2b-256 checksum
How to use checksums
45b65a15f5ccb2d96f8a2d34a388af3730f4299d1660415db6edf31e65ab687f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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 Jan 22, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

1.3.0 This release

2 release files

1.2.1

2 release files

1.2.0

2 release files

1.1.0

2 release files

1.0.5

2 release files

1.0.4

2 release files

1.0.3

2 release files

1.0.2

2 release files

1.0.1

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