OpenClaw

OpenClaw Matrix チャンネル

分散型
普通

OpenClaw を Matrix(オープンな連合通信プロトコル)に接続します。この統合により、AI アシスタントは任意のホームサーバー(matrix.org、Element、またはセルフホスト)上の Matrix ルームとダイレクトメッセージに参加できます。OpenClaw は Matrix Client-Server API 経由で接続し、Rust crypto SDK を通じてオプションのエンドツーエンド暗号化(E2EE)をサポートします。Matrix チャネルはプラグインとして提供され、連合、スレッド、リアクション、リッチメディアをサポートします。

基本情報
難易度普通
カテゴリ分散型
対応機能数5 / 6

Matrix 対応機能

テキストメッセージ

対応

メディア・ファイル

対応

リアクション

対応

スレッド

対応

音声メッセージ

非対応

グループチャット

対応

Matrix 前提条件

  • 任意のホームサーバー(matrix.org、Element、またはセルフホスト)でアクティブな Matrix アカウント
  • Matrix プラグインのインストール: openclaw plugins install @openclaw/matrix
  • OpenClaw Gateway が実行および設定済み
  • サーバーに Node.js 18+ がインストール済み

Matrix クイックセットアップ

1

Matrix プラグインをインストール

Matrix チャネルは個別のプラグインとして提供されます。'openclaw plugins install @openclaw/matrix' でインストールします。プラグインは npm レジストリからダウンロードされ、自動的に有効化されます。

2

Matrix 認証情報を取得

アクセストークンまたはユーザー名/パスワードが必要です。アクセストークンの場合: curl を使用してホームサーバーのログインエンドポイントを呼び出し、トークンをコピーします。ユーザー名/パスワードの場合: Gateway が自動的にログインし、トークンを ~/.openclaw/credentials/matrix/credentials.json に保存します。

3

Matrix チャネル設定を追加

ホームサーバー URL と認証情報を含む Matrix チャネル設定を ~/.openclaw/openclaw.json に追加します。環境変数 MATRIX_HOMESERVER、MATRIX_ACCESS_TOKEN、MATRIX_USER_ID、MATRIX_PASSWORD も使用できます。

4

Gateway を起動してテスト

'openclaw gateway' を実行してサービスを開始します。別のアカウントから Matrix ボットユーザーにダイレクトメッセージを送信します。デフォルトのペアリングポリシーを使用している場合、ターミナルで 'openclaw pairing approve matrix <code>' を実行して送信者を承認します。

Matrix 設定例

config.json
{
  "channels": {
    "matrix": {
      "enabled": true,
      "homeserver": "https://matrix.org",
      "accessToken": "your_access_token_here",
      "dmPolicy": "pairing"
    }
  }
}

Matrix 詳細ドキュメント

アーキテクチャ概要

OpenClaw は Client-Server API を通じて Matrix に接続し、標準の Matrix クライアントとして動作します。アーキテクチャはイベント駆動型です: ボットはロングポーリング同期リクエストを介してイベント(メッセージ、リアクション、メンバー変更)を受信し、AI で処理してから API 経由で応答を送信します。 Matrix は連合型であり、ボットはボットアカウントが登録されているホームサーバーだけでなく、グローバル Matrix ネットワーク上の任意のホームサーバーのユーザーと通信できます。これは WhatsApp や Telegram などの中央集権型プラットフォームとは根本的に異なります。 フロー: ユーザーが Matrix でメッセージを送信 → ホームサーバーが同期を通じて Gateway にルーティング → OpenClaw が AI で処理 → イベント送信 API 経由で返信 → メッセージが連合を通じて配信。
連合により、matrix.org 上のボットは任意の Matrix ホームサーバー(element.io、Mozilla のホームサーバー、またはセルフホストインスタンス)上のユーザーとチャットできます。
Matrix プラグインはデフォルトでロングポーリングを使用します。Webhook や公開 URL は不要 — Gateway がホームサーバーへのアウトバウンド接続を確立します。

認証方法

