OpenClaw

OpenClaw Signal Kanal

Messaging
Schwer

Verbinden Sie OpenClaw mit Signal ueber signal-cli — eine Open-Source-Befehlszeilenschnittstelle eines Drittanbieters fuer das Signal-Protokoll. Diese Integration bietet datenschutzorientiertes KI-Messaging mit vollstaendiger Ende-zu-Ende-Verschluesselung. OpenClaw kommuniziert mit einem signal-cli-Daemon ueber HTTP JSON-RPC und Server-Sent Events, sodass Ihr KI-Assistent Nachrichten auf Signal senden und empfangen kann. Eine dedizierte Telefonnummer ist fuer das Bot-Konto erforderlich.

Kurzinfo
SchwierigkeitsgradSchwer
KategorieMessaging
Unterstützte Funktionen4 / 6

Signal Unterstützte Funktionen

Textnachrichten

Unterstützt

Medien & Dateien

Unterstützt

Reaktionen

Unterstützt

Threads

Nicht unterstützt

Sprachnachrichten

Nicht unterstützt

Gruppenchat

Unterstützt

Signal Voraussetzungen

  • Eine dedizierte Telefonnummer fuer das Signal-Bot-Konto (getrennt von Ihrer persoenlichen Nummer)
  • Java Runtime Environment (JRE 25+) auf Ihrem Server installiert
  • signal-cli installiert und in Ihrem PATH verfuegbar
  • OpenClaw Gateway laeuft und ist konfiguriert
  • Ein bestehendes Signal-Konto zum Verknuepfen des Bots (oder eine Neuregistrierung)

Signal Schnelleinrichtung

1

signal-cli installieren

Laden Sie signal-cli vom offiziellen GitHub-Repository herunter und installieren Sie es. Es erfordert Java 25 oder hoeher. Ueberpruefen Sie die Installation, indem Sie 'signal-cli --version' in Ihrem Terminal ausfuehren.

2

Signal-Konto verknuepfen oder registrieren

Verknuepfen Sie signal-cli mit einem bestehenden Signal-Konto, indem Sie 'signal-cli link -n "OpenClaw"' ausfuehren und den QR-Code von einem anderen Geraet scannen. Alternativ registrieren Sie ein neues Konto mit 'signal-cli -a +15551234567 register'. Verwenden Sie eine dedizierte Nummer — die Ausfuehrung auf Ihrem persoenlichen Konto verursacht Selbstnachrichten-Schleifen.

3

Signal-Kanalkonfiguration hinzufuegen

Fuegen Sie die Signal-Kanalkonfiguration zu ~/.openclaw/openclaw.json hinzu. Setzen Sie das Feld 'account' auf die E.164-Telefonnummer Ihres Bots und konfigurieren Sie die dmPolicy (pairing, allowlist oder open), um zu steuern, wer Ihrem Assistenten Nachrichten senden kann.

4

Gateway starten und Testnachricht senden

Starten Sie den Gateway-Prozess. OpenClaw startet automatisch den signal-cli-Daemon. Senden Sie eine Nachricht an die Bot-Nummer von einem anderen Signal-Konto. Bei Verwendung der Standard-Pairing-Richtlinie genehmigen Sie den Absender ueber 'openclaw pairing approve signal <code>'.

Signal Konfigurationsbeispiel

config.json
{
  "channels": {
    "signal": {
      "enabled": true,
      "account": "+15551234567",
      "dmPolicy": "pairing"
    }
  }
}

Signal Detaillierte Dokumentation

Architekturuebersicht

OpenClaw verbindet sich ueber signal-cli mit Signal — einen Java-basierten Befehlszeilen-Client, der das Signal-Protokoll implementiert. Die Architektur verwendet eine HTTP JSON-RPC-Schnittstelle mit Server-Sent Events (SSE) fuer die Echtzeit-Nachrichtenzustellung. Standardmaessig startet OpenClaw beim Gateway-Start automatisch einen signal-cli-Daemon-Prozess. Der Daemon uebernimmt alle Signal-Protokoll-Operationen (Verschluesselung, Schluesselaustausch, Nachrichtenversand/-empfang), waehrend OpenClaw ueber eine lokale HTTP-API mit ihm kommuniziert. Dadurch bleibt die Signal-Protokollschicht vollstaendig von der KI-Logik getrennt. Alternativ koennen Sie signal-cli als externen Daemon ausfuehren und OpenClaw ueber die httpUrl-Konfiguration darauf verweisen — nuetzlich fuer die unabhaengige Verwaltung von signal-cli oder den Betrieb auf einem anderen Host.
Der automatisch gestartete Daemon bindet standardmaessig an 127.0.0.1:8080. Aendern Sie httpHost und httpPort, wenn Sie eine andere Adresse benoetigen.
Die externe Ausfuehrung von signal-cli gibt Ihnen mehr Kontrolle ueber Updates und Lebenszyklus-Verwaltung. Setzen Sie httpUrl auf die vollstaendige Daemon-URL, um den automatischen Start zu deaktivieren.

