Automatic work activity tracker with AI-powered daily Excel reports
Project description
Devtrackr
Automatic work activity tracker for macOS — tracks your IDEs, meetings, and browser usage all day, then drops a polished Excel report on your desk at 6 PM with an AI-written summary of your day.
What it does
- Tracks time in VS Code, Rider, IntelliJ, Visual Studio, Jupyter, Xcode and more
- Detects meetings in Teams, Zoom, Webex, Skype, Google Meet, Slack huddles
- Knows which project you're in by reading the IDE window title
- Skips idle time — if you step away, it stops counting
- Reads your git commits and links them to the project you worked on
- Generates a daily Excel report at a time you choose (default 6 PM, Mon–Fri)
- AI narrative summary via a local Ollama model — 100% private, no cloud
Requirements
- macOS (uses AppleScript and launchd)
- Python 3.9+
- Ollama installed locally (optional, for AI summary)
Install
pip install devtrackr
Quick start
devtrackr init
That's it. The wizard asks five questions, then installs and starts the tracker automatically.
──────────────────────────────────────────────────
Welcome to Devtrackr!
──────────────────────────────────────────────────
[1/5] Where are your git repos? (comma-separated paths)
> ~/repos, ~/work/client-projects
[2/5] Where should daily reports be saved?
> ~/Documents/WorkReports
[3/5] What time to generate the daily report? (24h)
> 18
[4/5] Do you want an AI summary in your daily report?
(requires Ollama installed) [Y/n]: Y
[5/5] Which Ollama model should generate the summary? [llama3.2:3b]:
1. llama3.2:3b
✅ Config saved → ~/.devtrackr/config.toml
✅ Background tracker started
✅ Daily reports scheduled at 18:00 Mon–Fri
✅ Reports will be saved to: ~/Documents/WorkReports
Commands
| Command | Description |
|---|---|
devtrackr init |
First-time setup wizard |
devtrackr status |
Show running status and last recorded activity |
devtrackr report |
Generate today's report right now |
devtrackr report --date 2026-05-15 |
Generate report for a specific date |
devtrackr start |
Start the background tracker |
devtrackr stop |
Stop the background tracker |
devtrackr config show |
View current configuration |
devtrackr config add-repo ~/path |
Add a git repo folder to scan |
devtrackr config set-report-time 17 |
Change report time |
devtrackr config set-model mistral:7b |
Change AI model |
Excel report
Each daily report contains four sheets:
| Sheet | Contents |
|---|---|
| Summary | Total hours, meeting hours, coding hours; per-app/project breakdown |
| By Project | Hours per project sorted by time spent |
| Git Activity | Commits you made today, per repo |
| AI Summary | A 3–5 sentence narrative of your day written by Ollama |
Configuration
Config lives at ~/.devtrackr/config.toml. Edit it any time, or use the devtrackr config commands:
[paths]
repos_dirs = ["~/repos", "~/work"] # scan multiple repo roots
reports_dir = "~/Documents/WorkReports"
db_path = "~/.devtrackr/logs.db"
[tracker]
poll_interval = 10 # seconds between samples
idle_threshold = 300 # seconds idle before pausing
report_hour = 18 # 24h — report fires Mon–Fri at this hour
[ai]
ollama_enabled = true
ollama_model = "llama3.2:3b"
ollama_url = "http://localhost:11434"
After editing, restart the tracker:
devtrackr stop && devtrackr start
Apps tracked
IDEs — VS Code, Visual Studio, Rider, IntelliJ IDEA, PyCharm, WebStorm, GoLand, Xcode, Jupyter (in browser)
Meetings — Microsoft Teams, Zoom, Webex, Skype, Google Meet, Slack (huddles), Discord (voice channels)
Browsers — Chrome, Firefox, Safari, Edge, Arc, Brave, Opera, Vivaldi
Terminal — Terminal, iTerm2, Warp, Hyper, Kitty, Ghostty
Privacy
Everything stays on your Mac:
- Activity data →
~/.devtrackr/logs.db(SQLite, only you can read it) - Reports → your chosen folder
- AI summary → processed by Ollama running locally, nothing sent to the cloud
Contributing
Pull requests are welcome! Please open an issue first to discuss what you'd like to change.
git clone https://github.com/adeleye-art/devtrackr
cd devtrackr
pip install -e .
devtrackr init
❤️ Support this project
Devtrackr is free and open source. If it saves you time, consider buying me a coffee — it helps me keep working on it!
License
GNU GPL v3 © 2026 Adeleye Alarape
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file devtrackr-0.1.2.tar.gz.
File metadata
- Download URL: devtrackr-0.1.2.tar.gz
- Upload date:
- Size: 15.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2211b4f2ad82b11f53fcfa0bd2a23bbff392bb98a0064cf4c0b3430e4e526b18
|
|
| MD5 |
87409b2133bd78eaac6c92cba6e31838
|
|
| BLAKE2b-256 |
a782d3b26d57812256f91464e22d526248879c5836543dd547699385ae7c2ba6
|
Provenance
The following attestation bundles were made for devtrackr-0.1.2.tar.gz:
Publisher:
publish.yml on adeleye-art/devtrackr
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
devtrackr-0.1.2.tar.gz -
Subject digest:
2211b4f2ad82b11f53fcfa0bd2a23bbff392bb98a0064cf4c0b3430e4e526b18 - Sigstore transparency entry: 1554292852
- Sigstore integration time:
-
Permalink:
adeleye-art/devtrackr@909dc7b6c7ff6a8d902430aae6590e87bfab67a5 -
Branch / Tag:
refs/tags/v0.1.2 - Owner: https://github.com/adeleye-art
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@909dc7b6c7ff6a8d902430aae6590e87bfab67a5 -
Trigger Event:
push
-
Statement type:
File details
Details for the file devtrackr-0.1.2-py3-none-any.whl.
File metadata
- Download URL: devtrackr-0.1.2-py3-none-any.whl
- Upload date:
- Size: 15.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cb494880afd295ae7d9432f472b812d89c05af04b6a77b2b0abcb099db662066
|
|
| MD5 |
1fdc4986556451ecfa66d06b9b65c5dc
|
|
| BLAKE2b-256 |
54bd940a7de94cf8832f012691966c99de4d199db04f8a1e6342dba3a3f614b6
|
Provenance
The following attestation bundles were made for devtrackr-0.1.2-py3-none-any.whl:
Publisher:
publish.yml on adeleye-art/devtrackr
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
devtrackr-0.1.2-py3-none-any.whl -
Subject digest:
cb494880afd295ae7d9432f472b812d89c05af04b6a77b2b0abcb099db662066 - Sigstore transparency entry: 1554292875
- Sigstore integration time:
-
Permalink:
adeleye-art/devtrackr@909dc7b6c7ff6a8d902430aae6590e87bfab67a5 -
Branch / Tag:
refs/tags/v0.1.2 - Owner: https://github.com/adeleye-art
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@909dc7b6c7ff6a8d902430aae6590e87bfab67a5 -
Trigger Event:
push
-
Statement type: