Tweety Bird
Install

Docs

Pair your phone

The one-time code, adding a second device, revoking a device, and choosing the messaging app.

How pairing works

Your Mac answers only accounts on its allowlist. Pairing is how an account gets on it: the Mac prints a six-digit code, you send that code from the account you want to use, and that account is added. The code works once and expires in 15 minutes.

Messages from anyone else never reach an agent. On Telegram, strangers get one line telling them the bot is private. On the other apps they get nothing.

Approvals follow the same rule. An Approve button pressed by an account that is not paired does nothing.

Add a second device

tweetybird pair

This prints a fresh code. Send it from the new account (a second phone, an iPad, a partner who is on call). Both accounts can now text and approve.

See and revoke devices

tweetybird pair list
tweetybird pair revoke <id>

Revoking takes effect on the next message. If a phone is lost, revoke it, then rotate the bot token in BotFather and run tweetybird setup to paste the new one.

Choosing the app

AppWhat setup needsApprovals
TelegramA bot token from BotFather. Setup walks you through it. The slash-command menu fills in automatically.Buttons
iMessageThe imsg tool (brew install steipete/tap/imsg) and Full Disk Access for Node in System Settings, Privacy and Security.Reply yes, no, or always
Slack DMA Slack app with a bot token (xoxb-, scopes chat:write, im:history, im:read, files:read, files:write) and an app token (xapp-) with Socket Mode and Interactivity on.Buttons
DiscordA bot token with the Message Content intent on. DM the bot.Reply yes, no, or always
WhatsApptweetybird setup --whatsapp shows a QR code; scan it from WhatsApp, Linked devices.Reply yes, no, or always

Every app pairs the same way: send the six-digit code from the account you want. On apps without buttons, reply "yes", "no", or "always" to an approval.

Telegram is the recommended default. It has the slash-command menu, tap-to-approve buttons, message edits for progress, and a 49MB file limit.