本文へスキップ
Ankole

クイックスタート

AI Agent 向け: このページの Markdown 版は https://ankole.agentbull.com/ja-JP/docs/quickstart/index.md にあります。ドキュメント索引は https://ankole.agentbull.com/ja-JP/llms.txt にあります。

Ankole のデプロイ方法

プライベートな Ankole デプロイメントインスタンスには、1 つの control plane と 1 つ以上の Agent Computer Worker があります。control plane は永続的なドメイン状態と監視を所有する管理プラットフォームです。Worker は Agent の実行環境を提供し、Agent の仕事用コンピュータとして機能します。

1 つの Worker が複数の Agent にサービスを提供できます。金融など厳格な分離が必要な環境では、各 Agent に専用の Worker を割り当ててください。仕事用コンピュータは複数のインターンで共有したり、1 人の同僚に割り当てたりできます。

各インスタンスには PostgreSQL と永続ディスクストレージも必要です。シングルホストのデプロイメントでは、ローカルまたは仮想ディスクを使用できます。Kubernetes のデプロイメントには、ReadWriteMany をサポートする NFS または別の共有ボリュームが必要です。

このガイドで使用する用語

このページは、Ankole のユーザードキュメントとインターフェースで使用される用語を定義します。括弧内の名前は、サードパーティのプラットフォーム、設定フィールド、API に対応します。以降のセクションでは短縮形を使用します。

正式用語 意味 短縮形
Private deployment instance 企業がデプロイして管理する、1 つの完全な Ankole システム Instance
Principal Ankole で identity と権限を持つことができる人、Agent、またはシステムサービス Principal
Identity Provider (IdP) Console の SSO を提供し、社員、連絡先、組織構造を同期する外部の identity ソース IdP
Chat platform Slack、Teams、Lark/Feishu、DingTalk、WeCom、Telegram、Discord、LINE、WhatsApp、メールボックスなどの外部の会話プラットフォーム Platform
Channel Provider メッセージを受信して Agent の返信を送信する 1 つのチャットアプリまたは bot 設定 Channel Provider
Signal Routing Rule (Signal Binding) signal ソースから Agent にメッセージまたはイベントを送信するルール Routing rule
LLM Provider モデルサービスのエンドポイント、credential、利用可能なモデルを保存する設定 LLM Provider
Background Agent Jobs profile (内部キー: coding) Background Agent Jobs の AIGateway provider とモデルを選択します。通常の会話はコード量によってこれを選択しません Background Agent Jobs

Agent にセットアップを完了させる

このプロンプトを Codex、Claude Code、またはターミナルを操作できる別の Agent に送信できます。

https://ankole.agentbull.com/ja-JP/docs/quickstart/index.md を使って、Ankole のプライベートデプロイメントインスタンスのデプロイと設定を手伝ってください。 まず、私の環境を調査し、Docker Compose、Kubernetes、またはソースからのインストールのいずれかを推奨してください。次に、Identity Provider(IdP)、LLM Provider、Agent、Channel Provider、Signal Routing Rule(Signal Binding)のセットアップを手伝ってください。IdP と IM プラットフォームを指定していない場合は、使用したい identity ソースとチャットプラットフォームを尋ねてください。勝手に選択しないでください。 chat やコマンドの出力に secret を露出しないでください。選択した IM で実際の Agent の返信を受け取ったときにだけ、作業は完了とみなします。

1. Ankole をデプロイする

1 台のホストには Docker Compose を、エンタープライズのデプロイメントには Kubernetes を使用してください。開発とデバッグにはソースからインストールしてください。

多くのチームに最適な出発点です。Docker を実行する Linux、macOS、Windows の 1 台のホストで、PostgreSQL、control plane、1 つの Agent Computer Worker、Caddy HTTPS を実行できます。

始める前に

  • Linux amd64 または arm64 のコンテナを実行できる Linux、macOS、または Windows ホスト
  • Compose プラグイン付きの Docker Engine、または Docker Desktop
  • 永続ディスク、DNS 名、そして 80 と 443 のポート

