stir

sleep soundly, wake up ready to live. one overnight session — white noise into silence, then a gentle wake when your body is ready.

what it is

one time, one button, no clock

set when you need to be up by, and start the night. white noise carries you to sleep and fades to silence before morning — white, pink or brown noise, a fan, wind, or ocean waves, looping seamlessly all night.

then stir listens, calibrated to your room, so distant traffic never wakes you but the rustle of you naturally stirring does. it wakes you gently inside your wake window. miss the window, and the alarm sounds at your "up by" time no matter what.

the night screen shows nothing that tells the time — no clock, no countdown, not even the status bar. waking at 3am and working out how little is left is its own kind of insomnia, and there is nothing on screen to do that arithmetic with.

what's left is a black sky, and the real sun and moon riding their daily rings at their true positions, computed on-device. subtle and artistic if you ignore them; honest astronomy if you read them. when the moon touches the horizon line on screen, it's rising or setting outside your window.

how it works

the whole mechanism, in plain terms

one session, all night. set the one time that matters — when you need to be up by. white noise plays while you fall asleep and through the night, then fades to silence. after a quiet gap, stir starts listening. when it hears or feels you stirring inside your wake window, it wakes you gently. if the window closes without a stir, the alarm sounds at your "up by" time no matter what.

listening is signal processing, not a model. when your wake window opens, stir measures the room for 30 seconds to learn its baseline level and how much it naturally varies. the wake trigger sits a few standard deviations above that baseline — how many is your sensitivity setting — so a furnace hum or distant traffic never fires it, while the rustle of you turning over does. sound has to stay above the trigger for several readings in a row before the alarm starts. stir hears the room, not a person: it cannot tell your stirring from a partner's, and it never tries.

the night screen. black all night: no clock, no countdown, nothing that brightens as morning comes. the two rings are the real sun and moon, each ring that body's complete daily lap around you — the part above the horizon line is sky, the dimmed part below is its path under the earth. the share of a ring above the line is the share of the day that body spends up, so the sun's ring rides high in summer and low in winter. the moon makes that same sweep every 27 days, and a full moon always rides opposite the sun. anyone who reads the sun can tell roughly what time it is, never to the minute, and only by going looking.

the backstop. on iOS 26 and later, starting a night also schedules a system alarm two minutes after your "up by" time. it fires through silent mode, focus, and even if the app is closed overnight — and it is cancelled the moment you stop the night or the alarm yourself.

everything happens on your phone. the microphone is only evaluated during your wake window, and nothing is ever recorded or sent anywhere. in no-alarm mode the microphone is never activated at all. your approximate location is used only to place the sun and moon, and it never leaves the device.

the story

why i made this

for years i paid a subscription to a sleep app for exactly one feature: it listened for me stirring and woke me gently. it had watch integration too, but i don't wear a watch to bed — so i was renting a single feature, year after year. when i realized i could build that feature myself, i was honestly amazed that it worked — and it works 99% as well as the thing i was paying for.

the deeper reason is more personal. seeing the time at night stresses me out. wake at 2 am and the clock says you're in the middle of the night; wake at 5 and it says you didn't sleep long enough; wake at 6:40 and it says it's almost over. none of that information helps — it just costs you the rest of the night. so the night screen shows nothing that tells the time. a black sky, and the one thing worth looking at instead: the real moon, right where it is outside your window.

that's why it's open source, too. building this cost almost nothing but judgment — and when software is that cheap to make, simple useful tools shouldn't live behind subscriptions and data harvesting. it's a Pure Inference build; take it, learn from it, fork it.

privacy policy

everything stays on your phone

what we collect: nothing. stir does not collect, store, or transmit any personal data. no accounts, no analytics, no tracking, no advertising, no servers.

microphone. the microphone is used solely to detect the sounds of you stirring, and only evaluated during your wake window. audio is processed on your device in real time — nothing is ever recorded, stored, or sent anywhere. in no-alarm mode the microphone is never activated at all.

location. your approximate location is used only to place the real sun and moon on the night screen. it is computed against on-device astronomy and never leaves your phone. decline it and the app works the same, minus the sky.

storage. your settings live locally on your device. stir also keeps a short record of each night on your phone — when it started, when it ended, and what set off the alarm — and uses it to tune sensitivity. nothing leaves your phone.

contact. for support or questions, open an issue on GitHub.

last updated september 2026.