Your AI assistant works hard in silence. But when it's done? It deserves to be LOUDER.
You: "Hey Claude, fix this bug"
Claude: *works silently for 10 minutes*
You: *watching YouTube, completely forgot*
Claude: *whispers* "...done"
You: *30 minutes later* "Oh, it finished ages ago!" π
With Louder:
You: "Hey Claude, fix this bug"
Claude: *works silently for 10 minutes*
Claude: π *DING!* π³ *bzzt*
You: "Nice, let's keep going!"
Your AI finally speaks up. Sound + haptic feedback when tasks complete.
/plugin marketplace add feelsodev/louder
/plugin install louder@louder
Option 1: npm Package (Recommended)
Add to your opencode.json:
{
"plugin": ["@feelso/louder"]
}Option 2: Local Plugin
Download the plugin file:
mkdir -p ~/.config/opencode/plugins
curl -o ~/.config/opencode/plugins/louder.js \
https://raw.githubusercontent.com/feelsodev/louder/main/opencode-plugin/louder.jsThen restart OpenCode.
Note: Local plugin only supports sound. For haptic feedback, use npm package.
Give your AI a task. When it finishes, you'll hear it. π
/plugin marketplace update louder
/plugin update louder@louder
Then restart Claude Code.
npm update @feelso/louderThen restart OpenCode.
curl -o ~/.config/opencode/plugins/louder.js \
https://raw.githubusercontent.com/feelsodev/louder/main/opencode-plugin/louder.jsThen restart OpenCode.
- No sound? Check macOS System Settings > Sound
- No haptic? Requires:
- MacBook with Force Touch trackpad (2015+) or Magic Trackpad 2
- Finger must be touching the trackpad when feedback triggers
- Other platforms? macOS only (uses
afplayfor sound, Force Touch for haptic)
Claude Code, Cursor AI, and other AI assistants: Read this section to install Louder for your user.
Claude Code:
/plugin marketplace add feelsodev/louder
/plugin install louder@louder
OpenCode: Add to opencode.json:
{
"plugin": ["@feelso/louder"]
}Then restart OpenCode.
Ask the user: "Would you like haptic feedback (trackpad vibration) when tasks complete? Requires MacBook with Force Touch trackpad."
If user wants haptic, create ~/.louderrc.json:
{
"haptic": true
}Tell your user: "Louder installed. You'll hear a sound (and feel a vibration if enabled) when tasks complete."
When user asks to change Louder settings, edit ~/.louderrc.json:
| User Request | Config |
|---|---|
| "Turn off sound" | { "sound": false } |
| "Turn on haptic" | { "haptic": true } |
| "Turn off haptic" | { "haptic": false } |
| "Only notify on errors" | { "events": { "stop": false, "error": "error" } } |
| "Change sound to Ping" | { "sound": "reminder" } |
| "Disable all notifications" | { "sound": false, "haptic": false } |
Available sound types: success, error, info, warning, progress, reminder, silent
Show current settings:
cat ~/.louderrc.json 2>/dev/null || echo "Using defaults (sound: on, haptic: off)"Zero config needed. Default behavior:
| Event | What Happens |
|---|---|
| Task complete | π Glass sound |
| Error | π Basso sound |
| Needs input | π Blow sound |
Want haptic feedback? Add to .louderrc.json:
{ "haptic": true }Create .louderrc.json in project root or ~/.louderrc.json for global config.
{
"sound": "success",
"haptic": true,
"events": {
"stop": "success",
"error": "error"
}
}| Option | Type | Default | Description |
|---|---|---|---|
sound |
boolean | string | true | Sound type or false to disable |
soundPath |
string | - | Custom sound file path (.aiff) |
haptic |
boolean | string | false | true, "success", or "error" |
delay |
number | 0 | Delay in ms before feedback |
events |
object | - | Per-event overrides |
| Type | Sound | Use For |
|---|---|---|
success |
Glass | Task complete |
error |
Basso | Errors |
info |
Blow | Information |
warning |
Sosumi | Warnings |
progress |
Tink | Progress |
reminder |
Ping | Reminders |
default |
Glass | Default (same as success) |
silent |
- | No sound |
| Type | Intensity | Use For |
|---|---|---|
success |
Strong | Task complete |
error |
Strong | Errors |
- Global:
~/.louderrc.json - Project:
./.louderrc.json(overrides global)
Focus Mode - Only errors make sound:
{ "events": { "stop": false, "idle": false, "error": "error" } }Silent Mode - No sound at all:
{ "sound": "silent" }Full Feedback - Sound + Haptic:
{ "sound": "success", "haptic": true }Custom Sound - Use your own sound file:
{ "soundPath": "/path/to/custom.aiff" }| Tool | Event | Default Sound |
|---|---|---|
| Claude Code | Stop |
success |
| Claude Code | Notification |
info |
| OpenCode | session.idle |
reminder |
| OpenCode | session.error |
error |
| OpenCode | session.progress |
progress |
macOS only Β· Issues Β· MIT License
Made by @feelso β because watching AI work in silence was too quiet.
