opencode-bellOpenCode plugin: privacy-friendly terminal bell notifications
2
104
21 in 7 days
33.6
Multi-signal model
1 month ago
2026-06-26
Install and configure
opencode.jsonWrites to this project's opencode.json — applies to this repository only.
opencode.json
{
"$schema": "https://opencode.ai/config.json",
"plugin": ["opencode-bell@0.3.0"]
}Writes to ~/.config/opencode/opencode.json — applies to every project.
~/.config/opencode/opencode.json
{
"$schema": "https://opencode.ai/config.json",
"plugin": ["opencode-bell@0.3.0"]
}If you want to modify the plugin locally, install it into the project and reference the local path.
shell
pnpm add -D opencode-bellopencode loads npm dependencies through its embedded runtime on startup and caches them locally — no manual global install needed.
Never miss an OpenCode prompt again.
- Zero dependencies — single-file plugin
- Privacy-friendly — no message content, no external commands, no network calls
- Configurable — choose which events trigger the bell
- Smart debounce — avoids bell spam for the same event type per session
Install
npm (recommended)
Add the plugin to ~/.config/opencode/opencode.json:
{
"$schema": "https://opencode.ai/config.json",
"plugin": ["opencode-bell@0.3.0"]
}
Restart OpenCode. It will auto-install the package and cache it under ~/.cache/opencode/node_modules/.
Local file
Copy index.js into ~/.config/opencode/plugins/ and restart OpenCode.
Configuration
Two environment variables control behavior:
| Variable | Default | Description |
|---|---|---|
OPENCODE_BELL_EVENTS |
permission.asked,question.asked,session.idle,session.error |
Comma-separated list of events that trigger the bell |
OPENCODE_BELL_OUTPUTS |
bell |
Comma-separated output methods: bell and/or osc |
OPENCODE_BELL_DEBOUNCE |
1200 |
Minimum ms between repeated bells for the same event type and session. Must be >= 1; 0 or negative falls back to default |
Example — bell only on permission requests, with a 5-second debounce:
export OPENCODE_BELL_EVENTS="permission.asked"
export OPENCODE_BELL_DEBOUNCE="5000"
Example — terminal notification plus bell, similar to Claude Code's iterm2_with_bell style:
export OPENCODE_BELL_OUTPUTS="bell,osc"
Supported Events
| Event | Fires when |
|---|---|
permission.asked |
OpenCode needs approval to run a tool |
question.asked |
OpenCode asks the user a question |
session.idle |
A session completes and is waiting for input |
session.error |
A session encounters an error |
How it works
The plugin writes the BEL character (\x07) to stdout by default. Your terminal emulator interprets it — typically as an audio beep, a visual flash, or a dock badge, depending on your terminal settings.
When OPENCODE_BELL_OUTPUTS includes osc, the plugin also writes an OSC 9 terminal notification escape sequence. Terminals that support OSC 9 can turn it into a native-looking notification; unsupported terminals usually ignore it.
Troubleshooting
No sound or flash? Check your terminal bell settings:
- Terminal.app: Settings -> Profiles -> Bell
Uninstall
- Remove
opencode-bellfromopencode.jsonand restart OpenCode. - If you used the local-file method, delete
~/.config/opencode/plugins/index.js(or whichever filename you used).
License
MIT