iResponder
Monitor iMessage/SMS conversations and auto-respond based on configurable rules, AI prompts, and rate-limiting conditions. Use when you need to automatically reply to specific contacts with AI-generat
Monitor iMessage/SMS conversations and auto-respond based on configurable rules, AI prompts, and rate-limiting conditions. Use when you need to automatically reply to specific contacts with AI-generat
Real data. Real impact.
Growing
Developers
Per week
Open source
Skills give you superpowers. Install in 30 seconds.
Automatically respond to iMessages/SMS from specific contacts using AI-generated replies that match your voice and conversation context.
Before using this skill, ensure you have:
brew install steipete/tap/imsgcd ~/clawd/imsg-autoresponder/scripts node manage.js add "+15551234567" "Reply with a middle finger emoji" "Best Friend" node manage.js add "+15559876543" "You are my helpful assistant. Reply warmly and briefly, as if I'm responding myself. Keep it under 160 characters." "Mom"
node watcher.js
The watcher runs in the foreground and logs to
~/clawd/logs/imsg-autoresponder.log.
# Start in background nohup node ~/clawd/imsg-autoresponder/scripts/watcher.js > /dev/null 2>&1 &Or use screen/tmux
screen -S imsg-watcher node ~/clawd/imsg-autoresponder/scripts/watcher.js
Ctrl+A, D to detach
Config file:
~/clawd/imsg-autoresponder.json
{ "enabled": true, "defaultMinMinutesBetweenReplies": 15, "watchList": [ { "identifier": "+15551234567", "name": "Best Friend", "prompt": "Reply with a middle finger emoji", "minMinutesBetweenReplies": 10, "enabled": true } ] }
The auto-responder can be managed directly through Telegram using slash commands or natural language.
Both space and underscore formats are supported:
/autorespond list OR /autorespond_list /autorespond status OR /autorespond_status /autorespond add OR /autorespond_add <number> <name> <prompt> /autorespond remove OR /autorespond_remove <number> /autorespond edit OR /autorespond_edit <number> <prompt> /autorespond delay OR /autorespond_delay <number> <minutes> /autorespond history OR /autorespond_history <number> /autorespond test OR /autorespond_test <number> <message> /autorespond toggle OR /autorespond_toggle /autorespond restart OR /autorespond_restartBulk Operations: /autorespond set-all-delays OR /autorespond_set_all_delays <minutes> /autorespond enable-all OR /autorespond_enable_all /autorespond disable-all OR /autorespond_disable_all
Time Windows: /autorespond set-time-window OR /autorespond_set_time_window <number> <start> <end> /autorespond clear-time-windows OR /autorespond_clear_time_windows <number>
Keyword Triggers: /autorespond add-keyword OR /autorespond_add_keyword <number> <keyword> /autorespond remove-keyword OR /autorespond_remove_keyword <number> <keyword> /autorespond clear-keywords OR /autorespond_clear_keywords <number>
Statistics & Limits: /autorespond stats OR /autorespond_stats [<number>] /autorespond set-daily-cap OR /autorespond_set_daily_cap <number> <max>
Examples:
/autorespond_list /autorespond_status /autorespond_edit +15551234567 Be more sarcastic /autorespond_delay +15551234567 30 /autorespond_history +15551234567 /autorespond_set_time_window +15551234567 09:00 22:00 /autorespond_clear_time_windows +15551234567 /autorespond_add_keyword +15551234567 urgent /autorespond_add_keyword +15551234567 help /autorespond_clear_keywords +15551234567 /autorespond_stats /autorespond_stats +15551234567 /autorespond_set_daily_cap +15551234567 10 /autorespond_set_all_delays 30 /autorespond_disable_all /autorespond_restart
You can also just ask naturally:
The agent will understand and execute the command using the
telegram-handler.js script.
cd ~/clawd/imsg-autoresponder/scriptsList all contacts
node manage.js list
Add contact
node manage.js add "+15551234567" "Your custom prompt here" "Optional Name"
Remove contact
node manage.js remove "+15551234567"
Enable/disable contact
node manage.js enable "+15551234567" node manage.js disable "+15551234567"
Set custom delay for contact (in minutes)
node manage.js set-delay "+15551234567" 30
Toggle entire system on/off
node manage.js toggle
imsg watchimsg send~/clawd/logs/imsg-autoresponder.logResponse times are tracked in
~/clawd/data/imsg-autoresponder-state.json:
{ "lastResponses": { "+15551234567": 1706453280000 } }
This ensures rate limiting works correctly across restarts.
Prompts define how the AI should respond to each contact. Be specific!
Examples:
"Reply with a middle finger emoji""You are my helpful assistant. Reply warmly and briefly, as if I'm responding myself. Keep it under 160 characters."
"You are my sarcastic friend. Reply with witty, slightly snarky responses. Keep it short."
"Politely decline any requests and say I'm busy. Be brief but friendly."
The AI will see:
imsg CLI installed (brew install steipete/tap/imsg)~/.clawdbot/clawdbot.json or ANTHROPIC_API_KEY env var)curl (pre-installed on macOS)enabled: false in config or node manage.js disable <number>node manage.js toggleWatcher not responding:
~/clawd/logs/imsg-autoresponder.log for errorsimsg watch works manually: imsg watch --jsonnode manage.js listRate limited too aggressively:
node manage.js set-delay "+15551234567" 5defaultMinMinutesBetweenReplies in configAI responses are off:
When the user uses slash commands or natural language about the auto-responder, use the
telegram-handler.js script.
| User Input | Normalize To | Handler Call |
|---|---|---|
or | list | |
or | status | |
or | add | |
or | remove | |
or | edit | |
or | delay | |
or | history | |
or | test | |
or | toggle | |
or | restart | |
or | set-all-delays | |
or | enable-all | |
or | disable-all | |
or | set-time-window | |
or | clear-time-windows | |
or | add-keyword | |
or | remove-keyword | |
or | clear-keywords | |
or | stats | |
or | set-daily-cap | |
Processing steps:
/autorespond or /autorespond_ prefixnode telegram-handler.js listnode telegram-handler.js add <number> <name> <prompt>node telegram-handler.js edit <number> <prompt>node telegram-handler.js delay <number> <minutes>node telegram-handler.js remove <number>node telegram-handler.js statusnode telegram-handler.js history <number>node telegram-handler.js restartnode telegram-handler.js toggleContact resolution:
+15551234567)After config changes: Always remind the user to restart the watcher if the command output mentions it.
Check status:
/autorespond_status
View logs:
tail -f ~/clawd/logs/imsg-autoresponder.log
Restart:
/autorespond_restart
"OPENAI_API_KEY not found"
~/.clawdbot/clawdbot.json:
{ "skills": { "openai-whisper-api": { "apiKey": "sk-proj-YOUR_KEY_HERE" } } }
Permission errors
imsg chats --json works manuallyMessages not detected
/autorespond_list/autorespond_statusDuplicate responses
/autorespond_restartGenerate actual AI responses without sending (preview mode):
/autorespond_test +15551234567 Hey what's up?
This will:
Perfect for testing new prompts before going live!
โ ๏ธ Important: This tool sends messages on your behalf automatically.
/autorespond_history/autorespond_toggleNo automatic installation available. Please visit the source repository for installation instructions.
View Installation Instructions1,500+ AI skills, agents & workflows. Install in 30 seconds. Part of the Torly.ai family.
ยฉ 2026 Torly.ai. All rights reserved.