OSS Agents JP
オープンソース AI エージェント 日本語ガイド
← 一覧へ
agentapi
CLAUDE

agentapi

agentapi

Claude Code / Codex / Aider / Goose を共通 HTTP API として扱えるラッパー。Web UI からエージェントを操作するアプリやエンタープライズ統合を構築できる。

#HTTP API#ラッパー#Coder
EDITOR'S TAKE

編集部メモ

複数のコーディングエージェントを HTTP API で統一制御

Claude Code、Aider、Goose、GitHub Copilot など異なるコーディングエージェントを単一の HTTP API で統一的に操作できるラッパーです。各ツールを個別に起動・管理するのではなく、API 経由で切り替え利用でき、Web UI チャットインターフェース付きです。複数エージェントを試行錯誤したい組織や、エージェント間の連携(MCP サーバー化、PR レビュー自動化など)を構築したいチーム向けです。ただし各エージェント固有の高度なオプションが制限される可能性があり、複雑なカスタマイズには別途実装が必要な場合があります。

USE CASES

こんな場面で使う

  • チーム導入前に複数のコーディングエージェントをシームレスに比較検証する
  • Web UI から複数エージェントを一元的に操作し、用途ごとに使い分ける
  • エージェント間制御や自動 PR レビューなど、高度な自動化パイプラインを構築する
DIFFERENTIATOR

類似ツールとの違い

LangChain は LLM 汎用、agentapi はコーディングエージェント特化です。Claude Code、Aider、Goose といった異なるエージェントの非統一性を吸収し、同じインターフェース下で管理できる利点があります。エージェント選定の試行錯誤が効率化します。
CAVEAT

注意点・向かない用途

⚠️ HTTP API 層を経由することで各エージェント固有の機能が制限される可能性があり、複雑なカスタマイズは別途実装が必要です。API 層のレイテンシ増加や、対応エージェント追加時のメンテナンスコストも課題です。
BEST FOR

向いている読者

エンタープライズエンジニアDevOps・自動化担当者AI エージェント研究・比較検証組織

— OSS Agents JP 編集部による独自評価(agentapi に関する観察)

REPO STATS

リポジトリ統計

⭐ Stars
-
🍴 Forks
-
⚠️ Open Issues
-
🌿 Language
-
📄 License
-
🕒 最終更新
-
📅 公開日
-
🌿 Branch
-
REFERENCE

公式ドキュメント(README)

本ハブの独自評価は上記「編集部メモ」が一次情報です。以下は GitHub README の参考転載(折りたたみ)。

📖 GitHub README の日本語訳を読む(AI 自動翻訳 / 参考情報)

— AI による自動翻訳 (2026.05.07 更新)。正確な情報は GitHub の原文 をご確認ください。

AgentAPI

Claude Code、AmazonQOpencodeGooseAiderGeminiGitHub CopilotSourcegraph AmpCodexAuggie、およびCursor CLI を HTTP API で制御します。

agentapi-chat

AgentAPI は以下のような用途で使用できます:

  • コーディングエージェント向けの統一されたチャットインターフェースを構築する
  • 1 つのエージェントが別のコーディングエージェントを制御できるようにする MCP サーバーのバックエンドとして使用する
  • プルリクエストレビューをエージェントに送信するツールを作成する
  • その他にも多くの使い方があります!

