OpenClaw

OpenClaw WebChat チャンネル

メッセージング
簡単

WebChat は OpenClaw Gateway に組み込まれたチャットインターフェースです。WebSocket を介して直接接続するため、外部サービス、API キー、サードパーティアカウントは一切不要です。Gateway を起動し、認証を設定して WebChat UI を開くだけで、AI アシスタントとのチャットを開始できます。すべてのメッセージは決定的にルーティングされ、返信は常に会話を開始した WebChat セッションに返されます。

基本情報
難易度簡単
カテゴリメッセージング
対応機能数1 / 6

WebChat 対応機能

テキストメッセージ

対応

メディア・ファイル

非対応

リアクション

非対応

スレッド

非対応

音声メッセージ

非対応

グループチャット

非対応

WebChat 前提条件

  • OpenClaw Gateway がインストール・稼働済み
  • Gateway 認証が設定済み(トークンまたはパスワードモード)
  • モダンな Web ブラウザ(Control UI)またはネイティブ macOS/iOS クライアント
  • Gateway の WebSocket ポートへのネットワークアクセス(デフォルト: 3000)

WebChat クイックセットアップ

1

Gateway を起動

OpenClaw Gateway を起動します。WebChat は組み込み機能のため、別途インストールやプラグインは不要です。'openclaw start' を実行して Gateway サービスを起動します。

2

認証を設定

openclaw.json で gateway.auth.mode に 'token' または 'password' 認証を設定します。localhost を含むすべての接続で認証が必須です。

3

WebChat を開く

ブラウザの Control UI チャットタブから WebChat インターフェースにアクセスするか、ネイティブ macOS/iOS クライアントを起動します。ws://localhost:3000(または設定済みのホストとポート)で Gateway に接続します。

4

チャットを開始

テストメッセージを送信して接続を確認します。AI アシスタントは同じ WebChat セッションを通じて応答します。会話履歴は Gateway が管理し、再接続後も保持されます。

WebChat 設定例

config.json
{
  "gateway": {
    "port": 3000,
    "bind": "127.0.0.1",
    "auth": {
      "mode": "token",
      "token": "YOUR_SECRET_TOKEN"
    }
  }
}

WebChat 詳細ドキュメント

アーキテクチャ概要

WebChat は WebSocket 接続を通じて OpenClaw Gateway と通信し、3つの主要なオペレーションを使用します: • chat.history — Gateway から会話履歴を取得 • chat.send — ユーザーメッセージを AI アシスタントに送信 • chat.inject — エージェント実行をトリガーせずにアシスタントノートをトランスクリプトに追加し、UI にブロードキャスト 外部サービスや Webhook に依存する他のチャンネルとは異なり、WebChat は Gateway に完全にネイティブです。メッセージがインフラストラクチャの外に出ることはありません。WebSocket 接続は UI クライアントと Gateway プロセスの間で直接行われます。ルーティングは決定的であり、AI からの返信は常に会話を開始した WebChat セッションに返されます。
WebChat は外部アカウントや API キーが不要で、Gateway 自体があれば動作するため、最もセットアップが簡単なチャンネルです。
chat.inject オペレーションは、AI の応答をトリガーせずにシステムノートやコンテキストを会話に追加する場合に便利です。

Gateway 認証

ループバック(localhost)であっても、すべての WebChat 接続で認証が必須です。これにより、AI アシスタントへの不正アクセスを防ぎます。 OpenClaw は2つの認証モードをサポートします: • token — WebSocket ハンドシェイクで渡す共有シークレットトークン。プログラムからのアクセスやシングルユーザー環境に最適です。 • password — パスワードベースの認証。各ユーザーが個別の資格情報を持つマルチユーザー環境に適しています。 WebChat が接続を受け入れるには、token または password のいずれかを設定する必要があります。openclaw.json の gateway.auth 設定で構成してください。
openclaw.json
{
  "gateway": {
    "auth": {
      "mode": "token",
      "token": "a-strong-random-token-here"
    }
  }
}
localhost 接続であっても認証は必須です。認証を設定せずに Gateway を実行しないでください。マシン上のあらゆるプロセスが AI アシスタントにアクセスできてしまいます。

リモートアクセス

