MulticaをセットアップしてGitHub Copilot CLIエージェントを動かす

AI

はじめに

各種AI関係のリポジトリを見る中で、Multicaというプロジェクトを実際にセットアップしてみました。 Multicaはコーディングエージェントをチームメンバーのように扱えるオープンソースのプラットフォームで、イシューをエージェントにアサインするとコードを自動で書いてくれるというものです。

試してみたところ、ランタイムの登録やエージェントのモデル設定など、ドキュメントだけでは気づきにくいポイントがいくつかありました。 特にモデル名の表記違いによるエラーは、ログを見ないと原因に気づきにくいものでした。

本記事では、ProxmoxでUbuntu VMを作成するところからMultica CLIのインストール、GitHub Copilot CLIをランタイムとして登録してプライベートリポジトリのイシューを自動実装させるところまでの手順を紹介します。

なぜMulticaを使うのか

AIエージェントをローカルで動かす場合、通常はチャット画面を開いてコンテキストを貼り付けてから指示する、という操作が必要です。 この「指示する」作業が意外と手間で、特に複数のタスクを並行して流したいときに詰まります。

Multicaはこの問題をGitLabライクなイシュートラッカーと組み合わせて解決します。 イシューを作成してエージェントにアサインするだけで、ランタイム上のエージェントが自律的にコードを書いてプルリクエストを出すところまでやってくれます。 コーディング中に別ウインドウでエージェントに作業を任せたいときに特に有効です。

代替としてClaude Codeを直接使う方法もありますが、Multicaを使うとタスクの進捗をWeb UIで確認できる点と、エージェントが使うランタイムをVM上に閉じ込められる点が異なります。 ホームサーバー上の専用VMでエージェントを動かすことで、ローカル開発環境への影響を切り離せます。

使用環境

項目 内容
ハイパーバイザー Proxmox VE
VM OS Ubuntu 24.04 LTS Server
VM名 multica
vCPU 2ソケット × 2コア(計4コア)
メモリ 8 GB
ディスク 64 GB(local-lvm、virtio-scsi)
ネットワーク virtio、bridge=vmbr0
ランタイム GitHub Copilot CLI
Multicaバージョン v0.2.x

手順

1. Proxmox VMの作成

ProxmoxのWeb UIからVMを作成します。OSイメージはUbuntu 24.04 LTS Serverのisoを使いました。

VMの設定は以下のように入力しました。

ProxmoxのVM作成確認画面でmulticaのVM設定パラメータが一覧表示されている様子
ProxmoxのVM作成確認画面でmulticaのVM設定パラメータが一覧表示されている様子

VMを作成したらUbuntu Serverのインストールを進めます。インストール時のオプションはデフォルトで問題ありませんが、OpenSSHサーバーのインストールにはチェックを入れておくと後の操作が楽になります。

インストール完了後、SSHで接続できることを確認します。

ssh <username>@<vm-ip-address>

2. Ubuntuの初期設定

まずパッケージを最新化します。

sudo apt update && sudo apt upgrade -y

Multicaのdaemonが動作するにはいくつかのツールが必要です。必要なパッケージをまとめてインストールします。

sudo apt install -y curl git build-essential

3. Node.jsのインストール

GitHub Copilot CLIはnpmパッケージとして提供されているため、Node.jsが必要です。nvmを使ってインストールします。 nvmを使うことで、後からバージョンを切り替えられるようにしておきます。

# nvmのインストール
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash

# シェルに設定を読み込む
source ~/.bashrc

# Node.js LTSをインストール
nvm install --lts
nvm use --lts

# バージョン確認
node --version
npm --version

インストール後、node -vv22.x.x のような出力が出ればOKです。

4. GitHub Copilot CLIのインストール

MulticaはPATH上にある copilot というバイナリを自動検出してランタイムとして扱います。GitHub Copilot CLIをnpmでグローバルインストールすることでこのバイナリが配置されます。

npm install -g @github-copilot/cli