基本設定

Docker Compose でインストールする

provider の API key はこのデプロイメントファイルに含めないでください。サインイン後に Console で追加します。

  1. 01

    デプロイメントパッケージを入手する

    bash
    git clone https://github.com/AgentBull/ankole.git
    cd ankole/tools/deploy/docker-compose
    cp .env.example .env
    chmod 600 .env
  2. 02

    3 つの独立した secret を生成する

    このコマンドをコピーして実行してください。その完全な出力を .env に貼り付けます。

    bash
    printf '%s\n' \
      '# PostgreSQL database password' \
      "POSTGRES_PASSWORD=$(openssl rand -hex 32)" \
      '' \
      '# ANKOLE master encryption key' \
      "ANKOLE_SECRET_BASE=$(openssl rand -hex 32)" \
      '' \
      '# Authentication key shared by the ANKOLE control plane and Agent Workers' \
      "ANKOLE_RUNTIME_FABRIC_WORKER_AUTH_KEY=$(openssl rand -hex 32)"
  3. 03

    公開ホストを設定する

    ANKOLE_HOST に、このホストを指す DNS 名を設定してください。ACME_EMAIL には、証明書の通知を受信できるアドレスを設定してください。

    ANKOLE_HOST
    ankole.example.com
    ユーザーと provider の callback が使用する HTTPS ホスト。
    ACME_EMAIL
    ops@example.com
    Caddy の証明書管理用の連絡先アドレス。
  4. 04

    スタックを起動して確認する

    Compose は PostgreSQL を待ち、migration を実行し、Worker key を保存した後、control plane、Worker、Caddy を起動します。

    bash
    docker compose pull
    docker compose up -d
    docker compose ps
  5. 05

    初回のセットアップを開く

    https://<ANKOLE_HOST>/setup を開き、activation code を入力してください。

    bash
    docker compose logs control-plane | grep "SETUP ACTIVATION CODE"

2. 最初に identity provider をセットアップする

Ankole はエンタープライズ内のプライベートデプロイメント用に設計されています。各エンタープライズは 1 つのインスタンスを運用します。そのインスタンス内では、Agent、社員、システムサービスが Principal として表現され、認可モジュールがそれらの権限を管理します。

Hermes Agent や OpenClaw と同様に、Ankole はチャットチャンネルに接続します。また、エンタープライズの identity ソースにも接続し、社員、ディレクトリの連絡先、組織構造を同期します。チャットチャンネルを設定する前に、Identity Provider(IdP)を設定してください。

設定 制御するもの 設定場所
Identity Provider (IdP) Console の SSO、およびエンタープライズのディレクトリから同期される社員、連絡先、組織構造、権限グループ 最初に /setup、その後 Console → Identity Providers
Channel Provider メッセージを受信して Agent の返信を送信する IM アプリまたは bot Console → Signal Routing

identity ソースとチャットチャンネルには異なるプラットフォームを使用できます。社員は Google Workspace でサインインし、Slack で Agent と会話できます。Entra ID が identity を提供し、Lark、Slack、DingTalk、Teams、または WeCom が会話を運ぶこともできます。

お使いの IdP のセットアップを完了する

エンタープライズが使用する identity ソースを選択してください。各タブは provider のコンソールから始まり、最初のサインインとディレクトリ同期で終わります。

アダプタを初めて有効にする場合は、最初のサインインの後に control plane を再起動してください。この再起動で、ディレクトリ接続や Graph サブスクリプションなどのプラグインのバックグラウンド作業が開始されます。

Console へのサインイン、ワークスペースメンバーとユーザーグループの同期に 1 つの Slack app を使用します。デフォルトのセットアップには、OAuth client、Bot Token、App Token が必要です。

始める前に

  • Slack app を作成してインストールできるワークスペース管理者
  • Ankole の公開 HTTPS アドレス
  • 最初のサインイン用のワークスペースメンバーアカウント

基本設定

