iMessage (Legacy: imsg)¶
Der Kanal imsg ist eine Legacy-Integration über eine externe CLI und kann in einer zukünftigen Version entfernt werden.
Status: Legacy-Integration über externe CLI. Der Gateway startet imsg rpc (JSON-RPC über stdio).
Schnellsetup (Einsteiger)¶
`brew install steipete/tap/imsg`
</Step>
<Step title="Configure OpenClaw">
{
channels: {
imessage: {
enabled: true,
cliPath: "/usr/local/bin/imsg",
dbPath: "/Users/<you>/Library/Messages/chat.db",
},
},
}
</Step>
<Step title="Start gateway">
openclaw gateway
</Step>
<Step title="Approve first DM pairing (default dmPolicy)">
`openclaw pairing approve imessage <CODE>`
```
Pairing requests expire after 1 hour.
</Step>
</Steps>
```
channels.imessage.cliPath auf einen Wrapper, der imsg auf dem entfernten macOS-Host über SSH ausführt. OpenClaw benötigt nur stdio.
#!/usr/bin/env bash
exec ssh -T gateway-host imsg "$@"
```
Recommended config when attachments are enabled:
```
{
channels: {
imessage: {
cliPath: "~/imsg-ssh", // SSH wrapper to remote Mac
remoteHost: "user@gateway-host", // for SCP file transfer
includeAttachments: true,
},
},
}
```
Wenn `remoteHost` nicht gesetzt ist, versucht OpenClaw, dies durch Parsen des SSH-Befehls in Ihrem Wrapper-Skript automatisch zu erkennen.
```
Requirements and permissions (macOS)¶
- iMessage-Kanal auf Basis von
imsgunter macOS. - Vollzugriff auf die Festplatte für OpenClaw +
imsg(Zugriff auf die Nachrichten-Datenbank). - Automationsberechtigung beim Senden.
imsg chats --limit 1
# or
imsg send <handle> "test"
Access control and routing¶
channels.imessage.dmPolicy controls direct messages:
```
`channels.imessage.groupPolicy`: `open | allowlist | disabled` (Standard: Allowlist).
```
channels.imessage.groupAllowFrom: Gruppen-Absender-Allowlist.
```
{
channels: {
imessage: {
enabled: true,
accounts: {
bot: {
name: "Bot",
enabled: true,
cliPath: "/path/to/imsg-bot",
dbPath: "/Users/<bot-macos-user>/Library/Messages/chat.db",
},
},
},
},
}
```
session.dmScope=main, iMessage DMs collapse into the agent main session.
- Group sessions are isolated (agent:<agentId>Gruppen:<chat_id>).
- Replies route back to iMessage using originating channel/target metadata.
```
Wenn ein Thread mit mehreren Teilnehmern mit `is_group=false` eingeht, können Sie ihn dennoch isolieren, indem Sie `chat_id` unter Verwendung von `channels.imessage.groups` konfigurieren (siehe „Gruppenähnliche Threads“ unten).
```
Deployment patterns¶
```
Verweisen Sie `channels.imessage.accounts.bot.cliPath` auf einen SSH-Wrapper, der `imsg` als Bot-Benutzer ausführt.
```
```
Wenn der Gateway auf einem Linux-Host/VM läuft, iMessage jedoch auf einem Mac laufen muss, ist Tailscale die einfachste Brücke: Der Gateway spricht über das Tailnet mit dem Mac, führt `imsg` per SSH aus und lädt Anhänge per SCP zurück.
```
{
channels: {
imessage: {
enabled: true,
cliPath: "~/.openclaw/scripts/imsg-ssh",
remoteHost: "bot@mac-mini.tailnet-1234.ts.net",
includeAttachments: true,
dbPath: "/Users/bot/Library/Messages/chat.db",
},
},
}
#!/usr/bin/env bash
exec ssh -T bot@mac-mini.tailnet-1234.ts.net imsg "$@"
```
Use SSH keys so both SSH and SCP are non-interactive.
```
channels.imessage.cliPath, channels.imessage.dbPath) anstelle der accounts-Map.
```
Each account can override fields such as `cliPath`, `dbPath`, `allowFrom`, `groupPolicy`, `mediaMaxMb`, and history settings.
```
Media, chunking, and delivery targets¶
channels.imessage.mediaMaxMb begrenzt (Standard 16).
channels.imessage.chunkMode="newline", um an Leerzeilen (Absatzgrenzen) vor der Längensegmentierung zu trennen.
```
- `chat_id:123` (recommended for stable routing)
- `chat_guid:...`
- `chat_identifier:...`
Handle targets are also supported:
- `imessage:+1555...`
- `sms:+1555...`
- `user@example.com`
```
imsg chats --limit 20
Konfigurationsschreibzugriffe¶
Standardmäßig darf iMessage Konfigurationsaktualisierungen schreiben, die durch /config set|unset ausgelöst werden (erfordert commands.config: true).
Deaktivieren mit:
{
channels: { imessage: { configWrites: false } },
}
Troubleshooting¶
imsg rpc --help
openclaw channels status --probe
```
If probe reports RPC unsupported, update `imsg`.
```
```
`channels.imessage.groupPolicy = open | allowlist | disabled`.
```
```
`channels.imessage.groupAllowFrom` steuert, wer in Gruppen auslösen darf, wenn `allowlist` gesetzt ist.
```
```
#!/usr/bin/env bash
set -euo pipefail
# Run an interactive SSH once first to accept host keys:
# ssh <bot-macos-user>@localhost true
exec /usr/bin/ssh -o BatchMode=yes -o ConnectTimeout=5 -T <bot-macos-user>@localhost \
"/usr/local/bin/imsg" "$@"
```
imsg chats --limit 1
imsg send <handle> "test"
```
**Automation → Nachrichten**: Erlauben Sie dem Prozess, der OpenClaw ausführt (und/oder Ihrem Terminal), **Messages.app** für ausgehende Sendungen zu steuern.
```
Configuration reference pointers¶
- Konfigurationsreferenz (iMessage)
- Vollständige Konfiguration: Konfiguration
- Pairing
- BlueBubbles