前のページ

09. OpenClaw Web Control UI と Canvas 使用ガイド

本稿では OpenClaw の Web Control UI と Canvas 機能を詳しく解説します。Web UI はブラウザ制御パネルを提供し、Canvas は Agent 駆動の可視化ワークスペースです。これらのツールを使いこなし、AI アシスタントがチャットだけでなく、動的な可視化インターフェースも作成できるようにしましょう。

OpenClaw v2026.2 対応 | 本稿は基本インストールが完了しており、ブラウザで OpenClaw を管理したい方を対象としています。

TL;DR: Web UI は http://127.0.0.1:18789 でアクセス。Chat(チャット)、Sessions(セッション)、Config(設定)、Nodes(ノード)、Logs(ログ)、Skills(スキル)ページを含みます。Canvas は Agent 駆動の可視化ワークスペースで、グラフ、ダッシュボード、インタラクティブインターフェースを作成できます。リモートアクセス:Tailscale Serve または SSH トンネル。モバイル Canvas は iOS/Android アプリで利用可能です。

Web Control UI

Web UI へのアクセス

Gateway を起動した後、ブラウザで以下にアクセスします:

http://127.0.0.1:18789

インターフェース概要

flowchart LR
    subgraph WebUI["Web Control UI"]
        Chat[Chat チャット]
        Sessions[Sessions セッション]
        Config[Config 設定]
        Nodes[Nodes ノード]
        Logs[Logs ログ]
        Skills[Skills スキル]
    end
    
    subgraph Features["機能"]
        F1[リアルタイムチャット]
        F2[セッション管理]
        F3[設定編集]
        F4[ノード制御]
        F5[ログ閲覧]
        F6[スキル管理]
    end
    
    Chat --> F1
    Sessions --> F2
    Config --> F3
    Nodes --> F4
    Logs --> F5
    Skills --> F6

ページ機能

Chat(チャット)

機能 説明
メッセージ入力 テキスト、Markdown、コードブロック対応
メッセージ履歴 完全な会話履歴を表示
ツール呼び出し ツール呼び出しプロセスと結果を表示
思考プロセス Agent の思考プロセスをオプション表示
Token 統計 Token 使用量を表示
モデル切り替え 使用モデルを素早く切り替え

Sessions(セッション)

機能 説明
セッション一覧 すべてのアクティブセッションを表示
セッション詳細 個別セッションの状態と設定を表示
セッション操作 リセット、削除、エクスポート
セッション切り替え セッション間切り替え
セッション分離 チャネル、ユーザー別にセッション表示

Config(設定)

機能 説明
設定編集 オンラインで設定ファイルを編集
設定検証 設定構文をリアルタイム検証
設定ホット更新 再起動不要で反映
設定エクスポート 設定をバックアップとしてエクスポート
設定履歴 設定変更履歴を表示

Nodes(ノード)

機能 説明
ノード一覧 接続済みデバイスノードを表示
ノード状態 オンライン状態、権限を表示
ノード制御 ノード機能の有効/無効
ノードペアリング 新規ノードのペアリング

Logs(ログ)

機能 説明
リアルタイムログ システムログをストリーミング表示
ログフィルター レベル、モジュールでフィルタ
ログ検索 キーワード検索
ログエクスポート ログファイルをダウンロード

Skills(スキル)

機能 説明
スキル一覧 インストール済みスキルを表示
スキルインストール ClawHub からスキルをインストール
スキル設定 スキルパラメータを設定
スキル無効化 スキルの有効/無効

Web UI の設定

{
  "web": {
    "enabled": true,
    "port": 18789,
    "bind": "loopback",
    "auth": {
      "mode": "password",
      "password": "your-secure-password"
    },
    "theme": "dark"
  }
}
設定項目 説明 デフォルト値
enabled Web UI を有効化 true
port リスニングポート 18789
bind バインドアドレス loopback
auth.mode 認証モード none
auth.password アクセスパスワード -
theme テーマ dark

リモートアクセス

方法1:Tailscale

{
  "gateway": {
    "tailscale": {
      "mode": "serve"
    }
  }
}

Tailscale ネットワーク経由でアクセス:

https://your-tailnet-name.ts.net

方法2:SSH トンネル

# ローカルで SSH トンネルを作成
ssh -L 18789:localhost:18789 user@remote-server