Signal-Konto-Einrichtung

Ihr Bot benoetigt ein dediziertes Signal-Konto. Verwenden Sie nicht Ihre persoenliche Nummer — Signal ignoriert selbst gesendete Nachrichten, und der gleichzeitige Betrieb von persoenlichem und Bot-Konto auf derselben Nummer verursacht Routing-Konflikte. Zwei Optionen fuer die Konto-Einrichtung: • Mit bestehendem Geraet verknuepfen — Fuehren Sie 'signal-cli link -n "OpenClaw"' aus, um eine Geraeteverknuepfungs-URI zu generieren. Scannen Sie den QR-Code aus der primaeren Signal-App. Dies ist der empfohlene Ansatz, da er am einfachsten ist. • Neue Registrierung — Fuehren Sie 'signal-cli -a +15551234567 register' aus, um ein neues Signal-Konto direkt zu registrieren. Sie muessen die Nummer per SMS oder Sprachanruf verifizieren. Nach der Verknuepfung oder Registrierung speichert signal-cli seine Anmeldedaten und Schluessel lokal. Diese bleiben ueber Neustarts hinweg erhalten.
openclaw.json
{
  "channels": {
    "signal": {
      "account": "+15551234567",
      "cliPath": "/usr/local/bin/signal-cli"
    }
  }
}
Vermeiden Sie den Betrieb des Bots auf Ihrer persoenlichen Signal-Nummer. Signals Selbstnachrichten-Schutz ignoriert Nachrichten, die an Sie selbst gesendet werden, und der Bot wird nicht korrekt funktionieren.

Externer Daemon-Modus

Fuer fortgeschrittene Bereitstellungen koennen Sie signal-cli als eigenstaendigen Daemon-Prozess ausserhalb von OpenClaw ausfuehren. Dies ist nuetzlich, wenn Sie signal-cli-Updates unabhaengig verwalten, es auf einem separaten Rechner ausfuehren oder einen einzelnen Daemon fuer mehrere Dienste teilen moechten. Starten Sie den Daemon manuell mit: signal-cli -a +15551234567 daemon --http=127.0.0.1:8080 Verweisen Sie dann OpenClaw darauf, indem Sie httpUrl setzen. Wenn httpUrl konfiguriert ist, ueberspringt OpenClaw den automatischen Daemon-Start und verbindet sich stattdessen mit dem bestehenden Prozess.
openclaw.json
{
  "channels": {
    "signal": {
      "account": "+15551234567",
      "httpUrl": "http://127.0.0.1:8080/api/v1/rpc"
    }
  }
}
Bei Verwendung eines externen Daemons stellen Sie sicher, dass er vor dem Gateway gestartet wird. OpenClaw wartet bis zu startupTimeoutMs (maximal 120 Sekunden) darauf, dass der Daemon verfuegbar wird.

DM-Richtlinien

DM-Richtlinien (Direktnachrichten) steuern, wer mit Ihrem KI-Assistenten in privaten Chats interagieren kann. OpenClaw unterstuetzt vier Richtlinien: • pairing (Standard) — Neue Kontakte erhalten einen zufaelligen Pairing-Code, wenn sie dem Bot zum ersten Mal schreiben. Der Code laeuft nach 1 Stunde ab. Genehmigen Sie ueber 'openclaw pairing approve signal <code>' in Ihrem Terminal. Nach der Genehmigung koennen sie frei chatten. • allowlist — Nur Telefonnummern oder UUIDs, die in allowFrom aufgelistet sind, koennen dem Bot Nachrichten senden. Alle anderen werden stillschweigend ignoriert. Verwenden Sie das E.164-Format fuer Telefonnummern oder 'uuid:<id>' fuer UUID-basierte Kontakte. • open — Jeder, der dem Bot eine Nachricht sendet, erhaelt eine Antwort. Erfordert das Hinzufuegen von '*' zur allowFrom-Liste als Sicherheitsbestaetigung. Mit Vorsicht verwenden. • disabled — Die DM-Funktionalitaet ist vollstaendig deaktiviert.
openclaw.json
{
  "channels": {
    "signal": {
      "dmPolicy": "allowlist",
      "allowFrom": ["+15551234567", "uuid:a1b2c3d4-e5f6-7890-abcd-ef1234567890"]
    }
  }
}
Kontakte, die Signal ohne Freigabe ihrer Telefonnummer registriert haben, erscheinen als 'uuid:<id>' in der allowFrom-Liste. Pruefen Sie die Gateway-Logs, um ihre UUID zu finden.
Pro-Kontakt-Verlaufslimits koennen ueber dms["<phone_or_uuid>"].historyLimit gesetzt werden, um das globale dmHistoryLimit zu ueberschreiben.

