Sending messages¶
chatwire drives Messages.app via AppleScript to send messages. Everything sent through chatwire appears in Messages.app on your Mac and is delivered as a normal iMessage or SMS.
Basic compose and send¶
- Click a conversation in the sidebar to open it
- Click in the compose box at the bottom
- Type your message
- Press Return or click the Send button
The message appears in the conversation immediately (optimistic update) and the bridge confirms delivery via chat.db within a few seconds.
New line without sending¶
Press Shift+Enter to add a line break without sending.
Replying in a conversation¶
Just click any conversation and type. The bridge routes your reply to the correct chat by its GUID — you don't need to specify who you're replying to.
Group chats¶
Group chats work the same as one-on-one conversations. The bridge routes by chat GUID, so your reply goes to the group, not to individual participants.
In the message list, each bubble shows the sender's name above it (resolved from Contacts.app). Unnamed groups synthesize a name from participant first names.
Attachments¶
Click the clip icon (paperclip) in the compose box and select a file or image.
Supported types: images (JPEG, PNG, HEIC, GIF), videos (MP4, MOV), and other file attachments that Messages.app can send.
The bridge hands the file to Messages.app via AppleScript (send file). Large files may take a few seconds to appear in the conversation after you click Send.
HEIC images¶
HEIC images are converted to JPEG for display in the web UI using macOS sips. The conversion is cached — the original HEIC attachment is never modified.
Tapback reactions¶
On macOS 13 Ventura and later, you can send tapback reactions from the web UI:
- Hover over a message bubble — reaction icons appear below it
- Click the reaction you want (❤️ 👍 👎 😂 ‼️ ❓ 🎉)
On macOS 12 Monterey, the reaction icons are visible but don't work — Messages.app's AppleScript API for reactions requires macOS 13+. The web UI hides them on macOS 12.
Sending limits and anti-spam fuse¶
chatwire tracks outbound send volume and pauses sends if an abnormal rate is detected. The fuse has six steps:
| Step | State | What you see |
|---|---|---|
| 0 | Normal | Nothing — sends work normally |
| 1-3 | Counting / Cooldown | Amber banner with countdown timer above compose box |
| 4-6 | Lockout | Red warning bar across all pages; compose box replaced with lockout notice |
During a cooldown (steps 1-3), wait for the countdown to reach 0. Sends resume automatically.
During a lockout (steps 4-6), you need an unlock code. See Security for the fuse unlock flow.
Hiatus mode¶
Hiatus mode pauses all outbound sends. Use it when you want messages to stop going out but don't want to stop the bridge.
Enable hiatus: - Settings → Anti-spam → Enable hiatus mode - Or: click the Hiatus button in the sidebar footer (if pinned)
During hiatus: - A yellow hiatus indicator appears in the sidebar - The compose box shows a hiatus notice instead of the usual input
End hiatus: - Click the End button next to the sidebar hiatus indicator - Or: Settings → Anti-spam → Disable
Hiatus supports a configurable list of reminder contacts — people chatwire will nudge you about when hiatus ends.
macOS version notes¶
| Feature | macOS 12 | macOS 13+ |
|---|---|---|
| Send iMessage text | ✅ | ✅ |
| Send SMS/RCS text | ✅ | ✅ |
| Send attachments | ✅ | ✅ |
| Send tapback reactions | ❌ | ✅ |
| Edit sent messages | ❌ | ✅ |
| Unsend messages | ❌ | ✅ |
macOS 13 Ventura added the react with reaction, edit message, and unsend AppleScript commands. On macOS 12, chatwire can only send text and attachments.
See the architecture docs for the full compatibility matrix.