i-Willink
|Release|✍️ i-Willink

Agent Deck を OSS 公開しました

複数の AI CLI エージェントを並列で操る macOS デスクトップアプリ「Agent Deck」を OSS(MIT)で公開。GitHub Releases を正本とした配布・パッケージング設計をあわせて解説します。

🚀 3行でわかるポイント

  • 1複数の AI CLI エージェントを独立ターミナルで「並列」起動・監視
  • 2セッションごとに git worktree で隔離し、内蔵 diff からローカルマージまで完結
  • 3GitHub Releases を正本にした未署名 OSS 配布 + アプリ内アップデート通知
Agent Deck OSS 公開 ヒーローイメージ
Agent Deck — Parallel AI agent terminal orchestrator
v0.1.0 (beta)MITElectronmacOS

技術スタック

Electron 31node-ptyxterm.jselectron-builderGitHub Releases

主な特徴

  • 並列ターミナル(グリッド配置・列数切替・D&D 並べ替え)
  • git worktree 隔離起動 + 内蔵 diff レビュー
  • diff からのローカルマージ(リモート/PR 不要)
  • マルチリポジトリ管理 + 入力待ち検知 + OS 通知

v0.1.0 (beta) リリースノート

2026年6月8日

GitHubで見る

ダウンロード(macOS / Apple Silicon)

最新の未署名ベータ(.dmg)を直接ダウンロードできます。初回起動時は Gatekeeper の警告が出るため、右クリック → 開く で起動してください。

Agent Deck v0.1.0 (.dmg) をダウンロード

i-Willink で内製していた Agent Deck を、OSS(MIT ライセンス)として willink-oss/agentdeck で公開しました。

Claude Code や Antigravity など、複数の AI CLI エージェントを同時に走らせる開発スタイルが当たり前になってきました。 ところが「ターミナルのタブを行き来する」「エージェントごとに作業ブランチを切る」「どれが今こちらの入力を待っているか分からない」—— 並列で動かすほど、束ねて見る・隔離する・差分を確認するコストが増えていきます。

Agent Deck は、その煩雑さを 1 画面に集約するためのデスクトップアプリです。 各エージェントを独立した本物のターミナル(PTY)でグリッドに並べ、セッションごとに git worktree で隔離し、変更は内蔵 diff でレビューしてそのままローカルマージできます。

主な機能

🖥️

並列ターミナル

エージェントをグリッドに並べて同時操作。 列数切替(auto/1/2/3)・ペインのドラッグ並べ替え・起動中デッキの保存と「↻ 前回のデッキを復元」に対応。node-pty + xterm.js で本物のシェルが動きます。

🌿

git worktree 隔離

セッションごとに新規ブランチ + 作業ツリーで起動し、エージェント同士のファイル競合を防止。実験的な変更も安全に並走させられます。

🔍

内蔵 diff レビュー + マージ

各ペインの diff ドロワーで起動時点からの変更を色分け表示。「merge ↩ base」でベースブランチへ git merge --no-ff できるため、リモートや PR を介さずローカルで成果を取り込めます。

🔔

入力待ち検知 + 通知

出力が既定 6 秒止まると「要対応」を点灯し、非アクティブ時は OS 通知。サイドバーでリポジトリを束ね、選択リポのセッションだけに絞るフォーカスフィルタも備えます。

📦配布とパッケージング

Agent Deck はシェルを spawn する性質上 App Store のサンドボックスとは相性が悪く、配布チャネルの設計から考える必要がありました。 結論として、GitHub Releases を「正本」とし、そこから各導線へ広げる方針にしています。

📥

GitHub Releases を正本に

配布物(.dmg)は GitHub Releases に集約。electron-builder で macOS(Apple Silicon / arm64)向けに生成し、バージョンタグ = 配布の単一の真実として運用します。

🛡️

未署名 OSS 配布という選択

現状は未署名で配布しています。初回起動時は Gatekeeper の警告が出るため、右クリック → 開くでの起動を README に明記。Apple Developer ID 署名・公証および App Store 配布は予定していません。

🔄

アプリ内アップデート通知

起動時と 6 時間ごとに releases/latest の feed を確認し、新版があれば 右下に通知を表示(自動更新はしない)。 public リポジトリだからこそ無認証で feed が読める設計です。

🍺

パッケージマネージャ導線

正本(Releases)を起点に、Homebrew Cask を皮切りとした winget / AUR への導線をロードマップ化。 Windows / Linux 版の追加とあわせて段階的に整備していきます。

「正本 = GitHub Releases」「自社サイトは入口」「Homebrew/winget/AUR は導線」という三層に分けることで、配布チャネルが増えてもバージョンの真実が 1 か所に保たれます。配布ロードマップは Issue #6 で公開管理しています。

🧩詰まったポイント

Electron + ネイティブモジュール + 署名なし配布、という構成ならではの落とし穴を共有します。

⚙️

node-pty はネイティブ

node-pty はネイティブモジュールのため、electron-builder の asarUnpack で asar 外に展開しないとパッケージ版でターミナルが起動しませんpty.node / spawn-helper の同梱が必須)。

🔑

署名は Developer ID が前提

配布・公証には「Apple Development」ではなく「Developer ID Application」証明書が必要。hardened runtime 下では node-pty 向けに disable-library-validation など entitlements の調整も要ります(今回は未署名で割り切り)。

🌐

更新 feed は public 前提

アプリ内アップデートチェックは GitHub API を無認証で読むため、private リポでは通知が出ません。 public 化して初めて feed が機能します。

🧪

ロジックは依存ゼロでテスト

DOM/Electron 非依存の純粋ロジックを lib/ に切り出し、Node 標準テストランナーnode --test・依存ゼロ)で検証。CI は ubuntu/macOS/windows マトリクスで回しています。

📝v0.1.0 (beta) の主な内容

Features

feat
並列ターミナル + 起動コマンド自動入力(Claude Code / Antigravity など)
feat
git worktree 隔離起動 + 内蔵 diff レビュー + ローカルマージ
feat
マルチリポジトリ管理・フォーカスフィルタ・デッキ保存/復元
feat
electron-builder による .dmg パッケージング + アプリ内アップデート通知

🔧Distribution

chore
willink-oss へ移管し OSS(MIT)として public 公開
chore
GitHub Releases を正本に未署名 .dmg を配布

🛣️今後の展開

まずは macOS(Apple Silicon)の未署名ベータから。今後は配布の導線としてHomebrew Cask、続いて Windows(nsis)/ Linux(AppImage・deb)対応と winget / AUR への展開を予定しています。

ロードマップは willink-oss/agentdeck#6 で公開しています。Issue / PR を歓迎します。

Agent Deck を試す

GitHub でリポジトリを確認し、最新リリースの .dmg をダウンロードしてお試しください。

GitHub で見る