Gruppenchat-Verwaltung

OpenClaw unterstuetzt Signal-Gruppenchats mit konfigurierbarer Zugriffskontrolle: • open — Nachrichten von allen Gruppenmitgliedern akzeptieren • allowlist — Nur genehmigte Absender (ueber groupAllowFrom) koennen den Bot ausloesen • disabled — Alle Gruppennachrichten ignorieren Gruppenkonversationen sind vollstaendig von DMs isoliert. Nachrichten werden als 'agent:<agentId>:signal:group:<groupId>' gekennzeichnet, um separaten Kontext und Verlauf pro Gruppe aufrechtzuerhalten. Sie koennen historyLimit pro Gruppe konfigurieren, um zu steuern, wie viele Nachrichten als KI-Kontext einbezogen werden (Standard 50, auf 0 setzen um den Verlauf zu deaktivieren).
openclaw.json
{
  "channels": {
    "signal": {
      "groupPolicy": "open",
      "historyLimit": 50
    }
  }
}

Datenschutz & Ende-zu-Ende-Verschluesselung

Signal ist der Goldstandard fuer private Nachrichtenuebermittlung. Alle Nachrichten zwischen dem Bot und Kontakten sind mit dem Signal-Protokoll (Double-Ratchet-Algorithmus + X3DH-Schluesselvereinbarung) Ende-zu-Ende-verschluesselt. OpenClaw sieht niemals Klartextnachrichten waehrend der Uebertragung — die Entschluesselung erfolgt lokal im signal-cli-Prozess auf Ihrem Server. Wichtige Datenschutzeigenschaften: • Nachrichten werden Client-zu-Client verschluesselt — Signals Server koennen sie nicht lesen • signal-cli speichert Verschluesselungsschluessel lokal auf Ihrem Server • Keine Daten passieren die Infrastruktur von Anthropic, OpenAI oder einem anderen Drittanbieter-KI-Anbieter (Nachrichten werden lokal entschluesselt, von Ihrem selbst gehosteten Gateway verarbeitet, und nur der Konversationskontext wird an Ihren konfigurierten KI-Anbieter gesendet) • Story-Ereignisse koennen mit ignoreStories: true vollstaendig ignoriert werden
Fuer maximalen Datenschutz kombinieren Sie Signal mit einem lokal gehosteten LLM-Anbieter (z.B. Ollama), um alle Daten vollstaendig auf Ihrer Infrastruktur zu halten.

Reaktionen

OpenClaw unterstuetzt das Senden und Empfangen von Emoji-Reaktionen auf Signal-Nachrichten. Reaktionen sind nuetzlich fuer Bestaetigungen (um dem Benutzer zu zeigen, dass seine Nachricht empfangen wurde) und fuer interaktive Agentenverhalten. Die Reaktionssyntax verwendet das Nachrichtentool mit Zielen im E.164-Format, UUID-Format oder Gruppenformat: • DM-Reaktion: target=+15551234567 oder target=uuid:<id> • Gruppenreaktion: target=signal:group:<groupId> mit targetAuthor=uuid:<sender> Konfigurieren Sie das Reaktionsverhalten global oder pro Konto: • actions.reactions — Reaktionsfaehigkeit aktivieren/deaktivieren (Standard true) • reactionLevel — off/ack (deaktiviert) oder minimal/extensive (aktiviert mit Anleitung)
openclaw.json
{
  "channels": {
    "signal": {
      "reactionLevel": "minimal"
    }
  }
}

Medien & Anhaenge