インストール後、バイナリが正しく配置されていることを確認します。

which copilot
copilot --version

/home/<username>/.nvm/versions/node/v22.x.x/bin/copilot のようなパスが表示されれば正常です。

GitHub Copilot CLIを使うにはGitHubアカウントとCopilotサブスクリプションが必要です。

ターミナルから copilot auth login を直接実行して認証を行うと、以下のようなプロンプトが表示される場合があります。

Waiting for authorization... System keychain unavailable. Store token in plaintext config file? (y/N) shutils@multica:~$

筆者の環境では、y を入力する間もなくコマンドが終了してしまい、認証が完了しませんでした。

この際は以下のように、copilot コマンドをインタラクティブモードで起動してから /login コマンドを実行する方法で認証を通すことができました。

# copilot CLIをインタラクティブに起動
copilot

起動後、プロンプトで /login を実行します。

> /login

ブラウザで開くURLが表示されるので、ローカルマシンのブラウザでアクセスして認証を完了させます。認証が通るとセッション内で Logged in as <username> のような表示になります。/exit で終了します。

5. ghコマンドのインストールと認証

プライベートリポジトリを使ってエージェントに実装させる場合、VMからGitHubへの認証が通っている必要があります。 エージェントはVM上でgitコマンドを実行するため、gh CLIをインストールして認証を通しておきます。

# gh CLIのインストール
sudo apt install -y gh

# GitHubへの認証
gh auth login

gh auth login を実行するとブラウザかトークンで認証するか選択できます。今回はブラウザから認証を行いました。ブラウザで表示されるURLをローカルマシンのブラウザで開いて認証を完了させます。

認証後は以下のコマンドで認証状態を確認します。

# 認証状態の確認
gh auth status

Logged in to github.com as <username> と表示されれば認証完了です。

これによりVM上でエージェントが git clonegit push を実行する際に認証情報が自動的に使われます。gh auth setup-git を実行しておくと、gitの認証ヘルパーとしてghが登録されるため確実です。

gh auth setup-git

6. Multica CLIのインストール

Multica CLIをインストールします。公式のインストールスクリプトを使うのが簡単です。

curl -fsSL https://raw.githubusercontent.com/multica-ai/multica/main/scripts/install.sh | bash
# バージョン確認
multica version

multica v0.2.x のような出力が出ればインストール完了です。

7. Multicaのセットアップとdaemon起動

multica setup コマンドを実行することで、認証・初期設定・daemonの起動が一括で行えます。

multica setup

コマンドを実行するとブラウザが開き、multica.ai のアカウントでOAuth認証を行います。VMはヘッドレス環境のため、表示されるURLをローカルマシンのブラウザで開いて認証します。

認証完了後、daemonが自動起動します。daemonはバックグラウンドで動作し、PATHにある対応CLIを自動検出します。

# daemon状態の確認
multica daemon status

以下のような出力になればOKです。agents の欄に copilot が表示されていることを確認します。

Status: running
Agents: [copilot]
Workspaces: [<workspace-name>]

copilot が検出されていない場合、前のステップでインストールした copilot がPATHに入っているか確認します。 nvmでインストールしたnpmパッケージの場合、シェルの再起動が必要なことがあります。

# daemonを再起動して再検出
multica daemon stop && multica daemon start
multica daemon status

8. エージェントの設定

