Configurable, unobtrusive sound cues for key lifecycle moments. No audio files β every bell is synthesized in real time with the Web Audio API, with custom sounds managed from Plugin configuration.
A small, focused plugin for high-value cues that you can tune to your own workflow.
Agent start, waiting for input, and turn complete are enabled first. Process-level events stay opt-in, so signals communicate progress instead of becoming noise.
Use Plugin configuration to preview, upload your own audio file, or reset to default. Replacements persist across reloads without taking space in the workspace.
All bells are synthesized on the fly β zero audio assets, a negligible footprint, and fully offline. Replace an event with your own audio when you need a different sound.
This preview uses the current built-in recipes and Web Audio rendering approach, with no audio files. Preview volume is 0.7, the default masterVolume.
From a DeepSeek Harness source checkout:
pnpm dsh plugin --profile bell add dsh-bell-notify
If dsh is already on your PATH:
dsh plugin --profile bell add dsh-bell-notify
Start it:
pnpm dsh --profile bell
Open the page, click anywhere once (browser autoplay policy unlocks audio), then run any task to hear notification sounds.
Remove it:
pnpm dsh plugin --profile bell remove dsh-bell-notify
Each event has a built-in bell and an independent toggle. New installs enable only the three cues that need your attention or mark a milestone; preview all ten configurable built-in recipes above.
| Event | Default bell | Initial state | Feels like |
|---|---|---|---|
| Session start | startup | Off | A soft upward sweep, like powering on |
| Agent start | click | On | A short "ding", we're off |
| Thinking | notify | Off | A gentle single note, settling in |
| Tool call | tick | Off | A crisp metallic "ta-ta" |
| Tool done | drop | Off | A low settle, wrapping up |
| Command run | beep | Off | A short beep, terminal-flavored |
| Command done | rise | Off | A rising two-note "done" |
| Waiting for input | alert | On | A high triple-chirp, look here |
| Turn complete | success | On | A rising major chord, satisfying |
| Back to idle | confirm | Off | A single note drifting down, quiet again |
All visible controls live in Settings β Plugins β Plugin configuration β Bell notifications. Enable notification sounds is the only global switch, and turning it off mutes everything; there is no corner status dot or floating settings panel. These are the profile's regular runtime parameters:
| Option | Default | Description |
|---|---|---|
maxQueue | 8 | Wait-queue capacity |
maxConcurrent | 3 | Simultaneous sounds (1 = serial) |
defaultCooldown | 1000 | Global cooldown fallback (ms) |
Enablement and volume are durable profile settings. Per-event toggles, custom sounds, and file names stay browser-local (localStorage + IndexedDB) and survive reloads.
The card shows the running version. Update is enabled only for confirmed npm profile dependencies; link: / file: installs display as development versions and keep Update disabled.
No. It's a community plugin for DeepSeek Harness (dsh), MIT-licensed, not part of the official distribution.
Most likely the browser autoplay policy β after the plugin loads you need to click the page once to unlock audio.
Open Settings β Plugins β Plugin configuration β Bell notifications. It manages enablement, volume, event toggles, custom sounds, and updates for npm-installed versions.
They were removed to keep the conversation workspace unobstructed. Enablement, volume, event toggles, version, and updates are all consolidated in the plugin configuration card.
Bytes in browser IndexedDB, event-to-file mapping in localStorage. All local β nothing is uploaded anywhere.