OpenClaw verarbeitet Mediendateien auf Signal einschliesslich Bilder, Dokumente, Audio und Video. Medien werden ueber signal-cli als Base64-kodierte Daten uebertragen. Eingehende Medien werden automatisch heruntergeladen und verarbeitet, es sei denn, ignoreAttachments ist auf true gesetzt. Ausgehende Medien werden vor dem Senden als Base64 von signal-cli abgerufen. Das Standard-Dateigroessenlimit betraegt 8 MB (mediaMaxMb). Signal selbst unterstuetzt groessere Dateien, aber der Base64-Kodierungsaufwand und die Verarbeitungszeit machen 8 MB zu einem praktischen Standardwert.
openclaw.json
{
  "channels": {
    "signal": {
      "mediaMaxMb": 8,
      "ignoreAttachments": false
    }
  }
}

Tippindikatoren & Lesebestaetigungen

OpenClaw sendet Tippindikatoren waehrend der KI-Antwortgenerierung, um ein natuerliches Gespraechsgefuehl aufrechtzuerhalten. Das Gateway ruft den sendTyping-Endpunkt von signal-cli auf und aktualisiert den Indikator waehrend der Antwortgenerierung regelmaessig. Lesebestaetigungen koennen fuer genehmigte DM-Kontakte weitergeleitet werden, wenn sendReadReceipts aktiviert ist. Dies informiert Absender, dass ihre Nachricht verarbeitet wurde. Hinweis: Gruppen-Lesebestaetigungen werden von signal-cli nicht unterstuetzt.
openclaw.json
{
  "channels": {
    "signal": {
      "sendReadReceipts": true
    }
  }
}

Text-Aufteilung & Zustellung

Bei langen KI-Antworten teilt OpenClaw den Text automatisch in mehrere Nachrichten auf. Die Standard-Aufteilungsgroesse betraegt 4.000 Zeichen pro Nachricht. Zwei Aufteilungsmodi sind verfuegbar: • length (Standard) — Harte Aufteilung am Zeichenlimit • newline — Zuerst an Absatzgrenzen aufteilen, dann das Zeichenlimit anwenden Zustellungsziele verwenden E.164-Telefonnummern, UUIDs oder Gruppen-IDs: • DMs: signal:+15551234567 oder einfache E.164-Nummer • UUID-DMs: uuid:<id> oder einfache UUID • Gruppen: signal:group:<groupId>
openclaw.json
{
  "channels": {
    "signal": {
      "textChunkLimit": 4000,
      "chunkMode": "newline"
    }
  }
}

Signal Konfigurationsreferenz

enabled
Type: booleanDefault: true

Signal-Kanal aktivieren oder deaktivieren

account
Type: stringDefault: ""

Telefonnummer des Bots im E.164-Format (z.B. +15551234567). Erforderlich

cliPath
Type: stringDefault: "signal-cli"

Pfad zur ausfuehrbaren signal-cli-Datei

httpUrl
Type: stringDefault: ""

Vollstaendige URL eines externen signal-cli-Daemons. Wenn gesetzt, wird der automatische Start deaktiviert

httpHost
Type: stringDefault: "127.0.0.1"

Host-Adresse, an die sich der automatisch gestartete signal-cli-Daemon bindet

httpPort
Type: numberDefault: 8080

Port, an den sich der automatisch gestartete signal-cli-Daemon bindet

autoStart
Type: booleanDefault: true

Ob der signal-cli-Daemon beim Gateway-Start automatisch gestartet werden soll

startupTimeoutMs
Type: numberDefault: 30000

Maximale Wartezeit (ms) bis der signal-cli-Daemon verfuegbar wird. Maximal 120000

dmPolicy
Type: stringDefault: "pairing"

Steuert, wer dem Bot DMs senden kann. Optionen: pairing, allowlist, open, disabled

allowFrom
Type: string[]Default: []

Telefonnummern (E.164) oder uuid:<id>-Kennungen, die dem Bot Nachrichten senden duerfen

dmHistoryLimit
Type: numberDefault: 50

Anzahl der letzten DM-Nachrichten, die als KI-Kontext pro Konversation einbezogen werden

groupPolicy
Type: stringDefault: "disabled"

Gruppenchat-Richtlinie. Optionen: disabled, allowlist, open

groupAllowFrom
Type: string[]Default: []

Telefonnummern oder UUIDs, die den Bot in Gruppen ausloesen duerfen (wenn groupPolicy auf allowlist steht)

historyLimit
Type: numberDefault: 50

Maximale Gruppennachrichten, die als KI-Kontext einbezogen werden. Auf 0 setzen zum Deaktivieren

