
I built this app for one reason: I'm cheap and lazy_.
(_really because I try to do too much, and will disrupt my sleep patterns to get it done.)
Most AI clients have a free plan that resets every hour or day, and I refuse to set an alarm just to paste my next prompt at 3:00 AM. So I made a tool that does it for me.
It started as "type a saved message at a set time." It has since grown into a small routine runner: a list of steps that run in order, on a schedule, while you sleep.
**What it does\
**
A routine is a name, a schedule, and an ordered list of steps:
Focus App - pick any running app (or choose one from /Applications). If it isn't running, Mist Message launches it and brings it to the front.
Click - single, double, or triple click at a screen position. Press Capture Position, click in the target app, done. No typing coordinates.
Type Text - simulates real keystrokes into whatever has focus. Unicode, emoji, and multi-line text all work. Optionally presses Return to send.
Press Key - Return, Tab, Escape, Space, or Delete on its own.
Wait - pause a few seconds for an app to catch up.
Chain them however you like: focus Claude → click the prompt box → type the prompt → Return. Each step has its own Test button so you can check a click position without running the whole thing, and steps can be toggled off or dragged into a new order.
**Scheduling\
**
Once - a specific date and time.
Repeat - every N seconds, minutes, or hours.
Daily - same time every day.
Manual - only when you hit Run Now.
Have as many routines as you want. Each has its own enable switch, the sidebar shows a live "Next in 15 minutes" countdown, and the scheduler re-arms itself the moment you edit a schedule.
**The "I don't want to wake up" features\
**
Keeps your Mac awake while the scheduler runs, so timers never die because your machine dozed off.
But lets the screen sleep. The default assertion only blocks system sleep, so your display can still turn off. There's a separate toggle if you want the display kept on too.
Turn Display Off Now - a button in the toolbar that sleeps the display immediately while the Mac keeps working.
Turn the display off after each routine - macOS treats simulated input as "user activity" and wakes the screen while a routine runs; this option puts it straight back to sleep when the routine finishes.
**Built for Mac (SwiftUI)\
**
Native macOS 14+ app, ~3 MB, no dependencies. A few of the interesting bits:
Input simulation uses Core Graphics CGEvent. Keystrokes are posted with keyboardSetUnicodeString, so it types characters rather than key codes and doesn't care about your keyboard layout. Clicks post mouse-down/up pairs with the correct click-count state for double and triple clicks.
Position capture uses an NSEvent global monitor to catch your next click in another app. One gotcha: AppKit reports mouse positions with the origin at the bottom left, while CGEvent wants the top left. The app stores the AppKit point and flips it against the tallest screen at run time, so multi-monitor setups work.
Focusing apps goes through NSWorkspace.openApplication, which is allowed to activate another app even when Mist Message isn't frontmost (the newer NSRunningApplication.activate() politely refuses under macOS's cooperative-activation rules).
Sleep control is IOPMAssertionCreateWithName (PreventUserIdleSystemSleep or NoDisplaySleep), and "display off now" is just pmset displaysleepnow under the hood.
Execution runs off the main thread with Swift concurrency, so the UI stays responsive while a long message is typed, and a running routine can be cancelled mid-way.
Scheduling is one-shot Timers that re-arm after each run; routines are saved as plain JSON in ~/Library/Application Support/Mist Message/.
No App Sandbox. Sandboxed apps can't post input events to other apps, full stop, so this one runs unsandboxed with the Hardened Runtime and asks for Accessibility permission instead. That also means it can't be on the Mac App Store.
**Why not use a cron job or Automator?\
**
Because I wanted a GUI, and I wanted to click "Capture Position" without scripting coordinates. Also, I'm lazy, remember? (Actually because I can just send the built app to non-technical friends who asked for it.)
**One-line disclaimer\
**
You'll need to grant Accessibility permission in System Settings → Privacy & Security → Accessibility. The app shows a banner with a button that takes you straight there. That's the only setup.
**Download / build from source\
**
It's all SwiftUI, open source, and free.
Build it yourself (macOS 14 or later to run, Xcode 26 to build):
Clone the repo and open Mist Message.xcodeproj.
Select your team under Signing & Capabilities (any free Apple ID works for local builds).
Press Run. Grant Accessibility when prompted.
**Download:
**
https://drive.google.com/drive/folders/1eYo68r-QWkj7PWHtEjjYH4S_dmNdqxmN
The download is signed but not notarized, so on first launch macOS will complain. On macOS 15+ go to System Settings → Privacy & Security → Open Anyway; on macOS 14 right-click the app → Open.