Multica Docs

デーモンとランタイム

Multica がどのようにコンピュータを接続し、AI コーディングツールを検出して実行を処理するかを説明します。

Multica は作業の記録と調整を担い、接続されたコンピュータが実行を担います。コンピュータ上のデーモン(daemon)が実行を取得し、そのマシンにインストールされた AI コーディングツールを呼び出します。

Qoder Cloud Agent リモートランタイム

Qoder Cloud Agent は割り当てられたタスクをリモートセッションで実行します。Multica サーバーが既存のデーモンプロトコルを使うブリッジを管理するため、ユーザーがローカルデーモンを起動する必要はありません。

事前準備

  • ワークスペース管理者の権限が必要です。Qoder 接続はワークスペースごとに 1 つです。
  • Qoder で個人アクセストークン(PAT)、1 つ以上の実行環境、使用する QCA エージェントを作成します。モデル、ツール、スキルは Multica ではなく Qoder の QCA エージェントで設定します。
  • セルフホスト環境では、サーバーに MULTICA_VCS_SECRET_KEY(base64 エンコードされた 32 バイトの鍵。再起動後も同じ値を使用)を設定してください。未設定の場合、追加メニューに Qoder Cloud Agent は表示されません。

Qoder を接続する

  1. ランタイムページで追加をクリックし、クラウドサービスの Qoder Cloud Agent を選びます。
  2. リージョンで PAT を発行したサイトを選びます:グローバル(qoder.com)または中国(qoder.com.cn)。PAT は発行元のサイトでのみ有効です。拒否された場合は、もう一方のサイトで再試行するボタンを使います。
  3. 個人アクセストークンに PAT を貼り付けます。検証されると Qoder から実行環境の一覧が読み込まれます。環境が 1 つだけなら自動で選択され、複数ある場合は選択します。
  4. 任意:GitHub authorization を開き、エージェントがクローンするリポジトリごとに URL とトークンを追加します。エージェントはここで許可したリポジトリのみクローンできます。
  5. 任意:実行設定を開き、同時実行数(デフォルト 3、最大 10)と実行タイムアウト(デフォルト 60 分、5〜240 分)を設定します。
  6. 接続をクリックします。Qoder Cloud Agent がランタイムページのクラウドの区分に表示され、数秒でオンラインになります。

エージェントを追加する

ランタイムページで Qoder Cloud Agent を開き、これでエージェントを作成をクリックします。通常どおりエージェントを作成して Qoder ランタイムを選ぶこともできます。エージェントのフォームで QCA エージェントからリモートのエージェントを選びます。既存のエージェントはルーティングタブで QCA エージェントやデフォルトのリポジトリを変更できます。複数の Multica エージェントが 1 つの接続を共有し、それぞれ別の QCA エージェントに紐づけられます。

認証情報は暗号化され、ワークスペース内で共有されます。管理者が接続を管理し、メンバーはアクセス可能な QCA エージェントを選択できます。リポジトリと開始ブランチはプロジェクトで選び、そのリポジトリのトークンは QCA のセッション作成時に送信されます。保存した PAT がブラウザーに返されることはありません。

管理者は Qoder Cloud Agent のページで接続とリポジトリを編集できます。一時停止すると認証情報とエージェントを残したまま新しいタスクの送信を止め、接続を解除すると保存済みのトークンを削除してランタイムを外し、エージェントの紐づけを解除します。

実行の仕組み

同時実行数の上限を超えたタスクはキューで待機します。同じタスクの後続の実行は、前回のセッションがアイドルであればその Qoder セッションを引き継ぎます。エージェントにはデフォルトのリポジトリを設定でき、タスクのプロジェクトにリポジトリがない場合に使われます。エージェントにはタスク ID を含むブランチ名と、タスク ID で始まる PR タイトルを使うよう指示するため、PR はタスクに自動で紐づきます。

初期版はタスク実行、進捗同期、キャンセル、永続化された実行記録からの復旧に対応します。チャット、ローカルディレクトリ、添付ファイル、リモート QCA Agent の新規作成は未対応です。詳細は README を参照してください。

デーモンとランタイムの違い

  • デーモンは、1 台のコンピュータで動く Multica のバックグラウンドプロセスです。サーバーへの接続、ローカルツールの検出、実行の取得、結果の報告を担当します。
  • ランタイムは、ワークスペースが利用できる 1 つの具体的な実行環境を表します。1 台のコンピュータと、そのコンピュータ上の 1 つの AI コーディングツール(またはカスタムランタイムプロファイル)の組み合わせに対応します。