Multicaのウェブアプリ(https://multica.ai/app)を開き、Settings → Agentsからエージェントを作成します。

  • Runtime: 先ほど登録されたVM(ランタイム名はVM名やホスト名で表示されます)
  • Provider: GitHub Copilot CLI
  • Model: claude-sonnet-4.6(ドット区切り。詳細はハマったポイントを参照)
  • Name: 任意(ボード上での表示名になります)
MulticaのエージェントプロパティでRuntimeとModelの設定画面。Model選択でclaude-sonnet-4.6が選ばれている様子
MulticaのエージェントプロパティでRuntimeとModelの設定画面。Model選択でclaude-sonnet-4.6が選ばれている様子

エージェントを保存したら、Settings → Runtimesで対象のランタイムが Active になっていることを確認します。

9. プライベートリポジトリでイシューを作成してエージェントに実装させる

プライベートリポジトリをMulticaのワークスペースに接続します。ウェブアプリのSettings → Integrations → GitHubからリポジトリをインポートします。

実装させたい内容をイシューとして作成します。MulticaはGitLabライクなイシュートラッカーを持っており、ウェブUIから直接作成できます。

# CLIからイシューを作成することも可能
multica issue create --title "README.mdにインストール手順を記述する" \
  --description "一般的なFlaskアプリのインストール方法を記述してください。"
Multicaのイシュー作成画面でREADME.mdにインストール手順を記述するというタイトルのイシューが作成されている様子
Multicaのイシュー作成画面でREADME.mdにインストール手順を記述するというタイトルのイシューが作成されている様子

作成したイシューをエージェントにアサインすると、VM上のdaemonがタスクを受け取り実行を開始します。

Multicaのイシュー詳細画面で、エージェントをアサインした様子
Multicaのイシュー詳細画面で、エージェントをアサインした様子

エージェントはVMの multica_workspaces 以下にリポジトリをcloneし、コードを書いてGitHubにプッシュします。

エージェントからのイシューに対する作業報告
エージェントからのイシューに対する作業報告

プライベートリポジトリへのpushには、ステップ5で通した gh コマンドの認証情報が使われます。 これが正しく設定されていないとエージェントがリポジトリをcloneできず、タスクが失敗します。

ハマったポイント

エージェントのモデル名はドット区切りで指定する

エージェント設定のモデル選択UIで claude-sonnet-4-6 が候補として表示されますが、これをそのまま設定すると動作しません。実際のdaemonログには以下のエラーが出ます。

Error: Model "claude-sonnet-4-6" from --model flag is not available.

daemonはMulticaに登録されたモデル名をそのまま copilot --model <name> の引数として渡します。GitHub Copilot CLIが受け付けるモデル名は claude-sonnet-4.6(ハイフンではなくドット区切り)であるため、UIの表示と実際に必要な文字列が食い違っています。

Multicaのエージェント設定画面で、モデル選択のドロップダウンにclaude-sonnet-4-6と表示されている様子
Multicaのエージェント設定画面で、モデル選択のドロップダウンにclaude-sonnet-4-6と表示されている様子

モデル名を claude-sonnet-4.6 に変更すると正常に動作します。

Multicaのエージェント設定画面で、モデル選択のドロップダウンにclaude-sonnet-4.6と表示されている様子
Multicaのエージェント設定画面で、モデル選択のドロップダウンにclaude-sonnet-4.6と表示されている様子
# 誤り(UI上の表示そのまま)
claude-sonnet-4-6

# 正しい(GitHub Copilot CLIが受け付けるモデル名)
claude-sonnet-4.6

エージェントが応答しない場合はまず multica daemon logs でログを確認し、このエラーが出ていないかを見るとよいです。

# daemonが使っているPATHを確認
multica daemon status
# または
multica daemon logs | head -20

まとめ

ProxmoxにUbuntu VMを立ててMulticaをセットアップし、GitHub Copilot CLIをランタイムとして動かす手順を紹介しました。モデル名の claude-sonnet-4-6claude-sonnet-4.6 の違いはログを見ないと気づきにくく、最初の動作確認で詰まりやすいポイントです。

プライベートリポジトリを使う場合はVM上に gh コマンドの認証を通しておくことが必須で、これを忘れるとエージェントがリポジトリをcloneできずにタスクが失敗します。

Multicaはイシュードリブンでエージェントに作業を任せられる点が使いやすく、VM上に閉じ込めることでローカル環境への影響を最小限にできます。 今後はMulticaのスキル機能を使って、よく使う手順を再利用できるようにしていきたいと思います。

コメント

タイトルとURLをコピーしました