Notchling is a tiny creature living in your MacBook notch. It watches your cursor, dozes off when you idle, feels your battery, and when you drag a file at it, it opens its mouth and carries it for you. Free, under a megabyte, and nothing leaves your Mac.
Hey Product Hunt 👋
A few weeks ago I launched Crew here — little pixel monsters for your Claude
Code agents (it finished #7 of the day, thank you!). Notchling is its sibling,
and it lives one floor up: in the MacBook notch.
There are a lot of notch apps, and almost all of them turn the notch into a
dashboard — media controls, calendars, clipboard managers. Notchling is the
opposite: it's a someone, not a something. One creature. Its body language IS
the interface:
▪ It watches your cursor, blinks, gets startled if you fling the mouse at it,
and dozes off when you step away.
▪ Drag a file at it and it opens its mouth. Let go — gulp — and it carries the
file for you. Links and text snippets too. Hover to see what it's holding,
drag a chip back out, share one over AirDrop, click to open. It remembers
across restarts.
▪ It swallows time: right-click → hold 5, 15 or 25 minutes. A little countdown
chip, then a bounce and a chirp. A tea timer with a face.
▪ Drag the whole creature sideways to reach whatever fell behind it. It parks,
keeps glancing back at its spot, and drifts home a few seconds later.
▪ It feels your battery. Plugged in, it gets a warm, content flush on its
cheeks. Running low, it starts yawning. The moment you cross critical, it
shoots one worried glance at your battery icon — once, and never nags.
▪ Right-click and there's a weather toy in there too — your local sky as a tiny
living scene: a breathing sun, a cratered moon with shooting stars, rain that
splashes on the lip, snow that piles up, fog banks, forked lightning.
▪ And when you want nothing at all: Hide shrinks it to the bare hardware notch —
invisible until you click the notch (or drag a file at it) to bring it back.
▪ It knows when you're on a call: camera in use → it politely shuts its eyes.
Mic in use → a small waveform thought. It reads device state only, never
captures anything, and never triggers a permission prompt.
▪ If you use Claude Code: a small ember pulse glows under the notch while your
agents are working (hover shows which projects) — and when a session gets
blocked waiting on you, an ember mark appears, it glances down, and one click
jumps you to that terminal. It reads the same local markers as Crew.
▪ Small things it simply notices: Caps Lock on → eyes wide. Wi-Fi drops → one
puzzled look around. Disk over 90% → it looks visibly stuffed. Fifty minutes
without a break → a pointed stretch. And you can shush it for an hour.
▪ Music on? Hover for previous/play/next and the track name; scroll over the
notch to scrub. Spotify and Apple Music, via their public interfaces — no
private frameworks that break every macOS update.
▪ Fresh screenshots too: drag the little floating thumbnail straight at it.
▪ Three opt-ins, all off by default: watch Downloads (it chews while one runs,
then holds the finished file), meeting whispers (five minutes before your
next event, read-only calendar), and music.
▪ Everything it holds shows as chips — click one to open, × to remove, and
"+N" unfolds the whole shelf.
▪ It CHEWS what you feed it: right-click a held image → convert to JPEG/PNG,
shrink it, or read the text out of it (straight to your clipboard). All
on-device — Apple's own engines, given a face. The stuff other notch apps
charge $10–29 for, free.
Honest notes:
▪ macOS 13+, Apple Silicon and Intel, under 1 MB. No account, no telemetry, and no
background network calls. Exactly two things ever touch the network, and only if
you ask: the weather toy (ipapi.co to turn your IP into a rough city, then
open-meteo for the sky — no location permission involved) and the update check,
which runs when you click it and never otherwise.
▪ Idle cost is engineered hard: under half a percent CPU while it lives. I
profiled it until the fans had nothing to say.
▪ It isn't notarised yet, so a browser download gets flagged. The terminal
one-liner on the site installs without any warning (curl doesn't quarantine),
and the SHA-256 is published next to it.
▪ Completely free. Crew is the one that pays the rent.
Built in Swift, solo, with Claude Code. Happy to answer anything — the mouth,
the battery moods, or how you make a notch app cost nothing.
What else should a creature in your notch be able to feel?
Its body language IS the interface" is a sharp design thesis, rare for a utility that actually commits instead of hedging with a settings panel. Most notch apps race to cram in more controls, going the other way, one creature reacting to what you're actually doing, is the harder and more interesting choice. The hold-to-time detail, 5, 15, 25 minutes with a chirp at the end, is what elevates it past a novelty, since it turns idle screen real estate into something you use on purpose. Under a megabyte for all of that is real restraint.
@alex_gidirim Thank you, that is the read I hoped someone would have.
The no-settings-panel part was the decision with a real cost attached. If there is no panel, every default has to be right, and you only find out whether they are when strangers use it. Two people found genuine bugs in the first few hours today, and both were places where a default was wrong rather than a feature being missing. I would still make the same call, but it is not the cheap choice.
The timer is there for exactly the reason you named. A menu bar countdown is something you set and forget about. A creature holding your five minutes is something you glance at, and glancing at it is the point.
On the size: it is 775 KB as of a few hours ago, and it got smaller today while gaining album art and browser music, because I finally stripped a symbol table it was never reading. That felt like the most on-brand bug I fixed all week.
Report
@ravindra_sisodia1 I like how the creature itself becomes the interface instead of just another dashboard sitting in the notch.
@oliver_graf1 Thank you. The constraint turned out to be the useful part: a dashboard can show you everything at once, a creature can only say one thing at a time. That forced me to decide what actually deserves your attention, and most of what a notch app usually shows did not survive that.
Report
💎 Pixel perfection
Congratulations on the launch @ravindra_sisodia1 ! I tried it out and it's very cool. A couple of areas of improvement:
I am not being able to drop more than one file
When I want to remove the one file that it's accepting, the "cross" button flickers and it's hard to get it right the first time.
@seomaxtech Thank you Soumyadip, and thanks for actually putting it through its paces, both of those were real.
The multi-file drop turned out not to be my drop handler at all: SwiftUI wasn't handing over every item in the drag, so only the first one arrived. It now reads the drag directly instead of trusting that, and a multi-selection lands whole.
The cross was a better bug. It's only clickable while the chip is hovered, and the notch had a single hover threshold, so a hand resting near the edge crossed it constantly, and every wobble pulled the button out from under your cursor. Your click then landed on the chip and opened the file. There's hysteresis on the hover now, plus a grace period so once the cross appears it stays clickable for a beat. It should feel like a button.
Both are live in 1.10.1 — same link, just download again. Genuinely useful report; that second one had survived two of my own attempts at it.
Report
@ravindra_sisodia1 Reinstalled, everything works perfectly now. Love it!
@yelyzaveta_kibets Good question, and it is the thing I worried about most.
At rest it is exactly the width of your hardware notch and no wider, so it does not take a single pixel that your menu bar could otherwise use. And unless you are actually hovering it or dragging something at it, the whole window ignores mouse events, so clicks pass straight through to whatever is underneath. It cannot swallow an icon that the notch was not already swallowing.
For the case where it genuinely is in the way: drag the creature sideways and it parks, so you can reach whatever is behind it, then it drifts home after a few seconds. Or right-click and Hide, which shrinks it to the bare notch until you click it again.
Being honest though, it will not rescue the two you have already lost. That is macOS overflowing items into the notch, and it needs something like Ice or Bartender. Notchling just promises not to make it worse.
@yelyzaveta_kibets That was the rule before any code got written: never take a pixel the hardware
had not already taken, and never take a click.
It cost real features. Anything that wanted to spill out past the notch got cut.
But it is the reason you never end up quitting it.
Report
I haven't tried it yet, but from the introduction and your answers here, this looks like such a fun little app. I love apps like this that add a bit of delight and personality to the everyday experience.
@niyam_paneru Good question, and it is most of the design work.
Three things keep it from getting muddy. First, the channels are independent: the eyes, the mouth, the thought bubble and the body size each resolve separately. So low battery can own the bubble while a file arriving owns the eyes and the mouth. Most of your examples never actually compete, because they are not on the same channel.
Second, within a channel it is an explicit ordered list and first match wins. On the eyes that order is: camera on, blink, a file coming at it, battery critical, Caps Lock, chewing, yawning, shushed, tired. Privacy is first on purpose. If your camera is on, it shuts its eyes and nothing outranks that. After that, what you are doing beats what your Mac is doing, so a file arriving wins over a yawn.
Third, and this is the one that actually prevents confusion: I separated events from conditions. Battery going critical is not a state it sits in, it is a single worried glance at your battery icon that then lets go. Wi-Fi dropping is one puzzled look around. If those were persistent states you would end up with a creature stuck in a permanent panic face, which is exactly the failure mode you are pointing at.
The bubble has its own order too, and "an agent is blocked waiting on you" is first in it, above every ambient thing, because that is the one you lose money by missing.
@niyam_paneru Good question, it is most of the design work. Three things: the channels are independent, so the eyes, the mouth and the thought bubble each resolve separately and most of those states never actually compete. Within a channel it is an ordered list, first match wins, and privacy is first: if your camera is on it shuts its eyes and nothing outranks that. And I separated events from conditions, so battery going critical is one worried glance at your battery icon that then lets go, not a state it sits in. That last one is what stops it becoming a permanently panicked face.
Notchling
@ravindra_sisodia1
Its body language IS the interface" is a sharp design thesis, rare for a utility that actually commits instead of hedging with a settings panel. Most notch apps race to cram in more controls, going the other way, one creature reacting to what you're actually doing, is the harder and more interesting choice. The hold-to-time detail, 5, 15, 25 minutes with a chirp at the end, is what elevates it past a novelty, since it turns idle screen real estate into something you use on purpose. Under a megabyte for all of that is real restraint.
Notchling
@alex_gidirim Thank you, that is the read I hoped someone would have.
The no-settings-panel part was the decision with a real cost attached. If there is no panel, every default has to be right, and you only find out whether they are when strangers use it. Two people found genuine bugs in the first few hours today, and both were places where a default was wrong rather than a feature being missing. I would still make the same call, but it is not the cheap choice.
The timer is there for exactly the reason you named. A menu bar countdown is something you set and forget about. A creature holding your five minutes is something you glance at, and glancing at it is the point.
On the size: it is 775 KB as of a few hours ago, and it got smaller today while gaining album art and browser music, because I finally stripped a symbol table it was never reading. That felt like the most on-brand bug I fixed all week.
@ravindra_sisodia1 I like how the creature itself becomes the interface instead of just another dashboard sitting in the notch.
Notchling
@oliver_graf1 Thank you. The constraint turned out to be the useful part: a dashboard can show you everything at once, a creature can only say one thing at a time. That forced me to decide what actually deserves your attention, and most of what a notch app usually shows did not survive that.
Congratulations on the launch @ravindra_sisodia1 ! I tried it out and it's very cool. A couple of areas of improvement:
I am not being able to drop more than one file
When I want to remove the one file that it's accepting, the "cross" button flickers and it's hard to get it right the first time.
Notchling
@seomaxtech Thank you Soumyadip, and thanks for actually putting it through its paces, both of those were real.
The multi-file drop turned out not to be my drop handler at all: SwiftUI wasn't handing over every item in the drag, so only the first one arrived. It now reads the drag directly instead of trusting that, and a multi-selection lands whole.
The cross was a better bug. It's only clickable while the chip is hovered, and the notch had a single hover threshold, so a hand resting near the edge crossed it constantly, and every wobble pulled the button out from under your cursor.
Your click then landed on the chip and opened the file. There's hysteresis on the hover now, plus a grace period so once the cross appears it stays clickable for a beat. It should feel like a button.
Both are live in 1.10.1 — same link, just download again. Genuinely useful report; that second one had survived two of my own attempts at it.
@ravindra_sisodia1 Reinstalled, everything works perfectly now. Love it!
Notchling
@seomaxtech Thanks!
Softorino 💻📲
My notch is where menu bar icons go to die, I have lost two to it. Does the creature get in the way of what is already up there?
Notchling
@yelyzaveta_kibets Good question, and it is the thing I worried about most.
At rest it is exactly the width of your hardware notch and no wider, so it does not take a single pixel that your menu bar could otherwise use. And unless you are actually hovering it or dragging something at it, the whole window ignores mouse events, so clicks pass straight through to whatever is underneath. It cannot swallow an icon that the notch was not already swallowing.
For the case where it genuinely is in the way: drag the creature sideways and it parks, so you can reach whatever is behind it, then it drifts home after a few seconds. Or right-click and Hide, which shrinks it to the bare notch until you click it again.
Being honest though, it will not rescue the two you have already lost. That is macOS overflowing items into the notch, and it needs something like Ice or Bartender. Notchling just promises not to make it worse.
Softorino 💻📲
@ravindra_sisodia1 Click pass-through is the part I wanted to hear. Same width as the hardware notch means it costs me nothing I had not already lost.
Notchling
@yelyzaveta_kibets That was the rule before any code got written: never take a pixel the hardware
had not already taken, and never take a click.
It cost real features. Anything that wanted to spill out past the notch got cut.
But it is the reason you never end up quitting it.
I haven't tried it yet, but from the introduction and your answers here, this looks like such a fun little app. I love apps like this that add a bit of delight and personality to the everyday experience.
Notchling
@jayjay_lau Thank you, and that is exactly what I was aiming at.
If you do try it, the thing most people notice first is not a feature: leave it
alone for a minute and it falls asleep, then move your cursor and it wakes up and
looks at you.
One heads-up so it does not put you off. I have not paid Apple for notarisation
yet, so macOS will call me an unidentified developer on first launch. Right-click
the app, choose Open, and it is fine from then on. Free, 775 KB, nothing leaves
your Mac.
Tadata
Agreed with Gal's word: this is very charming! Reminds me of Tamagotchi x the Microsoft Paperclip character.
Notchling
@tori_seidenstein
Tamagotchi was the reference. Clippy was the warning.
Clippy had the charm, it just had no idea when to be quiet.
So this one never speaks, never pops up, and never asks you a question. It only reacts.
Glad it landed as the first one and not the second.
Notchling
@hannahawitan It is your chance, and this one comes with an improvement on the original: you
cannot kill it.
It sleeps when you go quiet and wakes up when you move. No feeding, no guilt, no
tiny grave.
The “body language is the interface” part is probably the most interesting thing here.
I’d be curious what happens when several states compete at once , low battery, timer finished, agent waiting, Wi-Fi dropping, etc.
How do you decide which reaction gets priority without making the creature confusing?
Notchling
@niyam_paneru Good question, and it is most of the design work.
Three things keep it from getting muddy. First, the channels are independent: the eyes, the mouth, the thought bubble and the body size each resolve separately. So low battery can own the bubble while a file arriving owns the eyes and the mouth. Most of your examples never actually compete, because they are not on the same channel.
Second, within a channel it is an explicit ordered list and first match wins. On the eyes that order is: camera on, blink, a file coming at it, battery critical, Caps Lock, chewing, yawning, shushed, tired. Privacy is first on purpose. If your camera is on, it shuts its eyes and nothing outranks that. After that, what you are doing beats what your Mac is doing, so a file arriving wins over a yawn.
Third, and this is the one that actually prevents confusion: I separated events from conditions. Battery going critical is not a state it sits in, it is a single worried glance at your battery icon that then lets go. Wi-Fi dropping is one puzzled look around. If those were persistent states you would end up with a creature stuck in a permanent panic face, which is exactly the failure mode you are pointing at.
The bubble has its own order too, and "an agent is blocked waiting on you" is first in it, above every ambient thing, because that is the one you lose money by missing.
Notchling
@niyam_paneru Good question, it is most of the design work. Three things: the channels are independent, so the eyes, the mouth and the thought bubble each resolve separately and most of those states never actually compete. Within a channel it is an ordered list, first match wins, and privacy is first: if your camera is on it shuts its eyes and nothing outranks that. And I separated events from conditions, so battery going critical is one worried glance at your battery icon that then lets go, not a state it sits in. That last one is what stops it becoming a permanently panicked face.