Slack IdP をセットアップする

  1. 01

    Ankole から callback URL をコピーする

    https://<ANKOLE_HOST>/setup を開き、activation code を入力してください。プラグインページで Slack Adapter を選択し、選択を保存してから Slack を選択してください。

    Configuration ID(Provider ID)は slack-main のままにしてください。Copy を使ってログイン callback URL をコピーしてください。この URL を手で入力したり変更したりしないでください。

  2. 02

    Slack app を作成する

    Slack API の Your Apps を開き、Create New App → From scratch を選択してください。アプリ名を入力し、社員が所属するワークスペースを選択してください。

    Basic Information → App Credentials を開いてください。Client ID と Client Secret をコピーしてください。

  3. 03

    ログイン callback を登録する

    OAuth & Permissions → Redirect URLs を開いてください。Add New Redirect URL を選択し、Ankole の完全な URL を貼り付けて保存してください。

    Ankole はデフォルトで openid、profile、email のサインイン scope を要求します。それらを chat bot の scope に置き換えないでください。

  4. 04

    ディレクトリアクセスを許可して Bot Token を取得する

    OAuth & Permissions で、下記の 3 つの scope を Bot Token Scopes に追加してください。その後、Install to Workspace を選択してインストールを承認してください。

    • users:read

      メンバープロファイルを読み取ります

    • users:read.email

      メンバーのメールアドレスを読み取ります

    • usergroups:read

      ユーザーグループとそのメンバーを読み取ります

    インストール後に Bot User OAuth Token をコピーしてください。xoxb- で始まる必要があります。scope を変更するたびにアプリを再インストールしてください。

  5. 05

    App Token を取得して Socket Mode を有効にする

    Basic Information → App-Level Tokens を開いてください。Generate Token and Scopes を選択し、下記の scope を追加して、生成された xapp- token をコピーしてください。その後、Socket Mode を開き、Enable Socket Mode をオンにしてください。

    • connections:write

      App Token が Socket Mode 接続を開けるようにします

  6. 06

    ディレクトリイベントを購読する

    Event Subscriptions を開いてイベントを有効にしてください。Subscribe to bot events で、下記の 5 つのイベントをすべて追加してください。

    • team_join

      メンバーがワークスペースに参加します

    • user_change

      メンバーのプロファイルが変更されます

    • subteam_created

      ユーザーグループが作成されます

    • subteam_updated

      ユーザーグループが変更されます

    • subteam_members_changed

      ユーザーグループのメンバーシップが変更されます

  7. 07

    Slack の値を Ankole に入力する

    Sync directory と Sync directory changes をオンにしたままにしてください。Validate configuration を選択してサインインしてください。その後、Slack の認可を完了してください。

    • Client ID: Basic Information の Client ID
    • Client Secret: 同じページの Client Secret
    • Workspace ID: 任意。Slack の Web URL の /client/ の後に続く T… の値を入力すると、サインインするワークスペースを事前選択できます。ディレクトリ同期は制限されません
    • Bot User OAuth Token: xoxb- token
    • App-Level Token: xapp- token
  8. 08

    サインインと最初の同期を確認する

    Slack が Ankole に戻ると、このユーザーが最初の root administrator になります。Console → Identity Providers を開き、slack-main を選択して Run full sync を選択してください。

    同期が終わったら、Console → Principals と Principal groups で、ワークスペースのメンバーと Slack のユーザーグループを確認してください。

3. LLM Provider を追加して Agent を作成する

Agent のモデルプロファイルはモデル参照を保存するため、最初に LLM Provider を追加してください。Console にサインインし、Providers → New provider を開いて、provider の種類を選択し、安定した Provider ID を付け、エンドポイントと credential のフィールドを入力して保存してください。

provider の credential は control plane 内で暗号化されたまま保持されます。デプロイメントの環境ファイルや Agent ファイルに配置しないでください。

Agents → New Agent を開いてください。Agent に安定した UID、明確な表示名、そして何を所有し何が許容可能な結果とみなされるかを示す mission を与えてください。