たとえば、Claude Code と Codex の両方をインストールした 1 台のコンピュータが、2 つのワークスペースに接続しているとします。デーモンはそれぞれのワークスペースに Claude Code と Codex のランタイムを登録します。デーモンを再起動すると既存のレコードが更新されるだけで、同じ組み合わせに対して新しいランタイムが増え続けることはありません。

実行場所とデータ境界

ローカルランタイムが呼び出す AI コーディングツール、それらのツール自身のログイン認証情報、ローカルのコードディレクトリは、いずれも接続されたコンピュータに残ります。Multica サーバーがローカルツールの代わりにコマンドを実行することはなく、作業ディレクトリ全体を自動でアップロードすることもありません。

チームが協働できるように、サーバーはタスク、コメント、エージェント設定、実行のコンテキスト、実行記録、エージェントが書き戻した結果を保存します。これらには、エージェントが自ら読み取って返信に含めたコードスニペットやその他のプロジェクトコンテキストが含まれることがあります。

エージェントのカスタム環境変数はサーバー側に保存され、実行時にランタイムへ送られます。「ローカル実行」を「すべてのシークレットがこのマシンにしか存在しない」と読み替えないでください。カスタム環境変数と MCP 設定はサーバー側にあり、その表示は機密値のルールによって制限されます。

デーモンの起動

Multica Desktop を使う場合、アプリがデーモンを自動的に起動するため、追加のコマンドは不要です。

Web、リモートのコンピュータ、ヘッドレス環境では、先に Multica CLI をインストールしてから実行します。

multica daemon start

デーモンはデフォルトでバックグラウンドで動きます。よく使うコマンド:

コマンド役割
multica daemon statusデーモンと接続の状態を表示する
multica daemon logs -fログを追跡表示する
multica daemon restartデーモンを再起動し、ローカルツールを再検出する
multica daemon stopデーモンを停止する
multica daemon start --foregroundデバッグ用に現在のターミナルで実行する

実行用の作業ディレクトリを別のディスクに置くには、multica config set workspaces_root <path> で現在のプロファイルにルートを保存するか、daemon start または daemon restart に --workspaces-root <path> を渡します。フラグは MULTICA_WORKSPACES_ROOT より優先され、環境変数はプロファイル設定より優先されます。ルートを変更しても既存の実行ディレクトリは移動されません。

起動時、デーモンは PATH 上の対応する AI コーディングツールを検出し、あなたが接続を許可されているワークスペースにランタイムを登録します。ツールをインストールまたはログインした直後の場合は、デーモンを再起動すると再検出されます。

デーモンは、組み込みで対応している AI コーディングツールを少なくとも 1 つ検出できないと起動しません。インストール方法と実行コマンド名は AI コーディングツールのインストールを参照してください。

ディスパッチとオンライン状態

登録されたランタイムは接続を維持し続けます。新しい実行がキューに入ると、サーバーは対応するデーモンに通知します。デーモン側も定期的にポーリングし、接続断のあとの補完として機能します。そのため、ランタイムがオンラインで空き容量があれば、実行は通常すぐに開始されます。

デーモンは 15 秒ごとにハートビートを送ります。サーバーはハートビートと接続状態を組み合わせてランタイムのオンラインを判定し、デーモンが予期せず終了した場合、通常は遅くとも約 3 分以内にオフラインと表示されます。

オンラインのコンピュータ 1 台のランタイム詳細: 同じデーモンが 7 個のランタイムを登録し、検出された AI コーディングツールごとに 1 行、いずれもオンライン状態と CLI バージョンを表示している

ランタイムがオフラインのとき:

  • キュー済みの実行はランタイムの復帰を待ちます。失敗するのは、そのランタイムが再接続猶予を超えてハートビートを停止し、かつ実行自身も同じ時間キューで待った場合のみです。したがって単に取り込み中のランタイムは滞留分を保持し続け、すでにオフラインのランタイムに割り当てられた実行にも猶予がまるまる 1 回分残ります。
  • 進行中だった実行は失敗します。条件を満たすタスクまたはチャットの実行は自動リトライできます。
  • デーモンが再起動すると、ランタイムを再登録し、前回正常に終了しなかった実行を回収します。
  • 7 日を超えてオフラインで、(アーカイブ済みを含め)どのエージェントにも紐づいていないランタイムは、自動的にクリーンアップされます。

