A Claude Code mod plays MIDI music when it works An engineer released miod, a Claude Code plugin that generates live MIDI music reflecting what the AI coding agent is doing, requiring Claude Code 2.1.290 or newer on macOS. The mod assigns each task a flavour, key, scale, chord progression, tempo and sound, with 13 moods (thinking, reading, editing, running, failing and others) that each have 10 variants and change whenever the agent's activity changes or every 4 phrases. It is installed via the Claude Code plugin marketplace from delexw/miod and can be toggled with /miod on, /miod off and /miod wave commands. Important Only tested on macOS. Not sure yet how it behaves on Linux or Windows. I'm an engineer, but these days I solve the boring problems entirely by vibe coding. Somewhere along the way I felt I had lost the creativity and curiosity I used to have when writing code myself. So I started thinking about how to make vibe coding fun again. miod is the first try: while the agent does the work, you get to hear it think, read, edit, fail and fix, with a little piece of music no one has heard before. Feel free to add more moods, flavours and styles. Each mood is one row in hooks/moods.ts , each flavour one row in hooks/flavours.ts , each sound style one entry in hooks/styles.ts , and each wave look one file in hooks/waves/ . Feeling it's a bit too noisy? 🙉 No hard feelings. Just turn it off usage with /miod off . A Claude Code mod MIDI + mod that writes music on the spot while Claude works. No music files, no library, no AI model. - Every task picks its own flavour lo-fi, chiptune, ambient, jazzy and 8 more , key, scale 16 of them , chord progression, tempo, sound and theme. - The mood follows what the agent is doing. Every mood has 10 variants, and a new one is picked as the task goes: whenever the activity changes, and every 4 phrases. The task's flavour bends it too, so editing in a lo-fi task sounds nothing like editing in a chiptune one. - The faster it spends tokens, the busier the music. - Above the prompt, one line shows the mood, flavour, key, tempo and energy, with a wave under it that scrolls with the music, coloured by mood: - Tasks flow into each other: the next task fades in, in a related key. If no new task comes, a closing chord fades out at the end of the phrase. Needs Claude Code 2.1.290 or newer, on macOS. claude plugin marketplace add delexw/miod claude plugin install miod@miod Then start a new session. /miod is it on or off? /miod off stop the music /miod on play again from the next task /miod wave list the wave looks: bars, line, mirror, dots, pulse /miod wave dots switch the wave to the dots look Each row below is the mood's first variant. All 10 are in MOODS in hooks/moods.ts . | The agent is… | When it uses… | Sounds | |---|---|---| | thinking | no tool | calm | | reading | Read, Grep, Glob, MCP tools | airy | | exploring | WebSearch, WebFetch | curious lydian | | planning | TodoWrite, plan mode | hopeful major pentatonic | | asking | AskUserQuestion | waiting, almost silent | | editing | Edit, Write | bright major | | running | Bash | driving beat | | installing | npm, bun, pip, brew… install | patient minor pentatonic | | testing | test, check, lint, tsc | focused dorian , busy beat | | shipping | git commit, push, merge, gh pr | triumphant mixolydian | | deleting | rm -r, git reset --hard, git clean | ominous phrygian , low drone | | delegating | Agent | one harmony voice per subagent | | failing | a Bash command that failed | tense minor , until a command passes | When several happen in one 8-beat phrase, the one higher in STRONGEST FIRST hooks/activity.ts wins. A filling context window lifts the melody and, past 80%, adds a low drone. The scales follow how musicians describe each mode musical-u https://www.musical-u.com/learn/the-many-moods-of-musical-modes/ , Jiang et al. 2024 https://www.frontiersin.org/journals/psychology/articles/10.3389/fpsyg.2024.1414014/full . - Mood variant: add a row to that mood's list in MOODS in hooks/moods.ts . - New mood: add the name to Activity and STRONGEST FIRST in hooks/activity.ts , map tools or commands to it there, and give it a list of at least 10 variants in MOODS . - Flavour: add a row to FLAVOURS in hooks/flavours.ts . Each field nudges every mood: brighter or darker scale, busier or calmer, drums up or down, swing, bass line. - Scale or chords: add to SCALES or PROGRESSIONS in hooks/theory.ts . - Wave look: add a file to hooks/waves/ that exports a WaveLook how many rows, and a draw function , then list it in WAVES in hooks/waves/index.ts . - Style: add a wave function to STYLES in hooks/styles.ts . It must return values between -1 and 1. Then check it: claude plugin validate . claude plugin test . Run a checkout without installing it with claude --plugin-dir