WebChat は別途 Web サーバーを実行せずにリモート接続をサポートします。以下の2つのアプローチを推奨します: • SSH トンネル — SSH で Gateway ポートを転送します: ssh -L 3000:localhost:3000 user@remote-host。これにより、Gateway がリモートマシンで動作しながらローカルで WebChat にアクセスできます。 • Tailscale — Tailscale のメッシュ VPN でデバイスを接続します。ポート転送やファイアウォール設定なしで、Gateway が Tailscale IP アドレスでアクセス可能になります。 リモート接続の場合、gateway.remote 設定にターゲット WebSocket URL と認証情報を構成します。ネイティブクライアントはネットワーク状態が変化した際に自動的に再接続を処理します。
openclaw.json
{
  "gateway": {
    "remote": {
      "url": "wss://your-remote-host:3000",
      "token": "YOUR_REMOTE_TOKEN"
    }
  }
}
SSH トンネルは追加ソフトウェアなしでリモートアクセスを実現する最速の方法です。Gateway ホストへの SSH アクセスを確保してください。
Tailscale はゼロコンフィグの VPN を提供し、ポート転送なしですべてのデバイスから Gateway にアクセスできるようにします。

セッション管理

WebChat は Gateway が管理するセッションを使用して会話コンテキストを維持します。各 WebChat 接続は、会話履歴と AI コンテキストを保存するセッションに関連付けられます。 セッションは再接続後も永続化されます。WebSocket が切断され再接続した場合、会話は中断したところから続行されます。chat.history オペレーションが再接続時に Gateway から完全な会話を取得します。 セッション設定は openclaw.json の session.* 設定で管理され、ストレージバックエンドやデフォルトセッションキーなどが含まれます。
会話履歴は Gateway から取得され、ローカルには保存されません。そのため、デバイスを切り替えても同じ会話を引き継ぐことができます。
session.defaultKey を使用して、WebChat 会話に一貫したセッション識別子を割り当てることができます。

読み取り専用モード

Gateway に到達できなくなると、WebChat は自動的に読み取り専用モードに移行します。この状態では: • 以前の会話履歴は引き続き表示されます • 新しいメッセージは送信できません • UI に切断状態が表示されます • バックグラウンドで自動再接続が試行されます Gateway がオンラインに復帰すると、WebChat は自動的に再接続し、完全な機能が復元されます。すべての履歴は Gateway から取得されるため、会話履歴からメッセージが失われることはありません。
読み取り専用モードはグレースフルデグラデーションです。Gateway が一時的に利用できない間も、ユーザーは過去の会話を確認できます。

ネイティブクライアントの機能

WebChat は Apple プラットフォーム上でネイティブ SwiftUI アプリケーションとして実装されています: • macOS — キーボードショートカット、システム通知、メニューバー統合を備えたフルデスクトップ体験 • iOS — プッシュ通知とバックグラウンドリフレッシュに対応したモバイル最適化インターフェース ネイティブ実装により、埋め込みブラウザや Electron ラッパーのオーバーヘッドなしで、レスポンシブなプラットフォームネイティブの体験を提供します。テキストレンダリング、スクロール、入力処理はすべてネイティブプラットフォームコンポーネントを使用します。 他のプラットフォーム(Windows、Linux、Android)では、モダンな Web ブラウザの Control UI チャットタブから WebChat にアクセスできます。
ネイティブ macOS/iOS クライアントは、システム通知やキーボードショートカットなどプラットフォーム固有の機能により、最高の体験を提供します。
ブラウザベースの Control UI チャットタブはすべてのプラットフォームで動作し、同じコア機能を提供します。

メッセージ配信

WebChat は WebSocket 接続を通じてメッセージ配信を処理し、長い AI 応答に対してチャンキングを設定できます: • textChunkLimit — メッセージチャンクあたりの最大文字数(デフォルト: 2000)。長い応答は自動的に分割されます。 • blockStreaming — 有効にすると、応答が生成される際にブロック単位のチャンクで送信され、リアルタイムのフィードバックを提供します。 メッセージは WebSocket を通じて即座に配信されます。ポーリングや Webhook の遅延はありません。双方向 WebSocket 接続により、送信と受信の両方がリアルタイムで行われます。
openclaw.json
{
  "channels": {
    "webchat": {
      "textChunkLimit": 2000,
      "blockStreaming": true
    }
  }
}

