ShellTime

Track your coding time and productivity across projects with ShellTime. Automatic language detection, project analytics, and detailed activity insights.
Features
- Automatic Time Tracking - Tracks your coding activity in the background without interrupting your workflow
- Language Detection - Automatically detects and categorizes time by programming language
- Project Analytics - View time spent per project and workspace
- Git Integration - Tracks activity by git branch
- Debug Session Awareness - Distinguishes between coding and debugging time
Requirements
This extension requires the ShellTime daemon to be running. The daemon handles server communication, retry logic, and offline support.
Install the ShellTime CLI and start the daemon:
# Install ShellTime CLI
# (installation instructions at shelltime.xyz)
# Start the daemon
shelltime daemon start
Ensure your daemon config at ~/.shelltime/config.toml has code tracking enabled:
[codeTracking]
enabled = true
Extension Settings
This extension contributes the following settings:
shelltime.enabled: Enable/disable ShellTime tracking (default: true)
shelltime.socketPath: Path to the ShellTime daemon socket (default: /tmp/shelltime.sock)
shelltime.heartbeatInterval: Interval in milliseconds between heartbeat flushes (default: 120000)
shelltime.debug: Enable debug logging in the console (default: false)
Commands
ShellTime: Show Status - Display daemon connection status and version info
ShellTime: Flush Heartbeats - Manually flush pending heartbeats to the daemon
How It Works
The extension monitors your VS Code activity and sends heartbeats to a local daemon:
- Event Monitoring - Tracks file opens, edits, saves, and cursor movements
- Debouncing - Batches events to reduce overhead (max 1 heartbeat per file per 30 seconds)
- Periodic Flush - Sends collected heartbeats to the daemon every 2 minutes
- Offline Support - Queues heartbeats when daemon is unavailable
Status Bar
The extension shows its status in the VS Code status bar:
$(pulse) ShellTime - Connected and tracking
$(debug-disconnect) ShellTime - Daemon not running (heartbeats queued)
Click the status bar item to view daemon status.
Privacy
The extension communicates only with the local ShellTime daemon via Unix socket. The daemon syncs your coding activity to the ShellTime server for analytics and cross-device access.
License
See LICENSE for details.