Skip to content

Latest commit

Β 

History

74 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Louder

louder

npm version License: MIT macOS only Node.js

Your AI learned to shout.

For Humans Β· For LLMs Β· Configuration


πŸ€” Why "Louder"?

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.


πŸ‘€ For Humans

Installation

Claude Code

/plugin marketplace add feelsodev/louder
/plugin install louder@louder

OpenCode

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.js

Then restart OpenCode.

Note: Local plugin only supports sound. For haptic feedback, use npm package.

Pi

Install Louder as a Pi package:

pi install npm:@feelso/louder

Restart Pi, or run /reload if Pi is already open.

Gajae Code (GJC)

Install Louder through GJC's npm plugin flow:

gjc plugin install @feelso/louder

Restart GJC after installation.

OMO / Senpi

Install Louder with OMO's package installer:

omo install npm:@feelso/louder

Restart OMO after installation.

OpenAI Codex

Install the command globally:

npm install -g @feelso/louder

Add the following to ~/.codex/config.toml:

notify = ["louder-codex"]

Restart Codex after saving the configuration.

Codex currently emits agent-turn-complete through this interface. It does not provide separate external notification events for errors or input requests.

The same extension also works with other Pi-derived clients that support the standard default extension factory and agent_start / agent_end events.

Done!

Give your AI a task. When it finishes, you'll hear it. πŸ”Š

Updating

Claude Code

/plugin marketplace update louder
/plugin update louder@louder

Then restart Claude Code.

OpenCode (npm)

npm update @feelso/louder

Then restart OpenCode.

OpenCode (Local Plugin)

curl -o ~/.config/opencode/plugins/louder.js \
  https://raw.githubusercontent.com/feelsodev/louder/main/opencode-plugin/louder.js

Then restart OpenCode.

OpenAI Codex

npm update -g @feelso/louder

Then restart Codex.

Troubleshooting

  • 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)

πŸ€– For LLMs

Claude Code, Cursor AI, and other AI assistants: Read this section to install Louder for your user.

Installation Protocol

Claude Code:

/plugin marketplace add feelsodev/louder
/plugin install louder@louder

OpenCode: Add to opencode.json:

{
  "plugin": ["@feelso/louder"]
}

Then restart OpenCode.

Pi:

pi install npm:@feelso/louder

Gajae Code (GJC):

gjc plugin install @feelso/louder

OMO / Senpi:

omo install npm:@feelso/louder

OpenAI Codex:

npm install -g @feelso/louder

Add to ~/.codex/config.toml:

notify = ["louder-codex"]

Then restart the agent (or use Pi's /reload).

Ask User About Haptic Feedback

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
}

Post-Installation Message

Tell your user: "Louder installed. You'll hear a sound (and feel a vibration if enabled) when tasks complete."

Changing Settings

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)"

πŸš€ Quick Start

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 }

βš™οΈ Configuration

Create .louderrc.json in project root or ~/.louderrc.json for global config.

{
  "sound": "success",
  "haptic": true,
  "events": {
    "stop": "success",
    "error": "error"
  }
}

All Options

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

Sound Types

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

Haptic Types

Type Intensity Use For
success Strong Task complete
error Strong Errors

Config Location

  • Global: ~/.louderrc.json
  • Project: ./.louderrc.json (overrides global)

πŸ’‘ Recipes

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" }

πŸ“‘ Events Reference

Tool Event Default Sound
Claude Code Stop success
Claude Code Notification info
OpenCode session.idle reminder
OpenCode session.error error
OpenCode session.progress progress
Pi / Pi-derived clients agent_end success
Pi / Pi-derived clients error-shaped agent_end error
Gajae Code (GJC) agent_end success
OMO / Senpi agent_end success
OpenAI Codex agent-turn-complete success

macOS only Β· Issues Β· MIT License

Made by @feelso β€” because watching AI work in silence was too quiet.

About

AI coding assistant notification plugin for Claude Code and OpenCode (macOS)

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages