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

codex-wakatime

v1.1.0

Published

WakaTime plugin for OpenAI Codex CLI - Track AI coding activity and time spent

Downloads

277

Readme

codex-wakatime

npm version npm downloads CI License: MIT

WakaTime integration for OpenAI Codex CLI. Track AI coding activity and time spent.

[!TIP] Also check out opencode-wakatime for OpenCode!

Features

  • Automatic time tracking for Codex CLI sessions
  • File-level activity detection via message parsing
  • 60-second heartbeat rate limiting
  • Automatic WakaTime CLI installation and updates
  • Cross-platform support (macOS, Linux, Windows)

Prerequisites

  1. WakaTime account and API key
  2. WakaTime API key configured in ~/.wakatime.cfg:
    [settings]
    api_key = your-api-key-here
  3. Codex CLI installed

Installation

# Install the package
npm install -g codex-wakatime

# Configure the notification hook
codex-wakatime --install

This adds notify = ["codex-wakatime"] to your ~/.codex/config.toml.

How It Works

┌─────────────────────────────────────────────────────────────┐
│                     Codex CLI Session                        │
└─────────────────────────┬───────────────────────────────────┘
                          │
                          ▼
┌─────────────────────────────────────────────────────────────┐
│              agent-turn-complete event                       │
│   Codex sends notification with:                             │
│   - thread-id, turn-id                                       │
│   - cwd (working directory)                                  │
│   - last-assistant-message                                   │
└─────────────────────────┬───────────────────────────────────┘
                          │
                          ▼
┌─────────────────────────────────────────────────────────────┐
│                   codex-wakatime                             │
│   1. Parse notification JSON from CLI argument               │
│   2. Extract file paths from assistant message               │
│   3. Check 60-second rate limit                              │
│   4. Send heartbeat(s) to WakaTime                           │
└─────────────────────────┬───────────────────────────────────┘
                          │
                          ▼
┌─────────────────────────────────────────────────────────────┐
│                   WakaTime Dashboard                         │
│   View your AI coding metrics at wakatime.com                │
└─────────────────────────────────────────────────────────────┘

Notification Hook

| Event | Purpose | |-------|---------| | agent-turn-complete | Triggered after each Codex turn completes |

File Detection Patterns

The plugin extracts file paths from the assistant's response using these patterns:

  • Code block headers: ```typescript:src/index.ts
  • Backtick paths: `src/file.ts`
  • Action patterns: Created src/file.ts, Modified package.json
  • Quoted paths: "src/file.ts" or 'src/file.ts'

If no files are detected, a project-level heartbeat is sent using the working directory.

Configuration

The plugin auto-configures ~/.codex/config.toml on installation:

notify = ["codex-wakatime"]

Debug Mode

Enable debug logging by adding to ~/.wakatime.cfg:

[settings]
debug = true

Logs are written to ~/.wakatime/codex.log.

Files & Locations

| File | Purpose | |------|---------| | ~/.wakatime/codex.json | Rate limiting state | | ~/.wakatime/codex.log | Debug logs | | ~/.wakatime/codex-cli-state.json | CLI version tracking | | ~/.codex/config.toml | Codex configuration | | ~/.wakatime.cfg | WakaTime API key and settings |

Development

# Clone the repository
git clone https://github.com/angristan/codex-wakatime
cd codex-wakatime

# Install dependencies
npm install

# Build
npm run build

# Run tests
npm test

# Type check
npm run typecheck

# Lint
npm run check

Project Structure

codex-wakatime/
├── src/
│   ├── index.ts          # Main entry point
│   ├── install.ts        # Hook installation
│   ├── extractor.ts      # File path extraction
│   ├── wakatime.ts       # CLI invocation
│   ├── dependencies.ts   # CLI management
│   ├── state.ts          # Rate limiting
│   ├── logger.ts         # Logging
│   ├── options.ts        # Config parsing
│   ├── types.ts          # TypeScript interfaces
│   └── __tests__/        # Test files
├── package.json
├── tsconfig.json
└── biome.json

Uninstall

# Remove the notification hook
codex-wakatime --uninstall

# Uninstall the package
npm uninstall -g codex-wakatime

Commands

| Command | Description | |---------|-------------| | codex-wakatime --install | Add notification hook to Codex config | | codex-wakatime --uninstall | Remove notification hook from Codex config | | codex-wakatime '{"type":"agent-turn-complete",...}' | Process a notification (called by Codex) |

Troubleshooting

No heartbeats being sent

  1. Check that your API key is configured in ~/.wakatime.cfg
  2. Verify the notify hook is set in ~/.codex/config.toml
  3. Enable debug mode and check ~/.wakatime/codex.log

Rate limiting

Heartbeats are rate-limited to once per 60 seconds. If you're testing, wait at least 60 seconds between Codex turns.

CLI not found

The plugin automatically downloads wakatime-cli if not found. If this fails:

  1. Check your internet connection
  2. Manually install: https://github.com/wakatime/wakatime-cli/releases
  3. Ensure wakatime-cli is in your PATH

License

MIT