Sandbox
@6m1w/claude-sound-fx

Sound effect plugin for Claude Code and Opencode

Sound FX adds themed audio cues to Claude Code, and also ships an Opencode package that uses the same themes and config. It listens for lifecycle events like session start, tool failure, and session end, then plays the matching audio from the selected theme or from Mix mode.

45 stars3 forksPythonUpdated 6mo ago
Who it's for

Builders who want their agent work to make noise when tasks start, finish, or fail.

What it delivers

You can keep working in another window and still hear when your agent needs attention.

What it does

Themed audio cues

Plays sounds for session start, submit, complete, error, notification, precompact, and session end events.

Mix mode and single-theme mode

Randomizes across 12 themes or keeps one theme active for every event.

Claude Code setup command

Uses `/sound-fx:setup` to configure, update, or remove the plugin and refresh hooks.

Remote relay for headless servers

For SSH sessions, `scripts/relay.py` forwards audio from the remote machine to your local computer.

Custom theme folders

Lets you add a new theme by dropping a directory with a `manifest.json` and audio files under `assets/`.

Opencode package

Ships `@6m1w/opencode-sound-fx` for Opencode with the same config file and audio themes.

How to get it

  1. 1Relay commands
    python3 scripts/relay.py --status  # Show config and loaded themes
    python3 scripts/relay.py --kill    # Stop the relay
  2. 2Run
    /plugin marketplace add 6m1w/claude-sound-fx
    /plugin install sound-fx@claude-sound-fx
  3. 3Then configure your theme
    /sound-fx:setup
  4. 4Run
    npm install @6m1w/opencode-sound-fx
  5. 5Run the same command anytime
    /sound-fx:setup

README

Sound FX — Themed sound effects for Claude Code

English | 中文 | 日本語

You kick off a task, switch to your browser, and forget about the terminal. Five minutes later you check back — it's been waiting for you the whole time.

Sound FX adds themed audio cues to Claude Code and Opencode so you never have to babysit the terminal again. Hear when a task finishes, when something breaks, or when the AI needs your input — even while you're in another window.

Pick a single theme or go Mix mode and let 12 themes collide randomly. JARVIS confirms your deploy. GLaDOS mocks your errors. Pikachu celebrates your tests passing. A WoW Peon reluctantly obeys your commands.

https://github.com/user-attachments/assets/c47537fc-1c18-4256-877d-0f22d4314bfd


Platform Support

Works on every major platform. No extra setup needed for local use.

PlatformExtra setup?How it works
macOSNoPlays via afplay directly
Windows (WSL)NoAuto-calls powershell.exe or ffplay.exe via WSL interop
Linux desktopNoAuto-detects paplay / ffplay / aplay
Remote server (SSH)YesRequires a relay script on your local machine — see below

Remote server setup

When running on a headless server with no audio hardware, sounds are forwarded to your local machine via a lightweight HTTP relay:

# ① Clone the repo on your LOCAL machine
git clone https://github.com/6m1w/claude-sound-fx.git

# ② Start the relay (runs in background, listens on port 19876)
python3 claude-sound-fx/scripts/relay.py &

# ③ SSH into the remote server with port forwarding
ssh -R 19876:127.0.0.1:19876 your-server

# ④ On the server, use Claude Code / Opencode as usual — sounds play locally

Relay commands:

python3 scripts/relay.py --status  # Show config and loaded themes
python3 scripts/relay.py --kill    # Stop the relay

Install

Claude Code

/plugin marketplace add 6m1w/claude-sound-fx
/plugin install sound-fx@claude-sound-fx

Then configure your theme:

/sound-fx:setup

The setup wizard will walk you through theme selection and trigger mode.

Opencode

npm install @6m1w/opencode-sound-fx

Add to opencode.json:

{
  "plugin": ["@6m1w/opencode-sound-fx"]
}

Shares the same config file (~/.claude/sound-fx.local.json) and audio themes.

Update or Remove

Run the same command anytime:

/sound-fx:setup

The wizard will ask you to Configure, Update, or Remove:

ActionWhat it does
ConfigureSet up or change your theme and trigger mode
UpdateRe-apply current settings, refresh hooks, and play a test sound
RemoveCompletely remove sound effects — deletes config file

Themes

Sci-Fi & AI

