An agent in your messages.
Work never waits.
Claude or Codex, attached to the thread you already text. Your machine does the work while you're nowhere near it.
- Runs while
- you're away
- Context
- never resets
- Reachable from
- anything
Your agent stops the moment you close the laptop. Every long job, every half-finished thought, every “I'll deal with it when I'm back” sits there waiting on you to sit back down.
Morse attaches the agent to a thread instead of a window. It keeps working when you leave, it answers while you're moving, and there is nothing to reopen when you return. The thread is the session, and the session never ends.
Three minutes to set up. Then you never open it again.
- 01
Install it
One command on the Mac you want to reach. It runs as a login agent and needs Full Disk Access, because reading your own Messages history is a protected thing to do.
brew install morse && morse setup - 02
Point it at the thread
Morse watches exactly one conversation: the note-to-self thread you already have. Setup finds it, shows you which one, and waits for you to confirm.
watching: you · iMessage - 03
Text it
From your phone, your watch, anywhere your desk isn't. No syntax and nothing to remember: the scripts you wrote run exactly, and everything else goes to the agent on your machine.
what's eating my disk?
There is no syntax
You text it the way you text anyone. Anything matching an action you wrote down runs that script exactly; everything else goes to the model. You never have to remember which is which.
The tradeoff is real and worth saying: a thread with no syntax cannot tell a note from a question, so your grocery list gets an answer. Point Morse at a thread you keep for it rather than the one you use as a scratchpad.
Bring your own model
Anything that isn't an exact match runs through an agent CLI already installed on your machine, on your own subscription. No API keys to add, no tokens billed to us, no prompts leaving the box.
Claude Code and Codex are built in and tested. Anything else that prints an answer works too: point brain_command at Gemini CLI, Cursor, opencode, Amp, aider, a local model, or a shell script you wrote. Switching is one line.
Things people send from everywhere but a desk.
ship
- deploy web
- rollback prod
- what broke the build?
find
- send me the Ramirez invoice
- what changed in ~/Projects today
long jobs
- render the walkthrough
- start the batch, ping me when it's done
check
- is the dev server up
- how much disk is left
scripts you wrote
- clear the caches
- branch morse
just ask
- run the tests and tell me what failed
- why is the build slow?
Or define your own.
Drop a morse.toml in any project. Named actions are matched before the model is ever consulted, so the things you do every day are exact, fast and free.
Anything not matched falls through to an agent with the tools you allowed, and nothing else.
[action.deploy]match = "deploy {target}"run = "./scripts/deploy.sh {target}"cwd = "~/Projects/juracich"reply = "{stdout | last 3 lines}" [action.caches]match = "clear the caches"run = "rm -rf ~/Library/Caches/*"confirm = true # holds for a yes replyTwo paths. Two honest answers.
Products like this normally rent a phone number, which means a carrier and a vendor both handle every command you send. Morse has two ways around that, and they do not have the same threat model, so they do not get the same claim.
The Mac path. Nothing you send touches our infrastructure at all.
There is no server
Morse is a binary on your Mac. Your messages travel between your own Apple devices and stop there. We do not receive them, cannot read them, and have nothing to hand over if asked.
It only watches one thread
A single chat id, filtered at the query level. Every other conversation on the machine is never read into memory, never classified, never logged. Not a policy, just the query.
The config is the whole surface
What it can read, write and run is a file on your disk. There is no remote to widen it from and no dashboard to misconfigure, because there is nothing on the other end.
Big things ask once
Deletes, force pushes and anything that spends money show you the command and wait for a yes. Not because we do not trust you, but because you are typing on a phone.
True either way
These come from where the work happens rather than how the message got there, so switching paths does not change them.
It runs on your machine, as you
Morse is a process under your own login with the permissions you granted it there. It is not a sandbox we operate and not a runner we host. If it can do something, it is because your account already could.
We never hold a credential
The model runs through the claude or codex CLI you installed and signed into yourself. No API key of ours is involved, none of yours is uploaded, and your subscription is billed to you rather than resold by us.
Outbound only
The agent polls for work and posts results. Nothing listens on a port, no inbound connection is ever accepted, and no firewall rule has to be opened for any of it to work.
The keys stay put
Each device generates its own keypair and writes the private half to disk, owner-only. There is no code path that uploads it, and pairing publishes only the public half.
Both paths share one limit worth saying plainly: anyone holding your unlocked phone, or signed into your account, can send a command. That is not a hole to patch, it is what the product is. Morse is exactly as secure as your lock screen and your credentials, which is the same bar every other app on that phone is held to. The allowlist starts empty so you opt into scope deliberately, and then it gets out of your way.
Every machine runs its own agent. Nothing is remote-controlled.
The same binary runs on each computer you own, under your login, with the permissions you granted it there. It reads what you allowed, spawns the claude or codex CLI you already installed and signed into, and hands back the answer. Adding a machine means pairing it, not opening it up.
Each agent only ever connects outward. It polls for work and posts results, so nothing listens on a port and nothing on your network has to be reachable from the internet. There is no inbound path to Morse on your machine because there is no inbound path at all.

Free to start. $12 when you outgrow it.
Morse runs on the Claude or Codex subscription you already pay for, so there are no tokens to resell and no per-message markup. You are paying for pairing, quotas and the dashboard. Your model bill does not change.
Enough to find out whether you actually reach for it.
- 1 paired machine
- 100 commands a month
- Your own Claude or Codex plan
- Named actions and the agent fallback
For a fleet, and for people who text their computer all day.
- 10 paired machines
- 5,000 commands a month
- Everything in Free
- Windows machines over the circuit
A command counts when the agent actually runs one, and the agent reports it as a number. The server never learns what you sent, which is what lets a metered product keep the claim two sections up.
Get the beta.
It's one binary and it only runs on macOS, since reading iMessage is the whole trick. Leave an email and we'll send the build when it's ready for people who aren't us.