クイックスタート

  1. agentapi をインストールしてください:

    OS=$(uname -s | tr "[:upper:]" "[:lower:]");
    ARCH=$(uname -m | sed "s/x86_64/amd64/;s/aarch64/arm64/");
    curl -fsSL "https://github.com/coder/agentapi/releases/latest/download/agentapi-${OS}-${ARCH}" -o agentapi && chmod +x agentapi

    または、最新のリリースバイナリをリリースページからダウンロードすることもできます。

  2. インストールを確認してください:

    agentapi --help

    macOS では、システムがバイナリを検証できないというメッセージが表示された場合は、System Settings → Privacy & Security に移動し、「Open Anyway」をクリックしてからコマンドを再度実行してください。

  3. Claude Code サーバーを実行してください(システムに claude がインストールされており、PATH に含まれていることを前提としています):

    agentapi server -- claude

    claudePATH にないというエラーが表示されても、シェルから実行できる場合は、which claude を使用して完全なパスを取得し、代わりにそのパスを使用してください。

  4. エージェントにメッセージを送信してください:

    curl -X POST localhost:3284/message \
      -H "Content-Type: application/json" \
      -d '{"content": "Hello, agent!", "type": "user"}'
  5. 会話履歴を取得してください:

    curl localhost:3284/messages
  6. http://localhost:3284/chat でチャット Web インターフェースを試してください。

CLI コマンド

agentapi server

エージェントを制御できる HTTP サーバーを実行します。エージェントに追加の引数を渡したい場合は、-- フラグの後に完全なエージェントコマンドを渡してください。

agentapi server -- claude --allowedTools "Bash(git*) Edit Replace"

agentapi を使用して Aider および Goose エージェントを実行することもできます:

agentapi server -- aider --model sonnet --api-key anthropic=sk-ant-apio3-XXX
agentapi server -- goose

Claude、Codex、Opencode、Copilot、Gemini、Amp または CursorCLI を使用する場合は、常にエージェントタイプを明示的に指定してください(例:agentapi server --type=codex -- codex)。指定しないと、メッセージのフォーマットが崩れる可能性があります。

OpenAPI スキーマは openapi.json で利用できます。

デフォルトでは、サーバーはポート 3284 で実行されます。さらに、サーバーは同じ OpenAPI スキーマを http://localhost:3284/openapi.json で公開し、利用可能なエンドポイントをドキュメンテーション UI で http://localhost:3284/docs で公開します。

4 つのエンドポイントがあります:

  • GET /messages - エージェントとの会話内のすべてのメッセージのリストを返します
  • POST /message - エージェントにメッセージを送信します。200 応答が返された場合、AgentAPI はエージェントがメッセージの処理を開始したことを検出しています
  • GET /status - エージェントの現在のステータスを返します。「stable」または「running」のいずれかです
  • GET /events - エージェントからのイベントの SSE ストリーム:メッセージとステータスの更新

許可されたホスト

デフォルトでは、サーバーはホストヘッダーが localhost に設定されたリクエストのみを許可します。AgentAPI を他の場所でホストしたい場合は、AGENTAPI_ALLOWED_HOSTS 環境変数または --allowed-hosts フラグを使用して変更できます。ホストはホスト名のみである必要があります(ポートなし)。サーバーは認可時に受け取ったリクエストのポート部分を無視します。

任意のホストからのリクエストを許可するには、許可されたホストとして * を使用します。

agentapi server --allowed-hosts '*' -- claude

特定のホストを許可するには、次を使用します:

agentapi server --allowed-hosts 'example.com' -- claude

複数のホストを指定するには、--allowed-hosts フラグを使用するときはカンマで区切られたリストを、AGENTAPI_ALLOWED_HOSTS 環境変数を使用するときはスペースで区切られたリストを使用します。

agentapi server --allowed-hosts 'example.com,example.org' -- claude
# or
AGENTAPI_ALLOWED_HOSTS='example.com example.org' agentapi server -- claude

許可されたオリジン

デフォルトでは、サーバーは http://localhost:3284http://localhost:3000、および http://localhost:3001 からの CORS リクエストを許可します。AgentAPI へのクロスオリジンリクエストを行うことができるオリジンを変更する場合は、AGENTAPI_ALLOWED_ORIGINS 環境変数または --allowed-origins フラグを使用して変更できます。

任意のオリジンからのリクエストを許可するには、許可されたオリジンとして * を使用します:

agentapi server --allowed-origins '*' -- claude

特定のオリジンを許可するには、次を使用します:

agentapi server --allowed-origins 'https://example.com' -- claude