ThemeVibeOrigin
Jarvis"At your service, sir." — Calm, competent, slightly British.Iron Man
GLaDOS"This was a triumph." — Passive-aggressive AI with dark humor.Portal
Star TrekClassic starship interface chirps, beeps, and red alerts.Star Trek
Optimus Prime"Autobots, roll out." — Heroic commander energy.Transformers

Anime

ThemeVibeOrigin
JoJoDIO の「無駄無駄」と承太郎の「やれやれだぜ」— Dual voice chaos.ジョジョの奇妙な冒険
One Pieceルフィの「よっしゃー!」— Pure rubber-band energy.ワンピース
Pikachu「ピカチュウ!」— You know exactly how this sounds.ポケットモンスター
Doraemon「ドラえもーん!」— The robotic cat from the future.ドラえもん

Gaming & Other

ThemeVibeOrigin
WoW Peon"Ready to work!" — Reluctant, overworked, relatable.World of Warcraft
StarCraft SCV"SCV good to go, sir!" — Blue-collar space worker.StarCraft
Steve Jobs"One more thing..." — Inspirational keynote energy.Apple
Mechanical Keyboardclack clack clack — Pure ASMR satisfaction.Your dreams

How It Works

Sound FX hooks into 7 lifecycle events:

 SessionStart ──→ 🔊 "I am ready."         (theme: start)
 UserPromptSubmit ──→ 🔊 "Understood."      (theme: submit)
 Stop ──→ 🔊 "Task complete."               (theme: complete)
 PostToolUseFailure ──→ 🔊 "That was a mistake." (theme: error)
 Notification ──→ 🔊 "Hmm?"                 (theme: notification)
 PreCompact ──→ 🔊 "Memory failing..."      (theme: precompact)
 SessionEnd ──→ 🔊 "Until next time."       (theme: session_end)

Note: Tool permission prompts (the approve/deny popup) are not a hookable lifecycle event in Claude Code, so this plugin cannot play sounds for them.

Modes

ModeWhat it does
Mix (default)Randomly picks from all 12 themes per event. Maximum chaos.
Single ThemeSticks to one theme. For the focused individual.

Trigger Levels

LevelEvents
Full (default)All 7 events fire sounds
MinimalOnly start, complete, error, notification

Config is stored at ~/.claude/sound-fx.local.json. Re-run /sound-fx:setup anytime to change.


Add Your Own Theme

No code changes needed. Just add a directory under assets/:

assets/my-theme/
├── manifest.json
├── MyThemeStart1.mp3
├── MyThemeComplete1.mp3
└── ...

manifest.json format:

{
  "name": "My Theme",
  "description": "What it sounds like",
  "start": ["MyThemeStart1.mp3"],
  "submit": [],
  "complete": ["MyThemeComplete1.mp3"],
  "error": [],
  "notification": [],
  "precompact": [],
  "session_end": []
}

Empty arrays [] are fine — that event just won't play a sound for your theme.


Environment Variables

VariableDefaultDescription
CLAUDE_SOUND_VOLUME60Volume level (0–100)
CLAUDE_SOUND_PORT19876Relay server port

License

MIT

Files in the repo

Repository payload11 top-level entries
  • .claude-plugin
  • assets
  • commands
  • docs
  • hooks
  • opencode
  • scripts
  • .gitignore
  • README.ja.md
  • README.md
  • README.zh-CN.md

Discussion (0)

Ask about usage, or say what you built with it

Sign in to join the discussion.

No comments yet. Be the first to say what this is good for.

More plugins

Makes your AI agent think like the laziest senior dev in the room. The best code is the code you never wrote.

138k
1 add

Graphs that teach > graphs that impress. Turn any code into an interactive knowledge graph you can explore, search, and ask questions about. Works with Claude Code, Codex, Cursor, Copilot, Gemini CLI, and more.

82k
code-yeongyu/
oh-my-openagent

OmO: Just type "mass ulw" keyword with your prompt. Now you are the master of graph engineering.

69k

Persistent Context Across Sessions for Every Agent – Captures everything your agent does during sessions, compresses it with AI, and injects relevant context back into future sessions. Works with Claude Code, OpenClaw, Codex, Gemini, Hermes, Copilot, OpenCode + More

94k

Opinionated Oxlint rules for rejecting low-evidence TypeScript and JavaScript patterns

4.3k