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

whipcode

v1.0.2

Published

Motivate your AI to work faster — physics-based tools that send commands to your terminal

Downloads

36

Readme

whipcode

npm version GitHub

Motivate your AI to work faster.

A system tray app with physics-based tools that send motivational commands to your terminal. Click the tray icon to summon a tool, use it on your terminal's input zone, and watch it speed up.

Install

npm install -g whipcode

Usage

whipcode

A whip icon appears in your system tray.

  • Left-click the tray icon to activate the current tool
  • Right-click to switch between tools or quit
  • Left-click again while active to drop the tool and dismiss

Tools

Whip

Classic physics-based whip. Swing your mouse to crack it on the terminal input zone.

Whip

  • Verlet integration with 28 rope segments
  • Cracks when the tip hits the zone with enough velocity
  • Phrases: "FASTER", "GO FASTER", "Speed it up clanker"

Lightning

Charge energy by moving your mouse fast. Auto-strikes when fully charged.

Lightning

  • Charge bar fills up with mouse speed
  • Zigzag bolt with forks and spark particles on impact
  • Phrases: "POWER UP", "SUPERCHARGE", "MAXIMUM POWER"

Coffee

Bring the cup down toward the terminal to pour coffee.

Coffee

  • Cup auto-tilts and pours as it approaches the zone
  • Particle physics for coffee droplets with splash effects
  • Phrases: "FUEL UP", "ESPRESSO SHOT", "CAFFEINE BOOST"

How it works

  1. The overlay appears as a transparent, non-focusable window — your terminal stays focused
  2. Mouse movement drives the tool's physics
  3. When the tool hits the target zone, it sends Ctrl+C + a motivational phrase + Enter to your terminal
  4. The overlay stays active until you dismiss it (click tray again)

macOS note

The app needs Accessibility permissions to send keystrokes. It will prompt you on first launch.

System Settings > Privacy & Security > Accessibility

Adding custom tools

Each tool lives in its own folder under tools/:

tools/
  whip/
    config.json    # Name, phrases, sound files
    renderer.js    # Canvas animation + physics
    sounds/        # Audio files

Create a new folder with those files and it automatically appears in the tray menu.

config.json format

{
  "name": "Tool Name",
  "description": "What this tool does",
  "phrases": ["PHRASE 1", "PHRASE 2"],
  "sounds": ["sound-1.wav"]
}

renderer.js interface

Your renderer must export:

window.WhipTool = { init, spawnWhip, dropWhip, stop };
  • init(canvas, soundFiles) — set up canvas, load sounds
  • spawnWhip() — activate the tool
  • dropWhip() — start the dismiss animation
  • stop() — clean up everything

Use window.bridge.toolCrack() to send the command and window.bridge.hideOverlay() when the drop animation finishes.

Development

git clone https://github.com/Hovakimyan/whipcode.git
cd whipcode
npm install
npm start

License

MIT