複数のオリジンを指定するには、--allowed-origins フラグを使用するときはカンマで区切られたリストを、AGENTAPI_ALLOWED_ORIGINS 環境変数を使用するときはスペースで区切られたリストを使用します。オリジンはプロトコル(http:// または https://)を含む必要があり、ワイルドカード(例:https://*.example.com)をサポートします:

agentapi server --allowed-origins 'https://example.com,http://localhost:3000' -- claude
# or
AGENTAPI_ALLOWED_ORIGINS='https://example.com http://localhost:3000' agentapi server -- claude

agentapi attach

実行中のエージェントのターミナルセッションにアタッチします。

agentapi attach --url localhost:3284

ctrl+c を押してセッションからデタッチします。

動作方法

AgentAPI はメモリ内ターミナルエミュレータを実行します。API呼び出しを適切なターミナルキーストロークに変換し、エージェントの出力を個別のメッセージに解析します。

ターミナル出力をメッセージに分割

メッセージには 2 つのタイプがあります:

  • ユーザーメッセージ:ユーザーからエージェントに送信されるメッセージ
  • エージェントメッセージ:エージェントからユーザーに送信されるメッセージ

ターミナル出力から個別のメッセージを解析するために、以下の手順を実行します:

  1. ユーザーメッセージが送信される前の初期ターミナル出力は、エージェントの最初のメッセージとして扱われます。
  2. ユーザーが API 経由でメッセージを送信すると、キーストロークが送信される前にターミナルのスナップショットが取得されます。
  3. ユーザーメッセージがエージェントに送信されます。この時点から、ターミナル出力が変更されるたびに新しいスナップショットが取得されます。初期スナップショットと比較され、初期コンテンツの下に表示される新しいテキストがエージェントの次のメッセージとして扱われます。
  4. 新しいユーザーメッセージが送信される前にターミナル出力が再度変更された場合、エージェントメッセージが更新されます。

これにより、ターミナル出力をメッセージのシーケンスに分割できます。

エージェントメッセージから TUI 要素を削除

各エージェントメッセージには、エンドユーザーにとって有用でない余分な部分が含まれています:

  • メッセージの開始時のユーザー入力。コーディングエージェントは、入力をターミナルで見やすくするために、ユーザーに入力をエコーバックすることがよくあります。
  • メッセージの最後にある入力ボックス。これはユーザーが通常入力を入力する場所です。

AgentAPI は自動的にこれらを削除します。

  • ユーザー入力については、ユーザーの最後のメッセージからのテキストを含む行を削除します。
  • 入力ボックスについては、メッセージの最後にある、一般的な TUI 要素を含む行を探します。例えば > または ------ のような行です。

Claude Code、Goose、Aider、または Codex が TUI を更新したらどうなりますか?

ターミナル出力をメッセージのシーケンスに分割することは、TUI 構造に依存しないため、引き続き機能するはずです。余分なビットを削除するロジックは、新しい要素に対応するために更新が必要になる場合があります。AgentAPI は引き続き使用できますが、エージェントメッセージに一部の余分な TUI 要素が表示される可能性があります。

ロードマップ

フィードバック待機中、以下の機能を検討しています:

長期的なビジョン

短期的には、AgentAPI はコーディングエージェントをプログラムで制御する方法の問題を解決します。時間が経つにつれて、主要なエージェントが適切な SDK をリリースすることを期待しています。その時点で AgentAPI がまだ必要かどうか疑問に思う人がいるかもしれません。これはエージェントベンダーが共通の API に標準化することを決定するか、または各自が独自の形式に固執するかによって異なると思います。

前者の場合、公式 SDK に優先して AgentAPI は廃止されます。後者の場合、AgentAPI を任意のコーディングエージェントを制御するユニバーサルアダプターにすることが目標になります。これにより、AgentAPI を使用する開発者がコードを変更せずにエージェント間を切り替えることができます。

RELATED

同じカテゴリの他のツール