# その後アクセス
http://localhost:18789

方法3:リバースプロキシ

Caddy または Nginx を使用:

Caddyfile:

your-domain.com {
    reverse_proxy localhost:18789
}

Canvas 可視化ワークスペース

Canvas とは?

Canvas は Agent 駆動の可視化ワークスペースです。Agent は以下が可能です:

  • 動的グラフの作成
  • インタラクティブインターフェースの構築
  • リアルタイムデータの表示
  • ダッシュボードの生成
  • 外部コンテンツの埋め込み

Canvas アーキテクチャ

flowchart TB
    subgraph Agent["Agent"]
        PROMPT[リクエスト分析]
        GEN[A2UI 生成]
        EXEC[操作実行]
    end
    
    subgraph Canvas["Canvas ランタイム"]
        RENDER[レンダリングエンジン]
        STATE[状態管理]
        EVENT[イベント処理]
    end
    
    subgraph UI["ユーザーインターフェース"]
        DISPLAY[Canvas 表示]
        INTERACT[ユーザー操作]
    end
    
    Agent --> Canvas
    PROMPT --> GEN
    GEN --> RENDER
    RENDER --> DISPLAY
    DISPLAY --> INTERACT
    INTERACT --> EVENT
    EVENT --> EXEC

基本使用

チャットで Canvas を使用

ユーザー:シンプルな ToDo アプリを作成して

Agent:ToDo アプリの Canvas を作成します...
[Canvas コンポーネントを生成]

Canvas コマンド

コマンド 説明
/canvas create 新規 Canvas を作成
/canvas show 現在の Canvas を表示
/canvas clear Canvas をクリア
/canvas export Canvas をエクスポート

Canvas コンポーネント

テキストコンポーネント

canvas.text({
  content: "Hello, World!",
  style: {
    fontSize: "24px",
    color: "#333",
    fontWeight: "bold"
  }
})

ボタンコンポーネント

canvas.button({
  label: "Click Me",
  onClick: () => {
    console.log("Button clicked!")
  },
  style: {
    background: "#3b82f6",
    color: "white"
  }
})

リストコンポーネント

canvas.list({
  items: ["Item 1", "Item 2", "Item 3"],
  onSelect: (item) => {
    console.log(`Selected: ${item}`)
  }
})

グラフコンポーネント

canvas.chart({
  type: "bar",
  data: {
    labels: ["Jan", "Feb", "Mar"],
    datasets: [{
      label: "Revenue",
      data: [100, 200, 150]
    }]
  }
})

フォームコンポーネント

canvas.form({
  fields: [
    { name: "username", type: "text", label: "Username" },
    { name: "email", type: "email", label: "Email" },
    { name: "submit", type: "submit", label: "Submit" }
  ],
  onSubmit: (data) => {
    console.log("Form submitted:", data)
  }
})

実践例

例1:データダッシュボード

// Agent が生成する Canvas コード
canvas.render(`
  <Dashboard>
    <Header title="Sales Dashboard" />
    <Row>
      <Card title="Total Revenue" value="$125,430" trend="+12%" />
      <Card title="Active Users" value="3,245" trend="+5%" />
      <Card title="Conversion Rate" value="4.2%" trend="-1%" />
    </Row>
    <Row>
      <Chart type="line" data={revenueData} title="Revenue Trend" />
      <Chart type="bar" data={usersData} title="User Growth" />
    </Row>
  </Dashboard>
`)

例2:インタラクティブ電卓

canvas.render(`
  <Calculator>
    <Display value={display} />
    <Keypad>
      <Button onClick={() => input('7')}>7</Button>
      <Button onClick={() => input('8')}>8</Button>
      <Button onClick={() => input('9')}>9</Button>
      <Button onClick={() => input('/')}>/</Button>
      // ... more buttons
    </Keypad>
  </Calculator>
`)

const state = { display: '0' }
function input(value) {
  state.display = calculate(state.display, value)
  canvas.update()
}

例3:リアルタイム監視

canvas.render(`
  <Monitor>
    <Header title="System Monitor" />
    <Metrics>
      <Metric 
        label="CPU Usage" 
        value={cpuUsage} 
        threshold={80}
        unit="%"
      />
      <Metric 
        label="Memory" 
        value={memoryUsed} 
        threshold={90}
        unit="GB"
      />
      <Metric 
        label="Disk I/O" 
        value={diskIO} 
        unit="MB/s"
      />
    </Metrics>
    <Chart type="line" data={historyData} realtime />
  </Monitor>
`)

