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-sound-alert

v1.0.0

Published

OpenCode plugin that plays pleasant Windows notification sounds when the AI is waiting for your input

Downloads

19

Readme

🔔 opencode-sound-alert

An OpenCode plugin that plays pleasant Windows notification sounds whenever the AI is waiting for your input — so you can stay focused on other things and come back when it's your turn.

npm version License: MIT Platform: Windows


Why

When OpenCode is running a long task, it's easy to miss the moment it finishes and needs your attention. This plugin listens to OpenCode's event bus and plays a soft notification sound — similar to GitHub Copilot's tone — so you always know when to look back at the terminal.

Sounds

Uses native Windows WAV files via System.Media.SoundPlayer. No third-party dependencies.

| Event | Sound file | When it plays | |---------------------|-------------------------------------|----------------------------------------------------| | session.idle | Windows Notify System Generic.wav | AI finished a task or asked a question | | permission.asked | Windows Notify Messaging.wav | AI needs your approval to run an action | | session.error | Windows Notify.wav | Something went wrong in the session |

Falls back to a dual-tone [console]::beep (ding-dong) if WAV playback is unavailable.


Requirements

  • OpenCode >= 1.4
  • Windows 10 or 11
  • PowerShell (built-in on Windows)
  • Bun >= 1.0 (OpenCode's runtime)

Installation

Option 1 — Manual (recommended for now)

Copy src/index.ts into your OpenCode global plugins directory:

# Run this in the repository root
Copy-Item src\index.ts "$env:USERPROFILE\.config\opencode\plugins\opencode-sound-alert.ts"

Restart OpenCode. That's it — plugins in ~/.config/opencode/plugins/ are loaded automatically.

Option 2 — npm / bun (once published)

bun add -g opencode-sound-alert
# or
npm install -g opencode-sound-alert

Then add it to your ~/.config/opencode/opencode.json:

{
  "plugin": ["opencode-sound-alert"]
}

Verifying the Installation

Inside OpenCode, run:

/status

You should see opencode-sound-alert listed under active plugins.


Customizing Sounds

Edit the WAV_FILE_MAP in src/index.ts:

const WAV_FILE_MAP: Record<SoundType, string> = {
  idle:       "Windows Notify System Generic.wav",
  permission: "Windows Notify Messaging.wav",
  error:      "Windows Notify.wav",
};

Any .wav file in %WINDIR%\Media\ works. Popular options:

| File | Character | |------|-----------| | Windows Notify System Generic.wav | Soft ding-dong (default idle) | | Windows Notify Messaging.wav | Friendly ping | | Windows Notify Calendar.wav | Clean reminder tone | | chimes.wav | Classic chimes | | tada.wav | Upbeat celebration |


Testing Sounds Without Restarting OpenCode

$play = { param($f) (New-Object Media.SoundPlayer "$env:WINDIR\Media\$f").PlaySync() }
& $play "Windows Notify System Generic.wav"
Start-Sleep -Milliseconds 600
& $play "Windows Notify Messaging.wav"
Start-Sleep -Milliseconds 600
& $play "Windows Notify.wav"

Contributing

Contributions are welcome! See CONTRIBUTING.md for guidelines.

Particularly interested in:

  • 🍎 macOS support via afplay
  • 🐧 Linux support via paplay / aplay
  • 🔊 Custom sound files bundled with the package

Changelog

See CHANGELOG.md.


License

MIT