詳細な状態とリトライのルールは実行を参照してください。

同時実行の上限

1 つのデーモンはデフォルトで最大 20 件の実行を同時に処理します。各エージェントはデフォルトで最大 6 件です。実効的な同時実行数は両者の小さい方になります。

上限に達すると、新しい実行はキューで待ち続けます。個々のエージェントの同時実行数はエージェント設定で、マシン全体の上限は MULTICA_DAEMON_MAX_CONCURRENT_TASKS で調整できます。並列実行は、マシンの性能、ツールアカウントのクォータ、同じ作業ディレクトリを同時に取り合います。

プライベートと公開

ローカルランタイムはデフォルトでプライベートです。その上にエージェントを作成できるのはランタイムの所有者だけで、ワークスペースの owner・admin も例外ではありません。ランタイムは他のメンバーのコンピュータであり、そこでエージェントを動かすことはそのメンバーのマシンとツール認証情報を消費するためです。

ランタイムを公開に変更できるのは所有者だけです。ワークスペースの管理者はランタイムの名前変更や削除はできますが、共有するかどうかは所有者が決めます。公開すると、ワークスペースの他のメンバーもこのランタイムを選べるようになります。これは基盤の AI コーディングツールのログイン認証情報を共有するものではなく、メンバーがエージェントの実行をこのコンピュータにルーティングできるようになるだけです。

所有者が公開ランタイムを再びプライベートにすると、Multica はエージェントビルダーのセッションも含め、影響を受けるエージェントとアクティブな実行を表示します。確定すると、他メンバーの該当エージェントの接続を解除し、キュー中・配信済み・実行中・ローカルディレクトリ待ち・延期中の実行を runtime_access_revoked としてキャンセルします。これらのエージェントに割り当てられた有効な自動化も一時停止します。所有者自身のエージェントと実行には影響しません。対象が変わった場合は再確認が必要で、同時にチャットが更新されている場合は再試行が必要になることがあります。作業を再開するには、利用可能なランタイムにエージェントを接続し、一時停止中の自動化を手動で再開してください。

キャンセル後もチャット履歴は維持され、下書き・添付ファイルの復元データはサーバーに保存されます。Web・デスクトップ版は既存の下書き復元 UI を利用しますが、モバイル版にはまだその UI がありません。開始済みで出力のない実行は、デーモンのキャンセル確認またはサーバーの猶予期間終了を待って入力の復元を判断します。接続中のデーモンは通常の確認でキャンセルを受信します。オフラインでもサーバー側のアクセスは直ちに取り消されますが、ローカルプロセスは再接続してキャンセルを受信するまで続く場合があり、即時の遠隔停止は保証できません。

カスタムランタイムプロファイル

チームで社内 wrapper やバージョン固定の実行ファイルを使う場合、あるいは互換ツールに固定引数を追加したい場合は、カスタムランタイムプロファイルを作成できます。

カスタムプロファイルが新しい通信プロトコルを追加することはありません。作成時には、Multica がすでに対応しているプロトコルファミリー(ツールの連携プロトコルの種類。AI コーディングツール対照表を参照)を選ぶ必要があり、コマンド自体がそのプロトコルファミリーと互換でなければなりません。

作業ランタイム環境

デーモンがエージェントの作業を開始すると、作業コンテキストをランタイムプロセスに注入します。これらの値はデーモンが管理するため、エージェントのカスタム環境では MULTICA_ 変数や作業用一時ディレクトリ変数を上書きできません。

次の表は、カスタムランタイムが現在利用できる変数を示しています。完全な一覧ではなく、バージョン保証された API でもありません。連携処理では連携契約と記載された 5 つの変数だけを使用してください。それ以外は参考情報であり、今後変更される可能性があります。

