npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@ambiguoustr/openclaw-wakatime

v0.9.10

Published

Official-style OpenClaw plugin for tracking activity in WakaTime

Readme

openclaw-wakatime

TypeScript-native WakaTime plugin for OpenClaw.

Published npm package: @ambiguoustr/openclaw-wakatime

This plugin tracks OpenClaw runtime activity and sends heartbeats through the official wakatime CLI:

  • message_received / message_sent
  • command:* (via internal hook registration)
  • after_tool_call (read/edit/write use file entities from tool params such as path/file_path; file language is auto-detected by wakatime-cli)
  • session_start / session_end

Runtime files are written under ~/.openclaw/wakatime/:

  • plugin.log
  • queue.jsonl
  • sessions.jsonl

Requirements

  • OpenClaw >= 2026.3.x
  • WakaTime CLI installed and authenticated (~/.wakatime.cfg or WAKATIME_API_KEY)
  • Command examples use POSIX shell syntax; on Windows use equivalent PowerShell/CMD commands.

Authentication

The plugin does not store or manage your WakaTime API key directly. It only invokes the official wakatime CLI.

Key resolution is handled by WakaTime CLI:

  • Recommended: ~/.wakatime.cfg with api_key = waka_...
  • Alternative: environment variable WAKATIME_API_KEY

Prefer ~/.wakatime.cfg for reliability, because shell environment variables are not always inherited by the OpenClaw gateway process.

Fresh Start (new machine)

  1. Install and authenticate WakaTime CLI.
  2. Confirm key is available (for example with ~/.wakatime.cfg).
  3. Install/enable this plugin.
  4. Restart gateway (openclaw gateway restart).
  5. Trigger one real message/tool call and verify heartbeats.

Missing/invalid key behavior

  • Plugin still loads in OpenClaw.
  • Heartbeat sending fails until credentials are fixed.
  • Failed heartbeats are queued in ~/.openclaw/wakatime/queue.jsonl.
  • After fixing credentials, queued heartbeats are retried automatically.

Install (local path)

cd ~/.openclaw/plugins/openclaw-wakatime
node setup_wakatime.mjs

The setup script updates ~/.openclaw/openclaw.json:

  • plugins.load.paths includes this directory
  • plugins.entries.openclaw-wakatime.enabled = true

Then it restarts gateway by default and prints plugin status.

Install (npm)

openclaw plugins install @ambiguoustr/openclaw-wakatime --pin
openclaw plugins info openclaw-wakatime

Configure

Plugin config lives at:

plugins.entries.openclaw-wakatime.config

Example:

{
  "plugins": {
    "entries": {
      "openclaw-wakatime": {
        "enabled": true,
        "config": {
          "enabled": true,
          "project": "agent-vibe-coding",
          "category": "ai coding",
          "useContextProject": false,
          "heartbeatIntervalSeconds": 120,
          "queueRetryBatchSize": 50,
          "queueFlushIntervalSeconds": 60,
          "trackMessages": true,
          "trackCommands": true,
          "trackTools": true,
          "trackSessions": true
        }
      }
    }
  }
}

After config edits, restart gateway.

Verify

openclaw plugins info openclaw-wakatime
openclaw plugins list

Then send a real channel message or command and check:

tail -f ~/.openclaw/wakatime/plugin.log

Packaging Notes

This repository follows the OpenClaw plugin spec:

  • openclaw.plugin.json manifest (required)
  • TypeScript plugin entrypoint (index.ts)
  • package metadata with openclaw.extensions

Release and community submission runbook:

  • RELEASE.md
  • COMMUNITY_SUBMISSION.md

Migration From Legacy Version

0.9.9 is a full TS rewrite.

Removed runtime paths:

  • Python tracker modules (wakatime_openclaw.py, wakatime_hooks.py, wakatime_wrapper.py)
  • legacy hooks/wakatime-im bridge
  • legacy zsh preexec hook integration

If you previously used those paths, switch to plugin config under plugins.entries.openclaw-wakatime.