WakaTime plugin for OpenCode - Track your AI coding activity, lines of code, and time spent.
Inspired by claude-code-wakatime.
- Automatic CLI management - Downloads and updates wakatime-cli automatically
- Detailed file tracking - Tracks additions/deletions from edit, write, patch, and multiedit tools
- AI coding metrics - Sends
--ai-line-changesfor WakaTime AI coding analytics - Rate-limited heartbeats - 1 per minute to avoid API spam
- Session lifecycle - Sends final heartbeat on session idle/end
Ensure you have a WakaTime API key configured in ~/.wakatime.cfg:
[settings]
api_key = waka_your_api_key_hereYou can get your API key from WakaTime Settings.
The plugin will automatically download wakatime-cli if not found. However, you can also install it manually:
macOS:
brew install wakatime-cliOther platforms: Download from WakaTime releases.
Clone, build, and symlink the plugin:
# Clone and build
git clone https://github.com/angristan/opencode-wakatime
cd opencode-wakatime
npm install && npm run build
# Symlink to global plugin directory
mkdir -p ~/.config/opencode/plugin
ln -s "$(pwd)/dist/index.js" ~/.config/opencode/plugin/wakatime.jsThe plugin will be automatically loaded by OpenCode - no configuration needed.
The plugin hooks into OpenCode's event system:
| Hook | Purpose |
|---|---|
tool.execute.after |
Tracks file modifications from tools |
chat.message |
Triggers heartbeat processing on activity |
event |
Listens for session lifecycle events |
| Tool | Data Extracted |
|---|---|
edit |
File path, additions, deletions (from filediff) |
write |
File path, new file detection |
patch |
File paths from output, diff count |
multiedit |
File paths and changes from each edit result |
Each heartbeat includes:
- Entity: File path being worked on
- Project folder: Working directory
- AI line changes: Net lines added/removed (
additions - deletions) - Category: "ai coding"
- Plugin identifier:
opencode/1.0.0 opencode-wakatime/1.0.0
| File | Purpose |
|---|---|
~/.wakatime/opencode.log |
Debug logs |
~/.wakatime/opencode.json |
State (last heartbeat timestamp) |
~/.wakatime/opencode-cli-state.json |
CLI version tracking |
~/.wakatime/wakatime-cli-* |
Auto-downloaded CLI binary |
# Install dependencies
npm install
# Type check
npm run typecheck
# Build
npm run build- Check your config file syntax (
opencode.jsonc) - Verify the plugin path is correct
- Check logs at
~/.wakatime/opencode.log
- Verify API key in
~/.wakatime.cfg - Check if wakatime-cli is working:
wakatime-cli --version - Enable debug logging and check
~/.wakatime/opencode.log
- Check network connectivity
- Verify write permissions to
~/.wakatime/ - Manually install:
brew install wakatime-cli
MIT