LinuxToaster · macli

Your Mac, from the command line

Twenty-eight commands that bring Mail, Messages, Calendar, Reminders, Contacts, Notes, Photos, the camera, the microphone, the screen, location and the rest of your Mac into the terminal. One word each, stdin and stdout, in the style of the tools already there — so they work in pipes, in scripts, in cron, and with whatever AI you point at a shell. Built for toast. Works for humans too.

Get macli — $29 One purchase, updates for a year. Apple Silicon, macOS 13 or later.

The twenty-eight

mailMail

Mail.app's mailboxes, read from its own index in milliseconds: unread, search, a message as text. Archive, flag, move, and rules that sort on arrival. Send through Mail.

mail unreadmail rule sync noise.txt "Sorted/Newsletters"
imessageMessages

your iMessage chats, read from the Mac's own store: chats, a thread, unread, everything since you last looked; search inside messages; send. Names from Contacts; a photo someone sent is a line ocr can read.

imessage unreadimessage 55 since 2026-09-01
emailsMail, anywhere

the IMAP side: list, filter, search on any account; move, flag or delete a set in one command; index a Maildir into grep-able lines and a text rendering per message. Linux too.

emails unreademails index ~/Mail/icloud
emailOne message

read one, reply from stdin, send stdin to an address, watch for new mail and pipe each one to a command.

email 449411echo "on my way" | email lena@example.com
kalCalendar

today, the next N days, add from a sentence, remove.

kal 7kal add "dentist thursday 10am"
remReminders

open ones soonest first; add from a sentence; done, undone, remove.

remrem add "call the bank tomorrow 9am"
conContacts

look someone up by name, email or phone; add; birthdays.

con "Lena Okafor"con birthdays -d 30
noteNotes

the most recent, read one as text, search, add from stdin.

note search "meeting"echo "ship it" | note add
photoPhotos

recent, by date, favorites, albums; export an original.

photo 2026-09-06photo export <id>
fetchThe web

a page as text — the article, not the menus; PDFs too; --links for where it goes next.

fetch https://example.com/articlefetch url --links
searchThe web

DuckDuckGo results: title, URL, snippet. Says so when it is blocked, rather than pretending the web is empty.

search "AFM 3 Core Advanced"
ocrEyes

the text in an image, a PDF page, or the screen. Vision, on device.

ocr --screenocr receipt.jpg
snapCamera

one picture, to a file or stdout.

snap desk.jpgsnap | ocr
hearEars

listen, and print what was said. Speech, on device.

hear | rem add
locLocation

place name and coordinates.

loc
wifiWi-Fi

the network you are on, signal and speed; nearby networks; on, off, join.

wifiwifi scan
btBluetooth

what is connected, and how much battery it has.

btbt all
batteryPower

level, state, time remaining; the lid; the charger.

batterybattery --power
lightAmbient light

lux, from the sensor by the camera.

light
noiseSound level

how loud the room is; nothing recorded.

noise
thermalHeat

nominal, fair, serious, critical — the system's own throttle signal.

thermal
idlePresence

seconds since the last key or mouse; --over N as a yes/no for scripts.

idle --over 300 || notify "build done"
volVolume

show, set, up, down, mute, toggle.

vol 40vol mute
notifyNotifications

a banner, from any script; the message can come from stdin.

make && notify "tests pass"
timerTimer

a countdown that notifies you, and survives the Mac sleeping.

timer 25m "back to it"
stopwatchStopwatch

start, lap, stop; state survives between calls.

stopwatch startstopwatch lap
tuneMusic

now playing; play, pause, next; a playlist by name; search the library.

tune play "Morning Coffee"tune
tagFinder tags

see them, set them, find files by them.

tag add Review *.mdtag find Review

Every tool documents itself with -h, for you and for a model alike. Piped, each prints plain lines a script can parse; at a terminal, something easier on the eye. Nothing here talks to a server: kal reads your calendar through EventKit, on this machine.

Examples

the terminal, with a calendar in it
$ kal 1
Mon 09:00  Standup @ Zoom
Mon 14:30  Dentist @ 4th Ave
$ rem add "renew the SSL certificates" in 3 days
reminder: renew the SSL certificates · Thu 09:00
$ battery
81% · charging · 1h 40m to full
$ search "AFM 3 Core Advanced" | head -3
1. Apple Foundation Models 3 — Apple Machine Learning Research
   https://machinelearning.apple.com/research/afm3
$ ocr --screen | toast "what's this error and what do I try first?"
It's a stale lockfile from an interrupted npm install; delete package-lock.json and run it again.
$ photo 2026-09-06 | toast "where was I yesterday?"
Half Moon Bay in the morning, Pacifica around four, home by six.
$ imessage new | toast "anything that needs me?"
Tatiana asked what the plan is tomorrow; nothing else.
$ kal 7 | toast "what's the one thing I'll forget this week?"
The dentist. It's Monday at 14:30 and nothing else that day looks like it moves.

The last line is the point of the twelve. An assistant is only as capable as the verbs it can run; these give it your calendar, your reminders, your notes and your mail, in the form it already understands.

Keep me in the loop

Product updates, new features, the occasional blog post. No spam.

Unsubscribe anytime.

Launchpadly Startup Directory Featured on tools.cafe