OpenClaw は Matrix の 2 つの認証方法をサポートします: 1. **アクセストークン(推奨)** — curl または Matrix クライアントを使用してホームサーバーのログイン API を呼び出してトークンを取得します。設定で channels.matrix.accessToken を設定します。システムは /whoami エンドポイント経由でユーザー ID を自動的に取得します。 2. **ユーザー名/パスワード** — channels.matrix.userId と channels.matrix.password を設定します。OpenClaw はログインエンドポイントを自動的に呼び出し、アクセストークンを ~/.openclaw/credentials/matrix/credentials.json に保存します。 環境変数は設定ファイルよりも優先されます: MATRIX_HOMESERVER、MATRIX_ACCESS_TOKEN、MATRIX_USER_ID、MATRIX_PASSWORD。
openclaw.json
# アクセストークン方式
{
  "channels": {
    "matrix": {
      "homeserver": "https://matrix.example.org",
      "accessToken": "syt_xxx..."
    }
  }
}

# ユーザー名/パスワード方式
{
  "channels": {
    "matrix": {
      "homeserver": "https://matrix.example.org",
      "userId": "@bot:example.org",
      "password": "your_password"
    }
  }
}
アクセストークンやパスワードをバージョン管理にコミットしないでください。本番環境では環境変数を使用してください。トークンが漏洩した場合、Matrix クライアント経由ですべてのデバイスからログアウトしてすべてのトークンを無効化し、新しいトークンを生成してください。

DM ポリシー

DM(ダイレクトメッセージ)ポリシーは、AI アシスタントとのやり取りを許可するユーザーを制御します。OpenClaw は 4 つのポリシーをサポートします: • pairing(デフォルト)— 未知のユーザーは初回接触時にペアリングコードを受け取ります。'openclaw pairing approve matrix <CODE>' で承認してアクセスを許可します。一度承認されると、ユーザーは自由にチャットできます。 • allowlist — channels.matrix.dm.allowFrom に明示的にリストされた Matrix ユーザー ID のみがボットにメッセージを送信できます。その他のユーザーは静かに無視されます。 • open — ボットにメッセージを送信したユーザーは誰でも応答を受け取ります。allowFrom: ["*"] が必要です。注意して使用してください。 • disabled — DM 処理が完全にオフになります。 許可リストは @user:server 形式の完全な Matrix ユーザー ID(例: @alice:matrix.org)を受け入れます。
openclaw.json
{
  "channels": {
    "matrix": {
      "dmPolicy": "allowlist",
      "dm": {
        "allowFrom": ["@alice:matrix.org", "@bob:example.org"]
      }
    }
  }
}

グループチャット(ルーム)サポート

