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

opencode-cachebell

v0.6.0

Published

Native sound and desktop reminders before an OpenCode prompt cache window ends

Readme

CacheBell

Get a reminder before your OpenCode prompt cache expires. Continuing the conversation while the cache is available means paying less for repeated input.

CacheBell plays a short sound and shows a desktop notification about two minutes beforehand, while the agent is idle.

Install

For OpenCode 2, add to plugins in ~/.config/opencode/opencode.json, keeping your other entries:

{
  "plugins": ["[email protected]"]
}

Restart OpenCode. It installs the package automatically. On OpenCode 1, use "plugin" instead of "plugins".

Works with OpenCode 1 and OpenCode 2 from the same package. Supports macOS and WSL, with best-effort native Windows and Linux desktop support.

Sounds

Nine sounds are included:

| Sound | Style | | --- | --- | | Pulse (default) | Short, rising electronic signal | | Chime | Two warm bell notes | | Knock | Soft, woody double-tap | | Sheep Field | Quiet, 2.5-second field bleat | | Sheep Close | Quiet, 1.36-second close-up bleat | | Cat Meow | Short, soft meow | | Rooster Crow | Short farmyard crow | | Horse Neigh | Soft, short whinny | | Cow Moo | Soft, short moo |

To choose a sound, replace the plugin entry with:

{
  "plugins": [{ "package": "[email protected]", "options": { "sound": "sheep-close" } }]
}

Use "pulse", "chime", "knock", "sheep-field", "sheep-close", "cat-meow", "rooster-crow", "horse-neigh", "cow-moo", or false for silence. "sheep" remains an alias for "sheep-field". Restart after changes.

On OpenCode 1, use the tuple form: "plugin": [["[email protected]", { "sound": "sheep-close" }]].

Sheep Field is an excerpt of a public-domain recording by earthcalling. Sheep Close is a CC0 recording by TheKingOfGeeks360, converted from its publicly available high-quality MP3 preview. Both are mono PCM WAVs for desktop playback. Cat Meow is an excerpt of a public-domain recording by Heismark. Rooster Crow is an excerpt of a public-domain recording by alys. Horse Neigh comes from a CC0 recording by Joseph Sardin. Cow Moo is excerpted from a CC0 recording by Joseph Sardin.

Timing

Defaults: 5 minutes for Claude, 30 minutes for GPT-5.6+. The clock starts with the model request, not when its answer finishes. Other models and custom cache durations need an override. These are estimates, not guaranteed cache hits.

Open sessions

On OpenCode 2, reminders now default to open session tabs only. Switching to another tab keeps the reminder; closing the tab or terminal stops it. With tabs disabled, only the currently viewed session is eligible. The persistent server does not play sounds on its own. The included TUI component loads automatically.

Set "sessionScope": "all" in the plugin's options to retain server-side reminders for all tracked sessions, even after closing their tabs or clients. The default is "sessionScope": "open". This setting applies to OpenCode 2; OpenCode 1 retains its existing process-bound behavior.

Configuration and troubleshooting | npm | MIT