変数作業内の値安定性
MULTICA_TOKEN作業スコープの mat_ API 認証情報連携契約
MULTICA_TASK_ID実行中の作業の ID連携契約
MULTICA_AGENT_ID割り当てられたエージェントの ID連携契約
MULTICA_WORKSPACE_ID作業が属するワークスペースの ID連携契約
MULTICA_SERVER_URLデーモンが選択した Multica サーバー URL連携契約
MULTICA_TASK_CONFIG_ROOT作業専用の Multica CLI 設定ルート参考情報
MULTICA_TASK_WORKSPACES_ROOTデーモンが管理する作業用ワークスペースのルート参考情報
MULTICA_AGENT_NAME割り当てられたエージェントの表示名参考情報
MULTICA_DAEMON_PORTmultica repo checkout など作業専用コマンドが使うローカルデーモンのヘルス/API ポート参考情報
MULTICA_TASK_SLOTデーモン全体の同時実行プール内のスロット。GPU などスロット番号付きリソースに使用可能参考情報
TMPDIR実行中の作業専用の一時ディレクトリ。TMP と TEMP でも提供しますが、Windows では Git Bash の共有 /tmp のため作業はユーザーの一時パスを継承します。Windows の Claude Code は CLAUDE_CODE_TMPDIR の既定値を作業の一時ディレクトリに設定参考情報

MULTICA_TOKEN を使ったリクエストの作成者はサーバーが決定し、タスクへのコメントなどの書き込みは、割り当てられたエージェントと実行中の作業に帰属します。認証情報の完全な紐付け、権限、帰属、最長 24 時間の有効期間、クリーンアップについては、エージェント実行用の一時トークンを参照してください。

これらの値はランタイムプロセスの実際の環境に存在します。ランタイムが起動する子プロセスは、MULTICA_TOKEN を含むすべての値をデフォルトで継承します。子プロセスに認証情報を渡すべきでない場合は、明示的に削除してください。存在しないプロセス分離を前提にしてはいけません。逆に、独自に子プロセス環境をフィルタするツールでは、変数の明示的な許可が必要な場合があります。たとえば Codex の shell ツールは、名前に TOKEN、KEY、SECRET を含む変数を除外するため、デーモンは必要な作業変数を許可する管理対象の shell ポリシーを設定します。トークンはプロセス環境内だけに保持し、prompt、ログ、リポジトリファイル、永続設定には書き込まないでください。子プロセスは親の作業と同じ ID と権限を共有し、独立した新しいスコープ ID は受け取りません。

プロファイルの作成

カスタムランタイムプロファイルを作成・変更・削除できるのは、ワークスペースの owner と admin だけです。

  1. ランタイムを開き、対象のコマンドがインストール済みのコンピュータに移動します。
  2. カスタムランタイムを追加をクリックします。
  3. コマンドが実際に互換のあるプロトコルファミリーを選びます。
  4. 名前、コマンド、固定引数を入力して保存します。

プロファイルはワークスペース内で共有されます。接続済みの各コンピュータが自分でこのコマンドを探し、PATH 上で解決できたコンピュータだけが対応するランタイムを登録します。プロファイルを作成してもコマンドはインストールされず、他のメンバーのツールログインが代行されることもありません。

ここに入力するのは実行ファイルと引数であり、shell スクリプトではありません。通常の引数、引用符、バックスラッシュによるエスケープは使えますが、パイプ、リダイレクト、&&、;、バッククォート、環境変数の展開は使えません。これらの挙動が必要な場合は wrapper script にまとめ、そのスクリプトをコマンドとして指定してください。

Desktop が起動したデーモンが、ターミナルでは実行できるコマンドを見つけられない場合は、現在のコンピュータに絶対パスを設定できます。

multica runtime profile set-path <profile-id> --path /absolute/path/to/command

パスの上書きを解除するには:

multica runtime profile unset-path <profile-id>

プロファイルの変更は、それ以降に取得される実行にのみ影響します。プロファイルを削除する前に、対応するランタイムにまだ紐づいているアクティブなエージェントを先に処理してください。あるコンピュータ上のランタイムインスタンスだけを削除してもプロファイルは消えず、実行中のデーモンが再登録します。

ランタイムがオフラインのときの確認手順

次の順に確認します。

  1. multica daemon status を実行し、デーモンが起動していることを確認する。
  2. multica daemon logs -f を実行し、ログイン、ネットワーク、ツール検出のエラーを確認する。
  3. 同じ実行環境で command -v <ツールコマンド> を実行し、デーモンがコマンドを見つけられることを確認する。
  4. Multica のランタイムページを開き、対象のコンピュータと対応する AI コーディングツールがオンラインと表示されているか確認する。
  5. ツールのインストール直後、パスの変更直後、プロファイルの更新直後は multica daemon restart を実行する。

それでも解決しない場合はトラブルシューティングを参照してください。

次のステップ