チャットワークスペースにAIエージェントを置きたいが、ベンダーロックインや従量課金を避けたい——そんなニーズに応えるOSSが登場しました。
この記事では、CopilotKitが2026年6月26日に公開したOpenTagの概要と、Slack・Microsoft Teams・Discordなど複数プラットフォームで同一エージェントを動かす仕組み、Generative UIやHuman in the Loopといった実装の要点を整理します。
この記事でわかること
- OpenTagが何を解決するツールか
- Generative UI・Human in the Loop・スレッド全文脈などの主要機能
- Slack・Teams・Discord・Telegram・WhatsAppへの対応状況
- セルフホストで動かすための最小構成
OpenTagとは何か
https://github.com/CopilotKit/OpenTag
OpenTagは、Slackなどのチャット上でAIエージェントを動かすためのオープンソースプロジェクトです。CopilotKitのAtai Barkai氏が2026年6月にリポジトリを公開し、「Claude Tagのより良いオープンソース版」として位置づけています。
Claude TagはAnthropicが提供するSlack向けAI連携機能で、スレッドの文脈を読み取りながら会話やツール呼び出しを行います。OpenTagは同じ体験を、自前ホスト・任意のLLM・独自ツール接続という形で再現することを目指しています。READMEでは「per-seat pricing(席単位課金)もロックインもない」と明記されており、企業内でエージェント基盤を自分たちで握りたいチーム向けの選択肢です。
リポジトリはMITライセンスで、2026年6月26日にGitHub上で公開されました。
なぜ今注目されるのか
チャットツールはすでに業務の中心にあります。一方で、Slack公式のAI連携やClaude Tagのようなマネージド機能は、利用モデルや接続先ツール、課金体系がプラットフォーム側に縛られます。
OpenTagはこの制約を外し、次の3点を同時に満たす設計です。
- モデル選択の自由 — OpenAI・Anthropic・GoogleのAPIキーを環境変数で渡し、
AGENT_MODELでprovider/model形式を指定できます。デフォルトはopenai/gpt-5.5です - ツール接続の自由 — LinearやNotionはMCP(Model Context Protocol)経由で接続し、独自ツールも追加できます
- UI表現の自由 — テキスト返答だけでなく、表・グラフ・チケットカードなどをチャット内に直接描画します
発表ポストでは、Generative UI・Human in the Loop・Streaming replies・Full threads contextの4機能が強調されています。いずれもエージェント実装でよく求められる要件であり、参考実装としてそのまま学べる構成になっています。
主要機能の中身
Generative UI(生成UI)
エージェントの応答をテキストだけで終わらせず、スレッド内に表・棒グラフ・ステータスカードなどをインライン描画します。README付属のデモ動画(約50秒)では、内訳・表・棒グラフを順に描画し、その後チケット起票に進む流れが示されています。
チャートやダイアグラムの描画にはPlaywrightがheadless Chromium上でHTMLをPNG化する仕組みを使い、データはローカルで処理されます。CDNからライブラリを読み込みますが、レンダリング自体は外部サービスに送らない設計です。
Human in the Loop(人間承認)
Linearへの課題作成やNotionへのページ書き込みなど、破壊的な操作はconfirm_writeゲートを通過します。エージェントが書き込みツールを呼ぶ前に、チャット上でCreate / Cancelボタンが表示され、ユーザーのクリックを待ってから実行します。誤起票や意図しない更新を防ぐ実装パターンとして、そのまま流用できます。
Streaming replies(ストリーミング応答)
応答を一括投稿せず、生成中のテキストを逐次チャットに流します。AG-UI(Agent-User Interaction)プロトコル上でエージェントとボットが通信するため、Webアプリ向けに組んだエージェントと同じイベントモデルをチャット側でも維持できます。
Full threads context(スレッド全文脈)
read_threadツールが会話スレッドのメッセージを取得し、エージェントの判断材料にします。「このスレッドを要約して」「この議論をバグとして起票して」といった依頼が、実際の会話内容に基づいて処理されます。アップロードされたCSV・JSON・PDF・画像も解析対象に含められます。
1つのコードで複数チャットに対応
OpenTagのapp/ディレクトリはプラットフォーム非依存のボット本体です。createBotにアダプターの配列を渡す設計で、環境変数が設定されているプラットフォームだけが起動します。
| プラットフォーム | 主な設定変数 |
|---|---|
| Slack | SLACK_BOT_TOKEN、SLACK_APP_TOKEN |
| Discord | DISCORD_BOT_TOKEN、DISCORD_APP_ID |
| Telegram | TELEGRAM_BOT_TOKEN |
WHATSAPP_ACCESS_TOKEN ほか |
|
| Microsoft Teams | CopilotKitの@copilotkit/bot-teamsで別途構築可能 |
発表時点ではSlackとMicrosoft Teamsが「today(現時点で利用可能)」、Discord・Google Chatなどは順次対応と案内されています。setup.mdではDiscord・Telegram・WhatsAppの設定手順がすでに記載されており、同一のツール群・Human in the Loopゲート・レンダリング処理をそのまま共有します。
アーキテクチャの全体像
OpenTagは大きく2プロセスで動きます。
- runtime(
runtime.ts) — CopilotKitのBuiltInAgentがLLMとMCPツールを束ね、AG-UIでエージェントAPIを公開します。PythonやLangGraphは不要で、TypeScriptのみで完結します - bot(
app/) — 各チャットプラットフォームのアダプターがメンションやスラッシュコマンドを受け取り、runtimeにリクエストを送ります
Notion連携を使う場合は、公式@notionhq/notion-mcp-serverをラップした小さなHTTPサイドカーを別途起動します。Linearはホスト型MCPにAPIキーをBearerトークンとして渡すだけで接続できます。
スラッシュコマンドとして/agent、/triage、/preview、/file-issueの4つが用意されており、メンションなしでエージェントを呼び出したり、起票内容を自分だけにプレビューしたりできます。
動かし方の最小手順
現時点では、CopilotKitモノレポ内のexamples/slackとして動かすのが公式に推奨される方法です。@copilotkit/bot-*パッケージのnpm公開が完了すれば、OpenTagリポジトリ単体でのnpm installも可能になる見込みです。
手順の概要は次のとおりです。
- Slackアプリをapi.slack.com/appsで作成し、同梱の
slack-app-manifest.yamlをマニフェストとして貼り付ける .envにSLACK_BOT_TOKEN、SLACK_APP_TOKEN、OPENAI_API_KEY(またはANTHROPIC_API_KEY)を設定する- モノレポルートで
pnpm installのあと、pnpm --filter slack-example runtimeでエージェント(ポート8200)、pnpm --filter slack-example devでボットを起動する - チャンネルのスレッドで
@OpenTag summarize this thread and file it as a bugのようにメンションする
チャート描画を使う場合はnpx playwright install chromiumでChromiumを入れてください。永続化が必要ならREDIS_URLを設定し、@copilotkit/bot-store-redisでApprove/Cancelの状態を再起動後も保持できます。
READMEは正直に「チャットエージェントのホスティング設定は簡単ではない」と記しており、運用負荷を避けたい場合はCopilotKitのマネージドサービス(ウェイトリスト受付中)への移行も選択肢です。
Claude Tagとの違い
| 観点 | Claude Tag(Anthropic提供) | OpenTag |
|---|---|---|
| ライセンス | クローズドな公式連携 | MIT・オープンソース |
| ホスティング | Anthropic / Slack側 | 自前サーバー |
| LLM | Claude固定 | OpenAI・Anthropic・Googleなど任意 |
| ツール拡張 | 提供範囲内 | MCP・独自ツールを自由に追加 |
| 対応チャット | Slack中心 | Slack・Teams・Discord・Telegram・WhatsApp |
Claude Tagが「すぐ使える公式体験」なら、OpenTagは「エージェント基盤を自分で設計・運用したいチーム向けの実装テンプレート」です。runtime.tsのシステムプロンプトを書き換えるだけで別用途のエージェントに差し替えられ、app/をコピーすれば独自ボットの起点にもなります。
こんなチームに向いている
- 社内SlackやTeamsにオンデマンドのトリアージ・起票エージェントを置きたい開発チーム
- LinearやNotionと連携しつつ、承認フローをチャット内に組み込みたい運用チーム
- AG-UIプロトコルでWebとチャットのエージェント体験を揃えたいプロダクトチーム
- モデルやツールの選定権をベンダーに渡したくないセキュリティ要件のある組織
逆に、インフラ構築やBotトークン管理を任せたい場合は、セルフホストよりマネージド版の検討が現実的です。READMEでもその前提が明示されています。
今後の見通し
OpenTagは公開直後のプロジェクトであり、Slack向けe2eテストは新しいcreateBot APIへの移行中です。Telegram向けの手動スモークテストは動作確認済みとされています。npmパッケージの0.1.x系が揃えば、スタンドアロンインストールへの切り替えがREADME上でも予告されています。
CopilotKit側はAG-UIを軸に、Slackを「first-class AG-UI frontend」として位置づけており、ストリーミング・ツール呼び出し・Human in the Loop・スレッド文脈をWebアプリと同じプロトコルで扱う方針です。OpenTagはその思想を具体的なボット実装として落とし込んだリファレンスと言えます。
チャットはもはや通知の受け皿ではなく、エージェントが仕事をする場所になりつつあります。モデルもツールも自分で選び、承認フローもUIもコードで制御できる——その選択肢をOSSとして手に入れられる点が、OpenTagの価値です。