次に、そのモデルプロファイルを設定します。

プロファイル 初回実行での用途
primary メインの推論モデル
light 短く頻繁な仕事
heavy 難しい総合

Agent が実行できるようになるには、3 つすべてが必要です。最初の会話では、同じ既知の正常な provider とモデルを 3 つすべてにバインドできます。エンドツーエンドの経路が動作した後にのみ分割してください。

4. チャットチャンネルを接続して signal routing ルールを作成する

Console でチャットプラットフォームの Control Plane Plugin を有効にし、そのプラットフォーム上で bot またはアプリケーションを作成してください。両方が同じプラットフォームを使用する場合でも、IdP とチャットの役割には別々のアプリを使用してください。この分離により、サインインとディレクトリの権限が bot の権限から離れます。また、credential のローテーションとアプリのリリースも分離されます。

通常、1 つのチャットアプリは 1 つの bot identity を表します。複数の Agent が異なる bot 名、アバター、または権限を必要とする場合は、そのプラットフォームで複数のアプリを作成してください。アプリを準備したら、Console でその routing ルールを作成し、意図する Agent に接続してください。

Slack、Teams、Lark/Feishu、DingTalk、WeCom はエンタープライズ向けプラットフォームです。そのユーザーは IdP が同期したディレクトリに由来します。Telegram、Discord、LINE、WhatsApp はコンシューマー向け IM です。そのユーザーには従業員レコードがないため、Agent が応答する前に、管理者が アイデンティティ → 保留中のマッピング で新しい送信者ごとにアカウントへマッピングします。WhatsApp では、既知のアカウントがすでにその電話番号を所有している場合、送信者は自動的にマッピングされます。Email は専用のメールボックスを接続し、送信者は明示的なメールの identity 紐付けによってのみ既知になります。

Slack は Socket Mode を使用します。Ankole はアウトバウンドの WebSocket を開くため、チャットの経路に公開の Slack webhook は不要です。

始める前に

  • Slack app を作成してインストールする権限
  • テスト用のチャンネルまたはダイレクトメッセージ

基本設定

Slack app を準備する

  1. 01

    アプリを作成して Socket Mode を有効にする

    Slack app をゼロから作成してください。Basic Information で App-Level Token を作成し、下記の scope を追加してから Socket Mode を有効にしてください。

    • connections:write

      App Token が Socket Mode 接続を開けるようにします

  2. 02

    チャットとチャンネル状態のイベントを購読する

    Event Subscriptions → Subscribe to bot events を開いてください。下記の各イベントを追加してください。このセットは、Slack アダプタが実装するメッセージ、リアクション、チャンネル状態の機能に一致します。

    • app_mention

      チャンネルの @ メンションを受信します

    • message.channels

      パブリックチャンネルのメッセージを受信します

    • message.groups

      プライベートチャンネルのメッセージを受信します

    • message.im

      ダイレクトメッセージを受信します

    • message.mpim

      複数人ダイレクトメッセージを受信します

    • reaction_added

      追加されたリアクションを受信します

    • reaction_removed

      削除されたリアクションを受信します

    • member_joined_channel

      チャンネルに参加したメンバーを同期します

    • member_left_channel

      チャンネルを離れたメンバーを同期します

    • channel_rename

      チャンネルの名称変更を同期します

    • group_rename

      プライベートチャンネルの名称変更を同期します

    • channel_deleted

      チャンネルの削除を同期します

    • channel_archive

      チャンネルのアーカイブを同期します

  3. 03

    ダイレクトメッセージを有効にする

    App Home → Show Tabs を開いてください。Display Messages tab をオンにし、Allow users to send Slash commands and messages from the messages tab を選択してください。Messages タブだけでは表示領域が現れるだけで、ユーザーは Agent にダイレクトメッセージを送れません。

  4. 04

    Slack ネイティブの対話性を有効にする

    Interactivity & Shortcuts を開き、Interactivity を有効にしてください。Socket Mode は既存の WebSocket 経由で Block Kit のボタンアクションを配信するため、公開の Request URL は不要です。

  5. 05

    完全なチャット scope を付与してアプリをインストールする

    OAuth & Permissions → Bot Token Scopes で、下記の各 scope を追加してください。このセットは Ankole が呼び出す Slack API のみをカバーします。未使用の assistant、workflow、document、meeting の scope は付与しないでください。

    • app_mentions:read

      bot に言及したメッセージを読み取ります

    • channels:read

      パブリックチャンネルとそのメンバーを同期します

    • channels:history

      パブリックチャンネルのメッセージを読み取り、返信を調整します

    • groups:read

      プライベートチャンネルとそのメンバーを同期します

    • groups:history

      プライベートチャンネルのメッセージを読み取り、返信を調整します

    • im:read

      ダイレクトメッセージの会話を同期します

    • im:history

      ダイレクトメッセージを読み取り、返信を調整します

    • mpim:read

      複数人ダイレクトメッセージとそのメンバーを同期します

    • mpim:history

      複数人ダイレクトメッセージを読み取り、返信を調整します

    • chat:write

      bot メッセージを送信、更新、削除します

    • reactions:read

      リアクションの変更を受信します

    • reactions:write

      リアクションを追加および削除します

    • files:read

      メッセージに添付されたファイルを読み取ります

    • files:write

      Agent が送信するファイルをアップロードします

    • users:read

      チャンネルメンバーを特定し、bot アカウントを除外します

    scope を変更した後は、アプリをワークスペースに再インストールし、新しい Bot Token を Ankole に書き込んでください。

  6. 06

    Console のフィールドを収集する

    botToken
    xoxb-…
    Bot User OAuth Token。xoxb- プレフィックスが必要です。
    appToken
    xapp-…
    Socket Mode 用の App-Level Token。xapp- プレフィックスが必要です。

