> ## Documentation Index
> Fetch the complete documentation index at: https://docs.bricks.tools/llms.txt
> Use this file to discover all available pages before exploring further.

# ACP（Agent Client Protocol）

> 外部ツールをCTORのAIエージェントに接続する

ACPを使用すると、外部ツールが [Agent Client Protocol](https://agentclientprotocol.org) を介してCTORエージェントと対話できます。[acpx](https://github.com/openclaw/acpx)、[OpenClaw](https://openclaw.ai)、[Agmente](https://apps.apple.com/us/app/agmente/id6756249477) などのツールを使用してプロンプトを送信し、セッションを管理し、エージェントを調整できます — デスクトップGUIと同じエージェント、設定、MCPツールで動作します。

## 仕組み

デスクトップアプリはElectronメインプロセス内でUnixソケットサーバーを実行します。ブリッジCLI（`bricks desktop-acp-bridge`）は標準入出力とソケット間でACP JSON-RPCメッセージを転送し、任意のACPクライアントが接続できます。

```
ACP client (acpx, OpenClaw, etc.)
  └─ spawns ─▶ bricks desktop-acp-bridge
                  └─ connects ─▶ Unix socket (~/.bricks-project-desktop/acp.sock)
                                    └─ CTOR (shared agent)
```

ソケットサーバーはアプリ内で実行されるため、ACPセッションはGUIとすべてを共有します：

* **セッション** — ACP経由で作成された会話はサイドバーに表示され、その逆も同様
* **設定** — APIキー、デフォルトモデル、プロバイダー設定はアプリから取得
* **MCPツール** — プロジェクト内の `.mcp.json` で設定されたツールが利用可能
* **スキル** — グローバルとプロジェクトのスキルが読み込まれます

### Session APIs

`session/new` と `session/prompt` に加えて、ブリッジは以下をサポートします：

* `session/list` — ディスク上のセッションを列挙し、プロジェクトの cwd でフィルタリング可能
* `session/load` と `session/resume` — 既存セッションを再オープンし、ツール呼び出しとメッセージのタイムライン全体をストリーミングして、リフレッシュや再起動後もクライアントが状態を再構築できるようにします
* `session/set_mode` — 思考レベルを切り替え（`off`、`minimal`、`low`、`medium`、`high`、`xhigh`）
* `session/set_model` と `session/set_config_option` — デスクトップGUIが公開するのと同じ `provider::name` 識別子を使用して、セッション中にモデルを変更

セッションがアクティブな間、接続中のすべてのクライアントは同じイベントストリームを受信します — GUIから開始されたプロンプトはACPクライアントにリアルタイムでミラーリングされ、ACPプロンプトもストリーミング中にGUIに表示されます。

## ACPを有効にする

ACPはデフォルトで無効です。有効にするには：

1. **設定**を開きます（サイドバーのギアアイコン）
2. **エージェント**に移動します
3. **ACPを有効にする**をトグルします

ソケットサーバーはすぐに起動します — アプリの再起動は不要です。ACPがアクティブな場合、サイドバーのフッターに緑の **ACP** インジケーターが表示されます。クリックすると設定が開きます。

<Warning>
  ACPモード（ヘッドレス）では、bashコマンドは承認なしに実行されます。必要に応じて `acpx --deny-all` でこれを上書きしてください。
</Warning>

## 前提条件

* [CTOR](/ja/ctor) がACPを有効にして実行中であること
* [BRICKS CLI](/ja/cli) がインストール済みであること（`bun add -g @anthropic-company/bricks-cli`）
* 作業ディレクトリがBRICKSプロジェクト（`application.json` を含む）であること

## 接続を確認する

ブリッジがデスクトップアプリに接続できるかテストします：

```bash theme={null}
echo '{"jsonrpc":"2.0","id":0,"method":"initialize","params":{"protocolVersion":1,"clientCapabilities":{},"clientInfo":{"name":"test"}}}' \
  | bricks desktop-acp-bridge
```

`Cannot connect to CTOR` が表示された場合、アプリが実行中で設定でACPが有効になっていることを確認してください。

## acpxとの使用

[acpx](https://github.com/openclaw/acpx) はAgent Client Protocolのヘッドレス CLIクライアントです。セッションの管理、プロンプトのキュー、エージェント出力のストリーミングを行います。

### acpxのインストール

```bash theme={null}
npm install -g acpx
```

### 基本的な使い方

```bash theme={null}
# 現在のプロジェクトにセッションを作成
acpx --agent 'bricks desktop-acp-bridge' sessions new

# プロンプトを送信
acpx --agent 'bricks desktop-acp-bridge' "list all files and summarize the project"

# すべてのツール呼び出しを自動承認
acpx --agent 'bricks desktop-acp-bridge' --approve-all "fix the linting errors"

# 静音モード（最終出力のみ）
acpx --agent 'bricks desktop-acp-bridge' --format quiet "what does this project do?"

# 自動化のためのJSON出力
acpx --agent 'bricks desktop-acp-bridge' --format json "run the tests"
```

### 永続的な設定

`--agent` の繰り返しを避けるためにエージェントを `~/.acpx/config.json` に追加します：

```json theme={null}
{
  "agents": {
    "bricks": {
      "command": "bricks desktop-acp-bridge"
    }
  }
}
```

短縮形で使用します：

```bash theme={null}
acpx bricks sessions new
acpx bricks "refactor the auth module"
acpx bricks sessions list
acpx bricks sessions close
```

## OpenClawとの使用

[OpenClaw](https://openclaw.ai) はacpx経由でACPをサポートします。`bricks` エージェントが `~/.acpx/config.json` に設定されている場合（上記参照）、OpenClawはマルチエージェントオーケストレーションのためにデスクトップアプリのエージェントに接続できます。

## WebSocket ブリッジ

stdio ではなく WebSocket を話す ACP クライアント — ブラウザベースのクライアントや Agmente iOS アプリを含む — の場合は、ブリッジを `--ws` モードで実行します。各 WebSocket クライアントは ACP Unix ソケットへの専用接続を持ち、WebSocket テキストフレーム 1 つが JSON-RPC メッセージ 1 つに対応します。

```bash theme={null}
# LAN に公開（デフォルト）し、トークンを必須にする — 推奨
bricks desktop-acp-bridge --ws --port 8765 --auth-token "$ACP_TOKEN"

# トークンは環境変数からも渡せます
BRICKS_DESKTOP_ACP_BRIDGE_TOKEN="$ACP_TOKEN" bricks desktop-acp-bridge --ws

# ローカルホストのみに制限
bricks desktop-acp-bridge --ws --host 127.0.0.1 --port 8765
```

<Warning>
  デフォルトのバインドホストは `0.0.0.0` です — `--ws` は LAN への公開を想定しています。必ず `--auth-token` を設定し、信頼できるネットワーク上でのみ実行してください。トークンを設定しない場合、バインドされたインターフェースに到達できる任意のクライアントが接続でき、起動時に警告が表示されます。
</Warning>

ブラウザスタイルのクライアントから接続するときは、アップグレードリクエストにトークンを添えてください：

```js theme={null}
const ws = new WebSocket('ws://127.0.0.1:8765', [], {
  headers: { Authorization: `Bearer ${token}` },
})
ws.onmessage = (e) => console.log('from acp:', e.data)
ws.send(JSON.stringify({ jsonrpc: '2.0', id: 0, method: 'initialize', params: { /* ... */ } }))
```

## Agmenteとの使用

[Agmente](https://apps.apple.com/us/app/agmente/id6756249477) は iOS の ACP クライアントで、iPhone や iPad から CTOR エージェントと対話できます。WebSocket で接続するため、上記の [WebSocket ブリッジ](#websocket-ブリッジ)を使って ACP ソケットを LAN に公開してください：

```bash theme={null}
bricks desktop-acp-bridge --ws --port 8765 --auth-token "$ACP_TOKEN"
```

Agmente でエージェント接続を `ws://<your-mac-ip>:8765` に向け、トークンを設定してください。スマートフォンと CTOR を実行している Mac は同じネットワーク上にあるか、VPN や [Tailscale](https://tailscale.com) のようなトンネル経由で到達可能である必要があります。

接続後、Agmente は上記の [Session APIs](#session-apis) を使って過去のセッションを一覧表示・再開し、実行中にモデルや思考レベルを切り替えます。Agmente から送信したプロンプトはデスクトップ GUI にもストリーミングされ、その逆も同様です。

## プロジェクトパスのコピー

**アクション**（右上のドロップダウン）> **プロジェクトパスをコピー**を使用して、外部ツールで使用するために現在のプロジェクトのパスをすばやくコピーします。

## データ

| 項目       | 場所                                   |
| -------- | ------------------------------------ |
| ソケットファイル | `~/.bricks-project-desktop/acp.sock` |

<Tip>
  `BRICKS_PROJECT_DESKTOP_DATA_DIR` 環境変数を設定すると、ソケットの場所とその他すべてのアプリデータの場所を変更できます。
</Tip>
