Sound and haptic feedback when AI tasks complete. Your AI learned to shout.
npm install @feelso/louder




Your AI learned to shout.
For Humans ยท For LLMs ยท Configuration
---
> 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.
---
#### Claude Code
``
/plugin marketplace add feelsodev/louder
/plugin install louder@louder
#### OpenCode
Option 1: npm Package (Recommended)
Add to your opencode.json:
`json`
{
"plugin": ["@feelso/louder"]
}
Option 2: Local Plugin
Download the plugin file:
`bash`
mkdir -p ~/.config/opencode/plugins
curl -o ~/.config/opencode/plugins/louder.js \
https://raw.githubusercontent.com/feelsodev/louder/main/opencode-plugin/louder.js
Then 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. ๐
#### Claude Code
``
/plugin marketplace update louder
/plugin update louder@louder
Then restart Claude Code.
#### OpenCode (npm)
`bash`
npm update @feelso/louder
Then restart OpenCode.
#### OpenCode (Local Plugin)
`bash`
curl -o ~/.config/opencode/plugins/louder.js \
https://raw.githubusercontent.com/feelsodev/louder/main/opencode-plugin/louder.js
Then 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 afplay for 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:
`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:
`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 } |{ "haptic": true }
| "Turn on haptic" | |{ "haptic": false }
| "Turn off haptic" | |{ "events": { "stop": false, "error": "error" } }
| "Only notify on errors" | |{ "sound": "reminder" }
| "Change sound to Ping" | |{ "sound": false, "haptic": false }
| "Disable all notifications" | |
Available sound types: success, error, info, warning, progress, reminder, silent
Show current settings:
`bash`
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:
`json`
{ "haptic": true }
---
Create .louderrc.json in project root or ~/.louderrc.json for global config.
`json`
{
"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./.louderrc.json
- Project: (overrides global)
---
Focus Mode - Only errors make sound:
`json`
{ "events": { "stop": false, "idle": false, "error": "error" } }
Silent Mode - No sound at all:
`json`
{ "sound": "silent" }
Full Feedback - Sound + Haptic:
`json`
{ "sound": "success", "haptic": true }
Custom Sound - Use your own sound file:
`json`
{ "soundPath": "/path/to/custom.aiff" }
---
| Tool | Event | Default Sound |
|------|-------|---------------|
| Claude Code | Stop | success |Notification
| Claude Code | | info |session.idle
| OpenCode | | reminder |session.error
| OpenCode | | error |session.progress` | progress |
| OpenCode |
---
macOS only ยท Issues ยท MIT License
Made by @feelso โ because watching AI work in silence was too quiet.