Matrix のグループ会話は「ルーム」と呼ばれます。デフォルトでは、OpenClaw はルームに対して許可リストポリシーを使用し、メンション型のアクティベーションが必要です。ボットが参加するルームと応答方法を設定できます。 ルームはルーム ID(!roomId:server)またはルームエイリアス(#alias:server)で識別されます。自動参加動作、メンション要件、ルームごとのユーザー許可リストなど、ルーム固有の設定を構成できます。
openclaw.json
{
  "channels": {
    "matrix": {
      "groupPolicy": "allowlist",
      "groups": {
        "!abc123:matrix.org": {
          "allow": true,
          "requireMention": false,
          "users": ["@alice:matrix.org"]
        },
        "#team-chat:example.org": {
          "allow": true
        }
      },
      "autoJoin": "allowlist"
    }
  }
}
autoJoin を 'always' に設定するとすべてのルーム招待を自動的に受け入れ、'allowlist' は設定済みのルームのみ参加し、'off' は招待を無視します。
requireMention: false を使用すると、ボットのメンションなしで自動返信が有効になります。トラフィックの多いルームでは注意して使用してください。

エンドツーエンド暗号化(E2EE)

Matrix は Olm および Megolm プロトコルを通じてエンドツーエンド暗号化(E2EE)をサポートします。Rust crypto SDK 経由で暗号化を有効にすると、OpenClaw は暗号化されたルームに参加できます。 有効にすると、システムは暗号化されたメッセージを自動的に復号化し、保護されたルームでアウトバウンドメディアを暗号化し、暗号化状態を ~/.openclaw/matrix/accounts/(SQLite)に保存します。初回接続時にデバイス検証が必要です — Element または別の Matrix クライアントで検証リクエストを承認して鍵共有を有効にします。 暗号化モジュールの読み込みに失敗すると、E2EE は無効になり、暗号化されたルームにはアクセスできません。
openclaw.json
{
  "channels": {
    "matrix": {
      "encryption": true
    }
  }
}
アクセストークンを変更すると、デバイスの再検証が必要になります。暗号化されたメッセージ履歴へのアクセスを失わないように、暗号化状態ディレクトリ(~/.openclaw/matrix/accounts/)のバックアップを保持してください。

連合とホームサーバーの選択

Matrix は連合プロトコルです — 単一の中央サーバーはありません。任意のホームサーバーにボットを登録できます: • **matrix.org** — Matrix Foundation が運営するフラッグシップホームサーバー。オープン登録、高信頼性ですが、トラフィックが多いため遅くなる可能性があります。 • **Element Matrix Services** — element.io でプロフェッショナルにホストされたホームサーバー、プレミアム機能とサポート付き。 • **セルフホスト** — 独自のホームサーバーを実行して、最大の制御とプライバシーを実現します。Synapse が最も成熟し、活発に開発されているオプションです。Dendrite (Go) と Conduit (Rust) は小規模デプロイに適した軽量な代替ですが、現在はメンテナンスまたは限定開発モードに移行しています。 ボットがどこに登録されていても、連合のおかげで任意のホームサーバー上のユーザーと通信できます。
本番環境では、より良い制御とパフォーマンスのために、セルフホストホームサーバーまたは Element Matrix Services の使用を検討してください。
連合は透過的に動作します — ユーザーはボットがどのホームサーバー上にあるかを知る必要はありません。

スレッドと返信モード

Matrix は m.thread リレーションタイプを通じてスレッド会話をサポートします。OpenClaw はスレッドに参加し、返信の処理方法を制御できます。 threadReplies 設定はスレッド動作を制御します: 'off' はスレッドサポートを無効化、'inbound' はスレッドコンテキストのみを読み取り、'always' は読み取りとスレッド返信の両方を作成します。replyToMode 設定は返信関係のメタデータ添付を制御します。
openclaw.json
{
  "channels": {
    "matrix": {
      "threadReplies": "always",
      "replyToMode": "reference"
    }
  }
}

メディア処理とファイルアップロード

Matrix は画像、動画、音声、ドキュメントを含むリッチメディアをサポートします。OpenClaw はメディアアップロードを自動的に処理します — ファイルはホームサーバーのメディアリポジトリにアップロードされ、メッセージイベントで参照されます。 mediaMaxMb 設定で最大ファイルサイズを設定できます。デフォルトのインバウンドメディアは 50 MB で、アウトバウンド送信時に大きすぎる画像は自動的に JPEG 最適化とサイズ変更が行われます。
openclaw.json
{
  "channels": {
    "matrix": {
      "mediaMaxMb": 50
    }
  }
}
メディアアップロードはホームサーバーに保存されます。matrix.org などのパブリックホームサーバーを使用している場合は、ストレージ制限と利用規約に注意してください。

リアクションとリッチ機能

OpenClaw は Matrix リアクション(メッセージへの絵文字応答)、投票、位置共有(geo URI 形式)、その他のリッチ機能をサポートします。有効にすると、ツール経由でリアクションを送信および読み取ることができます。 actions 設定を通じて特定の操作をゲートし、AI エージェントができること(リアクション、メッセージ、ピン、メンバー/チャネル情報)を制限できます。
openclaw.json
{
  "channels": {
    "matrix": {
      "actions": {
        "reactions": true,
        "messages": true,
        "pins": false
      }
    }
  }
}

セルフホスト AI に Matrix を選ぶ理由

Matrix はセルフホスト AI アシスタントにとって優れた選択肢です: • **真にオープン** — オープン仕様、ベンダーロックインなし、複数のクライアントとサーバー実装。 • **連合型** — 単一の制御点や障害点がありません。ボットはグローバル Matrix ネットワーク全体で通信できます。 • **プライバシー重視** — E2EE サポート、セルフホストオプション、中央集権的なデータ収集なし。 • **豊富な機能** — スレッド、リアクション、メディア、投票、拡張可能なイベントタイプ。 • **電話番号不要** — WhatsApp や Signal とは異なり、Matrix 登録には電話番号は不要です。 トレードオフは複雑さです: Matrix の連合モデルと E2EE セットアップは、中央集権型プラットフォームよりも複雑になる可能性があります。プライバシーを重視するユーザーとチームにとって、このトレードオフは価値があります。

Matrix 設定リファレンス

enabled
Type: booleanDefault: true

Matrix チャネルを有効または無効にする

homeserver
Type: stringDefault: "https://matrix.org"

Matrix ホームサーバー URL(例: https://matrix.org、https://element.io)

accessToken
Type: stringDefault: ""

認証用の Matrix アクセストークン(推奨方法)

userId
Type: stringDefault: ""

Matrix ユーザー ID(例: @bot:matrix.org)— パスワード認証と併用

password
Type: stringDefault: ""

Matrix アカウントパスワード — userId とともにログインに使用

encryption
Type: booleanDefault: false

Rust crypto SDK 経由でエンドツーエンド暗号化を有効化

dmPolicy
Type: stringDefault: "pairing"

DM アクセスポリシー: pairing、allowlist、open、または disabled

dm.allowFrom
Type: arrayDefault: []

DM が許可される Matrix ユーザー ID(例: [@alice:matrix.org])

groupPolicy
Type: stringDefault: "allowlist"

ルームポリシー: allowlist または disabled

groups
Type: objectDefault: {}

ルーム固有の設定(ルーム ID またはエイリアスをキーとする)

groups.<roomId>.allow
Type: booleanDefault: false

ボットがこのルームに参加することを許可

groups.<roomId>.requireMention
Type: booleanDefault: true

このルームで応答をトリガーするためにボットのメンションを要求

groups.<roomId>.users
Type: arrayDefault: []

ルームごとのユーザー許可リスト(Matrix ユーザー ID)

autoJoin
Type: stringDefault: "allowlist"

ルーム招待の自動参加: always、allowlist、または off

textChunkLimit
Type: numberDefault: 4096

アウトバウンドメッセージあたりの最大文字数

chunkMode
Type: stringDefault: "length"

長い応答の分割方法: length(ハード制限)または newline(段落境界)

threadReplies
Type: stringDefault: "inbound"

スレッド動作: off、inbound(読み取りのみ)、または always(読み取り + 作成)

replyToMode
Type: stringDefault: "reference"

返信メタデータ添付モード

mediaMaxMb
Type: numberDefault: 50

最大メディアファイルサイズ(メガバイト)

actions.reactions
Type: booleanDefault: true

エージェントがリアクションを送信/読み取りすることを許可

actions.messages
Type: booleanDefault: true

エージェントがメッセージを読み取り/送信/編集/削除することを許可

actions.pins
Type: booleanDefault: true

エージェントがメッセージをピン/ピン解除することを許可

actions.memberInfo
Type: booleanDefault: true

エージェントがルームメンバー情報を検索することを許可

actions.channelInfo
Type: booleanDefault: true

エージェントがルーム/チャネル情報を取得することを許可

Matrix よくある質問

Matrix トラブルシューティング

ボットがメッセージを受信しない

DM ポリシーがメッセージをブロックしている、またはボットがルームにいない

channels.matrix.dmPolicy と dm.allowFrom 設定を確認してください。ルームの場合、ルームが groups 許可リストにあり、ボットが招待され参加していることを確認してください。
E2EE 暗号化ルームにメッセージが表示されない

デバイスが検証されていない、または暗号化モジュールの読み込みに失敗した

Element または別の Matrix クライアントでボットのデバイスを検証してください。暗号化モジュール読み込みエラーのログを確認してください。channels.matrix.encryption が true に設定されていることを確認してください。
アクセストークンが無効または期限切れ

トークンがホームサーバー上で取り消されたか無効化された

再度ログインして新しいアクセストークンを生成してください。ユーザー名/パスワードを使用している場合、~/.openclaw/credentials/matrix/credentials.json を削除して Gateway を再起動してください。
ボットがルームに参加したが応答しない

ルームが許可リストにない、または requireMention が有効になっている

allow: true でルームを channels.matrix.groups に追加してください。requireMention が true の場合、ユーザーはボットをメンションして応答を得る必要があります。
他のホームサーバーとの連合エラー

ホームサーバー接続または連合の問題

federationtester.matrix.org でホームサーバーの連合ステータスを確認してください。セルフホストの場合、DNS SRV レコードと SSL 証明書を検証してください。
プラグインのインストールが失敗する

npm レジストリアクセスまたは Node.js バージョンの非互換性

Node.js 18+ がインストールされていることを確認してください。詳細なエラーログのために 'openclaw plugins install @openclaw/matrix --verbose' を試してください。npm レジストリへのネットワーク接続を確認してください。