// 定期更新
setInterval(() => {
  cpuUsage = getCpuUsage()
  memoryUsed = getMemoryUsed()
  diskIO = getDiskIO()
  canvas.update()
}, 1000)

Canvas API

canvas.render(template)

Canvas コンテンツをレンダリングします。

canvas.render(`
  <Container>
    <Text>Hello</Text>
  </Container>
`)

canvas.update()

Canvas の状態を更新します。

state.count++
canvas.update()

canvas.clear()

Canvas をクリアします。

canvas.clear()

canvas.snapshot()

Canvas のスナップショットを取得します。

const image = await canvas.snapshot()

canvas.eval(code)

Canvas コンテキストでコードを実行します。

await canvas.eval(`
  document.getElementById('counter').innerText = '${count}'
`)

A2UI コンポーネントライブラリ

Canvas は A2UI(Agent-to-UI)コンポーネントライブラリを使用します:

レイアウトコンポーネント

コンポーネント 説明
<Container> コンテナ
<Row> 水平レイアウト
<Column> 垂直レイアウト
<Grid> グリッドレイアウト
<Card> カードコンテナ

データ表示

コンポーネント 説明
<Text> テキスト
<Heading> 見出し
<List> リスト
<Table> テーブル
<Chart> グラフ

インタラクティブコンポーネント

コンポーネント 説明
<Button> ボタン
<Input> 入力フィールド
<Select> ドロップダウン
<Checkbox> チェックボックス
<Form> フォーム

Canvas と Agent の連携

Agent が Canvas を作成

ユーザー:プロジェクト進捗トラッキングパネルを作成して

Agent:プロジェクト進捗トラッキング Canvas を作成します...

Agent は以下を実行します:

  1. 要件を分析
  2. レイアウトを設計
  3. Canvas コードを生成
  4. インターフェースをレンダリング

Canvas から Agent をトリガー

ユーザーが Canvas とやり取りすると、Agent 操作をトリガーできます:

canvas.button({
  label: "Generate Report",
  onClick: async () => {
    await agent.send("月次レポートを生成")
  }
})

様々なデバイスで Canvas を使用

macOS

Canvas は独立ウィンドウで表示されます:

openclaw canvas show

iOS

Canvas は iOS Node アプリに統合されています:

  • OpenClaw iOS アプリを開く
  • Canvas タブに切り替え

Android

Canvas は Android Node アプリに統合されています:

  • OpenClaw Android アプリを開く
  • Canvas タブに切り替え

Web

Canvas は Web UI で表示されます:

  • http://localhost:18789 を開く
  • Canvas タブをクリック

Canvas の設定

{
  "canvas": {
    "enabled": true,
    "theme": "dark",
    "autoUpdate": true,
    "updateInterval": 1000,
    "maxComponents": 100,
    "persistState": true
  }
}
設定項目 説明 デフォルト値
enabled Canvas を有効化 true
theme テーマ dark
autoUpdate 状態の自動更新 true
updateInterval 更新間隔(ミリ秒) 1000
maxComponents 最大コンポーネント数 100
persistState 状態の永続化 true

まとめ

Web Control UI と Canvas により、OpenClaw は単なるチャットアシスタントではなく、完全なインタラクションプラットフォームになります:

  • Web UI:ブラウザ制御パネルで全てを管理
  • Canvas:Agent 駆動の可視化ワークスペース
  • A2UI:豊富なコンポーネントライブラリで素早くインターフェース構築
  • クロスデバイス:macOS、iOS、Android、Web で統一体験

これらの機能により、Agent がダッシュボード、管理画面、インタラクティブツールを作成でき、AI アシスタントの応用シーンが大きく拡大します。


本稿のまとめ

  • Web Control UI の機能と使い方を習得した
  • Canvas の基本概念とコンポーネントを学んだ
  • A2UI コンポーネントライブラリを理解した
  • Canvas と Agent の連携方法を学んだ
  • マルチデバイスでの Canvas の使い方を習得した

更新履歴

  • 2026-02-26:初版リリース、OpenClaw v2026.2 ベース

シリーズナビゲーション