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
Prerequisites
1. Install ShellTime CLI
curl -sSL https://shelltime.xyz/i | bash
After installation, reload your shell configuration:
- zsh:
source ~/.zshrc
- fish:
source ~/.config/fish/config.fish
- bash:
source ~/.bashrc
2. Initialize and Authenticate
shelltime init
This will:
- Open your browser to authenticate with your ShellTime account
- Install shell hooks for your shell (zsh/fish/bash)
- Start the ShellTime daemon
3. Enable Code Tracking
Add the following to your ShellTime config (~/.shelltime/config.yaml):
codeTracking:
enabled: true
Or in TOML format (~/.shelltime/config.toml):
[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.