Multica Docs

デーモンとランタイム

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

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

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

  • デーモンは、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 コーディングツールのログイン認証情報を共有するものではなく、メンバーがエージェントの作業をこのコンピュータにルーティングできるようになるだけです。

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

チームで社内 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実行中の作業専用の一時ディレクトリ。クロスプラットフォームツール向けに TMPTEMP でも提供参考情報

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

これらの値はランタイムプロセスの実際の環境に存在します。ランタイムが起動する子プロセスは、MULTICA_TOKEN を含むすべての値をデフォルトで継承します。子プロセスに認証情報を渡すべきでない場合は、明示的に削除してください。存在しないプロセス分離を前提にしてはいけません。逆に、独自に子プロセス環境をフィルタするツールでは、変数の明示的な許可が必要な場合があります。たとえば Codex の shell ツールは、名前に TOKENKEYSECRET を含む変数を除外するため、デーモンは必要な作業変数を許可する管理対象の 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 を実行する。

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

次のステップ