sendReadReceipts
Type: booleanDefault: false

Ob Lesebestaetigungs-Signale fuer genehmigte DM-Kontakte weitergeleitet werden

textChunkLimit
Type: numberDefault: 4000

Maximale Zeichen pro ausgehender Nachricht vor der Aufteilung

chunkMode
Type: stringDefault: "length"

Text-Aufteilungsmodus. Optionen: length (harte Aufteilung), newline (absatzorientiert)

mediaMaxMb
Type: numberDefault: 8

Maximale Mediendateigroesse in Megabyte fuer ein-/ausgehende Anhaenge

ignoreAttachments
Type: booleanDefault: false

Herunterladen eingehender Medienanhaenge ueberspringen

ignoreStories
Type: booleanDefault: false

Signal-Story-Ereignisse vollstaendig ignorieren

receiveMode
Type: stringDefault: ""

Nachrichtenempfangsmodus. Optionen: on-start (beim Start abrufen), manual

configWrites
Type: booleanDefault: true

/config-Befehle zur Laufzeitaenderung von Kanaleinstellungen erlauben

reactionLevel
Type: stringDefault: "ack"

Bot-Reaktionsfaehigkeit. Optionen: off, ack, minimal, extensive

Signal Häufig gestellte Fragen

Signal Fehlerbehebung

signal-cli startet nicht mit Java-Fehlern

Java ist nicht installiert oder die installierte Version ist zu alt. signal-cli erfordert Java 25 oder hoeher.

Installieren Sie OpenJDK 25+ auf Ihrem Server. Ueberpruefen Sie mit 'java --version'. Wenn mehrere Java-Versionen installiert sind, stellen Sie sicher, dass die richtige in Ihrem PATH ist oder setzen Sie JAVA_HOME. Ueberpruefen Sie auch, ob signal-cli korrekt installiert ist, indem Sie 'signal-cli --version' ausfuehren.
Bot antwortet auf keine Nachrichten

Das Feld account koennte falsch sein, der signal-cli-Daemon laeuft moeglicherweise nicht oder der Absender wurde nicht ueber Pairing genehmigt.

Ueberpruefen Sie, ob die Kontonummer mit dem registrierten signal-cli-Konto uebereinstimmt (E.164-Format mit Laendervorwahl). Fuehren Sie 'openclaw status' und 'openclaw gateway status' aus, um zu ueberpruefen, ob der Daemon laeuft. Bei Verwendung der Pairing-Richtlinie pruefen Sie ausstehende Pairings mit 'openclaw pairing list signal' und genehmigen Sie den Absender.
DMs werden auch nach Genehmigung ignoriert

Der Absender befindet sich moeglicherweise nicht in der allowFrom-Liste (bei Verwendung der Allowlist-Richtlinie), oder das Bezeichnerformat des Absenders stimmt nicht ueberein.

Pruefen Sie die Gateway-Logs auf die Kennung des Absenders. Einige Signal-Benutzer registrieren sich ohne Freigabe ihrer Telefonnummer — sie erscheinen als 'uuid:<id>' statt als Telefonnummer. Fuegen Sie die korrekte Kennung zu allowFrom hinzu. Fuehren Sie 'openclaw channels status --probe' fuer detaillierte Kanal-Diagnosen aus.
Gruppennachrichten werden nicht empfangen

groupPolicy ist auf 'disabled' (Standard) gesetzt, oder die Gruppe befindet sich nicht in der Allowlist.

Setzen Sie groupPolicy auf 'open', um alle Gruppennachrichten zu akzeptieren, oder verwenden Sie 'allowlist' und fuegen Sie die Gruppen-ID zu groupAllowFrom hinzu. Pruefen Sie die Gateway-Logs auf die Gruppen-ID, wenn eine Gruppennachricht empfangen wird.
Verbindung zum externen Daemon fehlgeschlagen (httpUrl nicht erreichbar)

Der signal-cli-Daemon laeuft nicht, die URL ist falsch oder eine Firewall blockiert die Verbindung.

Stellen Sie sicher, dass der Daemon laeuft und auf dem erwarteten Host:Port lauscht. Testen Sie die Konnektivitaet mit 'curl http://127.0.0.1:8080/api/v1/rpc'. Ueberpruefen Sie die Firewall-Regeln, wenn Sie maschinenuebergreifend arbeiten. Stellen Sie sicher, dass der Daemon mit dem korrekten --http-Flag gestartet wurde, das mit Ihrer httpUrl-Konfiguration uebereinstimmt.