Automatic. Non-Invasive. Developer Time Tracking.
No more "Start/Stop" buttons. No more end-of-day guessing. Time is automatically tracked per git branch.
Privacy-first: no screenshots, no keystrokes, no code content collected.
Every 15 seconds, the script checks if you modified any files in the current project. If yes, it sends your project name, git branch, and timestamp. Nothing else. No file names, no code, no keystrokes, no screenshots.
{
"project_name": "my-saas-app",
"git_branch": "feature/auth",
"client_id": "a1b2c3d4-...",
"created_at": "2026-01-21T14:32:15Z"
}See exactly what's sent: devtime.sh#L67
# 1. cd to your project directory
cd /path/to/your/project
# 2. Download
curl -O https://github.com/dev-time-tracker/timetracker/blob/master/devtime.sh
chmod +x devtime.sh
# 3. Run
./devtime.shVisit: https://dev-time.com/app?client_id=YOUR_CLIENT_ID
Your client ID is stored in ~/.devtime_id and shown when the script starts.
To auto-track a specific project on login:
# 1. cd to your project directory
cd /path/to/your/project
# 2. create launchd background service
d="$PWD"; p=~/Library/LaunchAgents/com.devtime.plist
mkdir -p ~/Library/LaunchAgents
cat > "$p" <<EOF
<?xml version="1.0" encoding="UTF-8"?><plist version="1.0"><dict>
<key>Label</key><string>com.devtime</string>
<key>ProgramArguments</key><array><string>/bin/bash</string><string>$d/devtime.sh</string></array>
<key>WorkingDirectory</key><string>$d</string>
<key>RunAtLoad</key><true/><key>KeepAlive</key><true/>
</dict></plist>
EOF
launchctl unload "$p" 2>/dev/null; launchctl load "$p"
# 3. Your client_id is created the first time devtime runs and is saved locally in ~/.devtime_id.
# Since auto-start runs in the background (no terminal output), print it anytime with:
cat ~/.devtime_idCreate a systemd user service:
# 1. cd to your project directory
cd /path/to/your/project
# 2. create systemd background service
d="$PWD"
mkdir -p ~/.config/systemd/user
cat > ~/.config/systemd/user/devtime.service <<EOF
[Service]
WorkingDirectory=$d
ExecStart=/bin/bash $d/devtime.sh
Restart=always
[Install]
WantedBy=default.target
EOF
systemctl --user daemon-reload && systemctl --user enable --now devtime.service
# 3. Your client_id is created the first time devtime runs and is saved locally in ~/.devtime_id.
# Since auto-start runs in the background (no terminal output), print it anytime with:
cat ~/.devtime_id- ✅ Tracks: project name, git branch, timestamp
- ❌ Never collects: file names, code content, keystrokes, screenshots
- ✅ Open source: inspect the 67-line script
- ✅ Your data: export as CSV from the dashboard