セキュリティのベストプラクティス

WebChat のセキュリティは Gateway 認証レイヤーを基盤としています。安全なデプロイのために以下のベストプラクティスに従ってください: • 常に認証を設定する — 匿名アクセスは許可されていません • TLS 暗号化を使用する — すべてのリモート接続で wss://(WebSocket Secure)を使用してください • バインドアドレスを制限する — ローカルのみのアクセスには gateway.bind: "127.0.0.1" を使用し、リバースプロキシの背後でない限り 0.0.0.0 へのバインドは避けてください • 強力な資格情報を使用する — ランダムなトークンまたは強力なパスワードを生成してください • リバースプロキシ — 本番環境では、TLS 終端を備えたリバースプロキシ(nginx、Caddy)の背後に Gateway を配置してください 同一マシン上でリバースプロキシを使用する場合、適切なクライアント IP 検出のために gateway.trustedProxies を設定してください。
TLS 暗号化と強力な認証なしに Gateway の WebSocket ポートをインターネットに直接公開しないでください。本番環境では TLS 終端を備えたリバースプロキシを使用してください。

WebChat 設定リファレンス

gateway.port
Type: numberDefault: 3000

Gateway の WebSocket ポート番号

gateway.bind
Type: stringDefault: "127.0.0.1"

Gateway が WebSocket 接続をバインドするホストアドレス

gateway.auth.mode
Type: stringDefault: "token"

認証モード: 共有シークレットの場合は 'token'、資格情報ベースの場合は 'password'

gateway.auth.token
Type: stringDefault: ""

WebSocket 認証用の共有シークレットトークン

gateway.auth.password
Type: stringDefault: ""

WebSocket 認証用のパスワード

gateway.remote.url
Type: stringDefault: ""

リモート Gateway の WebSocket URL(例: wss://remote-host:3000)

gateway.remote.token
Type: stringDefault: ""

リモート Gateway への接続用認証トークン

gateway.remote.password
Type: stringDefault: ""

リモート Gateway への接続用認証パスワード

session.defaultKey
Type: stringDefault: ""

WebChat 会話のデフォルトセッションキー

session.storage
Type: stringDefault: "memory"

セッションストレージバックエンド(memory、file、redis など)

textChunkLimit
Type: numberDefault: 2000

送信メッセージチャンクあたりの最大文字数

blockStreaming
Type: booleanDefault: false

生成中にブロック単位のチャンクで応答を送信し、リアルタイムフィードバックを提供

WebChat よくある質問

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

WebChat に「切断」と表示され再接続できない

Gateway が稼働していないか、WebSocket ポートがファイアウォールでブロックされています。

'openclaw status' で Gateway が稼働していることを確認してください。設定された gateway.port がファイアウォールでブロックされていないことを確認してください。gateway.bind がクライアントのネットワークアドレスからの接続を許可していることを確認してください。
接続時に認証が失敗する

トークンまたはパスワードが Gateway の設定と一致していません。

gateway.auth.token または gateway.auth.password がクライアントの資格情報と正確に一致していることを確認してください。末尾のスペースやエンコーディングの問題がないか確認してください。認証設定を変更した後は Gateway を再起動してください。
メッセージは送信されるが AI の応答が表示されない

AI エージェントが設定されていないか、AI プロバイダーの API キーが無効です。

Gateway のログでエラーを確認してください。openclaw.json のエージェント設定を確認してください。AI プロバイダー(例: OpenAI、Anthropic)の API キーが有効で、利用可能なクォータがあることを確認してください。
SSH トンネル経由のリモート接続が失敗する

SSH トンネルが正しいポートを転送していないか、Gateway が想定されるアドレスでリッスンしていません。

SSH コマンドが Gateway のポートと一致していることを確認してください: ssh -L 3000:localhost:3000 user@host。リモートマシンで Gateway が想定されるポートでリッスンしていることを確認してください。SSH トンネルアクセスの場合、gateway.bind が 127.0.0.1 に設定されていることを確認してください。
再接続後にチャット履歴が空になる

セッションが接続間で期限切れになったか、クリアされました。

openclaw.json のセッション設定を確認してください。Gateway にセッション永続化のための十分なストレージがあることを確認してください。接続間でセッションキーが一致していることを確認してください。