Track Opencode usage with Wakatime
WakaTime plugin for OpenCode - Track your AI coding activity, lines of code, and time spent.
Inspired by claude-code-wakatime.
[!TIP] Also check out codex-wakatime for OpenAI Codex CLI!
--ai-line-changes for WakaTime AI coding analyticsEnsure you have a WakaTime API key configured in ~/.wakatime.cfg
(or $WAKATIME_HOME/.wakatime.cfg when WAKATIME_HOME is set):
[settings]
api_key = waka_your_api_key_hereYou can get your API key from WakaTime Settings.
In case of manual install, the plugin will automatically download wakatime-cli if not found. However, you can also install it yourself:
macOS:
brew install wakatime-cliOther platforms: Download from WakaTime releases.
opencode.json:
{
"$schema": "https://opencode.ai/config.json",
"plugin": ["opencode-wakatime"]
}npm i -g opencode-wakatime
opencode-wakatime --installThis installs the plugin to ~/.config/opencode/plugin/wakatime.js.
To update, run the same commands again.
git clone https://github.com/angristan/opencode-wakatime
cd opencode-wakatime
npm install && npm run build
node bin/cli.js --installThe plugin will be automatically loaded by OpenCode - no configuration needed.
The plugin hooks into OpenCode's event system:
…| Hook | Purpose |
|---|---|
event |
Tracks tool completions via message.part.updated and session lifecycle |
chat.message |
Triggers heartbeat processing on activity |
| Tool | Data Extracted |
|---|---|
read |
File path (from title) |
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 |
batch |
Tracks all child tool operations |
Each heartbeat includes:
additions - deletions)opencode-/ opencode-wakatime/ (e.g. opencode-desktop/1.1.53 opencode-wakatime/1.1.4)By default, plugin files are stored in ~/.wakatime/.
When WAKATIME_HOME is set, the same files are stored in $WAKATIME_HOME/.
| File | Purpose |
|---|---|
opencode.log |
Debug logs (enabled via debug=true in ~/.wakatime.cfg) |
opencode-{hash}.json |
Per-project state (last heartbeat timestamp) |
opencode-cli-state.json |
CLI version tracking |
opencode-version-cache.json |
Cached OpenCode server version |
wakatime-cli-* |
Auto-downloaded CLI binary |
# Install dependencies
npm install
# Type check
npm run typecheck
# Build
npm run buildopencode.jsonc)~/.wakatime/opencode.log~/.wakatime.cfgwakatime-cli --version~/.wakatime/opencode.log
(or $WAKATIME_HOME/opencode.log when set)~/.wakatime/
(or $WAKATIME_HOME/ when set)brew install wakatime-cliMIT
No open issues yet, or sync has not completed.