Console で接続を完了する

現在のリリースは直接接続を使用します。1 つの routing ルールが 1 つの Channel Provider を 1 つの Agent に接続します。これは、アダプタ、アプリの credential、ターゲット Agent、グループメッセージの動作を記録します。bot ごとに別のルールを作成してください。

Console で、Signal Routing → New routing rule を開き、設定してください:

フィールド 選択するもの
Target Agent ステップ 3 で作成した Agent
Adapter Slack、Teams、Lark/Feishu、DingTalk、WeCom、Telegram、Discord、LINE、WhatsApp、または Email
Rule name slack-main や lark-main などの安定した名前
Group message mode addressed_only から始める
Channel settings チャンネルタブの credential と値を貼り付ける

ルールを保存してください。リストに enabled として表示される必要があります。フォームが credential を拒否した場合は、IM をテストする前にそのエラーを修正してください。アダプタはまだ接続を開いていません。

5. IM で Agent と話す

bot をテスト用の会話に追加してください。グループチャットでは、明示的な @ メンションから始めます:

@Ankole 何ができますか。どのチームにサービスを提供していますか?

最初の実際のモデル返信の後、Agent の mission、モデル、グループチャットポリシーをチーム用に調整してください。

Agent が返信しない場合

次の順序で、一度に 1 つの境界を確認してください:

  1. 最新の provider アプリのバージョンが公開され、テストユーザーが利用できる。
  2. bot がチャンネル、チーム、または会話にインストールされている。
  3. 必要なメッセージイベントと scope がアクティブである。
  4. routing ルールが有効で、意図する Agent を指している。
  5. Agent が primary、light、heavy のモデルプロファイルを持っている。
  6. LLM Provider の credential とモデルセレクタが有効である。
  7. 少なくとも 1 つの Worker が準備完了である。

Compose の場合は、docker compose logs -f control-plane worker を調べてください。Kubernetes の場合は、control plane と Worker の pod ログを調べてください。関連するエラーのみを読み、環境変数や secret を出力しないでください。

返信を受け取ったら、Agents、Signal Routing ルール、または Background Agent Jobs に進んでください。