Open Source · macOS + Web

Know where your time actually goes

A silent Mac agent captures every app, browser tab, and idle moment. A self-hosted web dashboard turns that raw data into a clear, scored picture of your day.

Download Mac App Run with Docker View on GitHub
YourTime — Monday, May 11
Day Score
8.2
Active Time
7h 40m
Focus Work
5h 12m
Off Time
18%
9 AM
10 AM
11 AM
12 PM
1 PM
2 PM
3 PM

Three simple pieces

No cloud. No account. No third-party telemetry. Your data lives entirely on your machine.

1

Mac app runs in the background

A lightweight menu-bar agent polls every 3 seconds. It captures the active app, window title, and browser URL — including private tabs, which are logged as "Private/Incognito" to protect your privacy.

2

Events are saved as CSV files

Each event is appended to a daily CSV in ~/.yourtime/data/YYYY-MM-DD.csv. Plain text, version-controllable, easy to inspect. No database, no binary format.

3

Web dashboard turns data into insight

Mount your data folder into the Docker container. Open the browser and get a minute-by-minute timeline, productivity score, calendar overlays, and category breakdowns — for any day, instantly.

Everything you need,
nothing you don't

📅

Minute-by-minute timeline

Every minute of your day is rendered as a coloured block proportional to time spent. Hover to see the app, category, weight, and duration. Off-time gaps are collapsed to keep things readable.

📊

Productivity score (0–10)

A transparent formula: 75% net weighted work + 25% volume. You define what "productive" means via custom categories and weights. No black box — expand the score card to see exactly how it was calculated.

🗓️

Google Calendar overlay

Sync your calendar events and see them overlaid on the timeline. Each meeting gets an attention score based on how relevant your actual activity was during that slot.

⚖️

Custom weights per app & domain

Assign a weight to any app or website: positive for productive work, negative for distractions, zero for neutral. Domain weights override app weights, giving you fine-grained control.

🔒

Private browsing aware

The Mac agent detects incognito/private mode across Chrome, Safari, Firefox, and Brave. Private tabs are logged as "Private/Incognito" — never the actual URL or title.

🏠

100% local, self-hosted

Data never leaves your machine. The web dashboard runs in Docker on your local network. No account required, no telemetry, no SaaS dependency. You own everything.

Your definition of a good day

The score reflects your priorities, not ours. Set weights on your apps and categories, configure your target hours, and let YourTime do the math.

Example day breakdown
VS Code
+1.5
Slack
+1.0
Email
0
YouTube
-1.0
Twitter
-0.5
Net Work Score
7.8
×
Weight
75%
+
Volume Score
8.9
×
Weight
25%
Final score 8.1 / 10
Weight guide
Deep focus work +1.5
Communication & collaboration +1.0
Neutral / admin 0
Light distraction -0.5
Heavy distraction -1.5
Weights are fully customizable per app, domain, or category. You decide what counts as productive.

Up and running in minutes

Mac App

The menu-bar agent that captures your activity. Requires macOS 13+ and Accessibility permissions.

  1. 1Download and unzip YourTime.zip
  2. 2Move YourTime.app to /Applications
  3. 3Right-click → Open (required on first launch because the build is unsigned)
  4. 4Grant Accessibility permissions when prompted — needed to read window titles
  5. 5Data starts flowing to ~/.yourtime/data/ immediately
Download for Mac
or build from source →
🐳

Web Dashboard

Self-hosted Next.js dashboard. Mount your data folder and open your browser. Google Calendar sync is optional.

  1. 1Pull the image from GitHub Container Registry
  2. 2Run the container with your data folder mounted
  3. 3Open http://localhost:8888 in your browser
# Pull docker pull ghcr.io/esseti/yourtime:latest # Run docker run -d --name yourtime \ -v ~/.yourtime/data:/app/data \ -p 8888:3000 \ ghcr.io/esseti/yourtime:latest
Optional — Google Calendar: set GOOGLE_CLIENT_ID and GOOGLE_CLIENT_SECRET as environment variables to enable calendar sync. See the setup guide.
🛡️

Your data stays on your machine

YourTime never sends data to any server. Activity is written to local CSV files. The web dashboard runs inside Docker on your own hardware. Private browsing sessions are detected and never logged. You can inspect, delete, or export every file at any time.

What's new

v1.0.0 2026-05-11

Changelog

Unreleased

⚙️CI / Build

pnpm@latest was resolving to v10 which is incompatible with lockfileVersion 9.0.

Co-Authored-By: Claude Sonnet 4.6 noreply@anthropic.com

Co-Authored-By: Claude Sonnet 4.6 noreply@anthropic.com

Co-Authored-By: Claude Sonnet 4.6 noreply@anthropic.com

Co-Authored-By: Claude Sonnet 4.6 noreply@anthropic.com

🌐Web Dashboard

pnpm v9 requires the packages field when pnpm-workspace.yaml is present.

Co-Authored-By: Claude Sonnet 4.6 noreply@anthropic.com

v1.0.0 (2026-05-11)

⚙️CI / Build

Reduces vulnerabilities from 1C/19H/5M/3L to 0C/1H/4M/0L per docker scout.

Co-Authored-By: Claude Sonnet 4.6 noreply@anthropic.com

📦General

Co-Authored-By: Claude Sonnet 4.6 noreply@anthropic.com

Co-Authored-By: Claude Sonnet 4.6 noreply@anthropic.com

View full changelog on GitHub →