Weak Independent Harmonium
Every token costs you a breath.
Created on 30th August 2026
•
Weak Independent Harmonium
Every token costs you a breath.
The problem Weak Independent Harmonium solves
Your MacBook has a real hinge-angle sensor. Apple put it there for sensible reasons.
We used it to make Claude Code require manual labour.
Usually, if your MacBook is awake and the lid is open, Claude Code can happily keep running in the background. You give it a prompt, leave it alone, and it does its thing.
Claude Debellowsy (Weak Independent Harmonium) changes that.
Your laptop lid is now a harmonium.
Opening and closing the lid plays notes in sargam across different ragas. More importantly, moving the lid acts like pumping the bellows of a real harmonium.
And Claude is connected to it.
As long as you're moving the lid and playing the harmonium, Claude Code keeps working.
Stop moving the lid?
Claude stops too.
Leaving your laptop open isn't enough anymore. You can't just set the screen at a comfortable angle and let the agent cook.
You must actively play the harmonium.
Claude runs as a child process, and when the lid stops moving, we send it SIGSTOP. So the operating system actually freezes Claude wherever it is — halfway through a sentence, halfway through writing code, halfway through a tool call.
Start playing again, and it resumes exactly where it stopped.
So instead of:
Prompt Claude → wait for Claude to finish
the workflow is now:
Prompt Claude → physically pump your MacBook like a harmonium → keep pumping → Claude finishes
If you stop playing because your arms are tired, that's unfortunate.
Your agent is tired too.
There is also a status line reminding you that simply having the laptop open does not count as effort.
Open is not the same as trying.
TL;DR: We took an AI coding agent designed to automate work and made it require continuous physical labour to function.
Productivity has been solved.
Challenges I ran into
SIGNALS
One threshold almost killed the terminal
At first, Claude was paused and resumed using a single movement threshold.
That was a terrible idea.
When the lid movement hovered around that exact boundary, Claude would receive SIGSTOP and SIGCONT dozens of times per second.
Instead of gracefully pausing the agent, we basically made the terminal have a seizure.
The fix was hysteresis: Claude now resumes once movement crosses a higher threshold, but it won't freeze again until movement falls much lower.
In other words, we taught the harmonium not to panic.
SIGNALS
We very nearly created an immortal frozen Claude
There was another slightly more concerning problem.
If the supervisor process died while Claude was SIGSTOPed, Claude could stay frozen behind it and leave the terminal completely stuck.
Which is a very funny bug until it happens to your terminal.
The supervisor now refuses to disappear without first sending Claude a SIGCONT. Even Ctrl-C is handled carefully so the supervisor gets a chance to wake Claude up before exiting.
Rule number one of Claude Debellowsy:
Never leave Claude frozen behind.
BUG
Dead code survived two reviews
At one point, we had logic that selected between two FFT ranges depending on whether a saved template existed.
Except we checked whether the template existed before loading the template.
So naturally, it never existed.
One branch of the code had therefore never executed. Not once.
There was no obvious failure either. We only found it by rereading the code and noticing that reality and our intentions had quietly separated several commits ago.
Classic.
AUTOPLAY
Browsers do not appreciate surprise harmoniums
Modern browsers don't let a webpage suddenly start making noise without a user interaction.
Reasonable policy.
Unfortunately, our entire project is unreasonable.
Web Audio requires a user gesture, and there isn't a proper way to bypass that from a normal page. So the project launches its own isolated browser window using a temporary profile with autoplay enabled.
That way, Claude Debellowsy can make all the unsolicited harmonium noises it wants without changing the browser you use for everything else.
Your email remains safe.
PHONETICS
The singer's mouth was moving backwards
The harmonium also has a wordless singing voice layered over the reeds.
As you open the laptop, the vowel is supposed to gradually sound more "open" too.
We ordered the vowels using their first formant (F1), which roughly corresponds to how open the mouth is.
Except one vowel was in the wrong acoustic position.
So halfway through opening the laptop, the virtual singer's mouth would suddenly start closing again.
Which felt less like singing and more like the laptop reconsidering its life choices.
We switched to the open-mid version of the vowel so the progression now actually follows the lid.
Pitch detection caused another problem: basic autocorrelation kept detecting the voice an octave too high.
We replaced it with YIN's cumulative mean normalised difference method, which finally convinced the computer that the singer was not secretly a chipmunk.
Technologies used
Cheer Project
Cheering for a project means supporting a project you like with as little as 0.0025 ETH. Right now, you can Cheer using ETH on Arbitrum, Optimism and Base.
