OpenAB Connect

すべての主要ベンダーのエージェント。
ひとつのクライアント、それぞれサンドボックス。

暗号化されたまま、自分のプライベート環境に分散して動きます。
アプリを閉じても、動き続けます。

Mac App Store でダウンロード無料 · macOS 13 以降

いちばん心を動かされたのは、機能そのものではなく考え方です。多くの AI エージェントツールはまず「動く」ものを作り、安全は後から足す。このプロジェクトは逆で、まず信頼境界を考え抜いています。頭脳は使い捨てのサンドボックスに、手足は期限付きで取り消せる権限に、接続は常に制御される側から発信し、ポートは一切開かない。これらの決定は互いに矛盾せず、公開の契約と ADR に書き残されている。作者が本当にシステムセキュリティを理解していて、「安全」をマーケティング用語として使っていないことが分かります。自らの制約についても文書が正直で、初期段階のプロジェクトでは珍しいことです。
Claude Opus 5.5Anthropic*
痛点をまさに突いていて、アーキテクチャ設計は非常に先見性があります(Agentic Security)。
GeminiGoogle*
「コーディングエージェントに本物のデスクトップを触らせる」ものの中で、私が見た限り最も正しい隔離モデルに近い一つです。
GrokxAI*

引用は中国語の原文からの翻訳です。

3 枚の接続カード、色分けされたセッションタブ、OpenCode、Claude Code、Kiro を実行する分割ターミナルを表示した OpenAB Connect 1.3.0

主要ベンダーを網羅

13 種類のエージェント CLI に、それぞれのイメージ — Claude Code、Codex、Cursor、Kiro、Gemini、Copilot など。セッションごとに選べます。native はエージェントを含みません。

セッションはアプリより長生き

シェルはコンテナの中で動きます。アプリを閉じても動き続け、次に開くと同じ分割レイアウトに戻り、出力は止まったバイト位置から続きます。

外部には何も公開しない

ポートを開けず、ingress も公開エンドポイントもありません。ネットワーク上の識別を持つのは Tailscale サイドカーだけで、ランタイムは loopback だけを listen します。

Kubernetes でも ECS でも

デプロイするのはごく普通の pod なので、準拠したクラスタなら何でも動きます — 空いているマシンの k3s、EKS、GKE。あるいは AWS ECS Fargate なら、クラスタ自体を運用する必要がありません。

ランタイムはオープンソース

MIT ライセンスで openabdev/openab-pty にあります。何を動かすのかを先に確認できますし、公開された契約に沿って自分のクライアントも書けます。

話しかけて動かす

打ち込むだけでなく — openab を通じて、同じセッションをチャットや音声で動かせます。

OpenAB Remote

OpenAB Remote

iPhone がプライベートなプッシュ・トゥ・トークリモコンに。音声は端末上で文字化され、安全なテキストだけを選択中の Mac セッションへ送ります。

iPhone コンパニオン · オンデバイス音声認識 App Store でダウンロード

OpenAB landscape

3つの役割。すべて自分のインフラ上で。

リモートサンドボックス、自分の Mac、手元のクライアントが、Tailscale でひとつのプライベートなループになります。SaaS の制御プレーンはありません。

C観測して指示

OpenAB Connect + Remote

Mac と iPhone · 中国語、広東語、英語、日本語、韓国語の音声

Aエージェントを実行

openab-pty

隔離されたリモートサンドボックス内の Coding CLI

BMac で作業

oab-instance-mcp

自分の Mac の Xcode、Simulator、ブラウザ、GUI ツール

ターミナルと音声
HTTPS でライブ画面Tailscale ID + Bearer TokenMac の操作を引き継ぐ · 開発中
openab-pty 経由の MCP プロキシ開発中
Tailscaleひとつのプライベート Tailscale ネットワーク · 公開制御プレーンなし

よくある質問

Apple TV リモコンやゲームパッドに対応していますか?

対応しています——ペイン切り替えとディクテーションを通常のキーボードショートカット(⌘[ / ⌘] で分割ペイン間を移動、⌃⌘M でディクテーション)として公開しているので、キー入力を合成できるものなら何でも、部屋の向こうから操作できます。手順ガイドは 2 本:

方向パッドやリングでペインを切り替え(画面の HUD がどれかを表示)、あるボタンで送信、別のボタンで Mac のマイク(AirPods を含む)を使ったオンデバイスのディクテーションを開始します。

GKE に対応していますか?

対応していますが、ひと手間の設定が必要です。GKE の既定の kubeconfig は、トークンが必要になるたびに外部の認証ヘルパー gke-gcloud-auth-plugin を実行します。OpenAB Connect は Mac App Store で配布されており、App Sandbox はサンドボックス化されたアプリがそのような外部ヘルパーを実行することを許可しません。そのため、それに依存する kubeconfig ではデプロイできません。

回避策は static kubeconfig です。exec ブロックの代わりにトークンやクライアント証明書を直接持つ kubeconfig を、gcloud が制限なく動く自分のマシンで生成し、アプリにそのファイルを指定します。Google サービスアカウントキーに基づく kubeconfig が持続的な形です。短命トークンでも動きますが期限切れになります。EKS でこの問題が起きないのは、アプリが外部プラグインではなく独自の SDK で AWS と通信するからです。GKE でも同じ隙間を埋めるため、ネイティブな GCP 認証情報がロードマップにあります。

kubectl exec や SSH と何が違うのですか?

どちらもシェルは得られますが、生き残るセッションは得られません。exec の途中でターミナルを閉じれば、プロセスは接続と一緒に死にます。ここではセッションがコンテナの中で生きているので、アプリを閉じても閉じるのは WebSocket ひとつだけです。次の起動で出力が止まったバイト位置から接続し直し、同じ分割レイアウトを復元します。デプロイの形も違います。クライアントに kubeconfig は不要、port-forward も不要で、資格情報が許可するのはクラスタ全体ではなくセッション 1 つです。

Herdr とは何が違うのですか?

Herdr はエージェントマルチプレクサ — コーディングエージェント版の tmux です。各エージェントに本物の PTY を与え、切断されても生かし続け、各ペインを working/blocked/idle に分類し、CLI と socket API を備えています。永続性と一覧性という点は、このアプリとほぼそのまま重なります。違うのはエージェントがどこで動くかです:

  • Herdr は起動したマシンの上で動かすので、ユーザー、ファイルシステム、資格情報を共有します — つまり影響範囲はそのマシンと、あなたのアカウントが到達できるすべてです。永続するのは切断に対してで、ホストの電源が落ちることに対してではないため、ノート PC 上で動かしていれば閉じた時点ですべて終わります。(SSH リモートモードはこれを避けられますが、影響範囲がそのリモートホストに移ります。)
  • OpenAB Connect は各セッションをクラスタ内の独立したコンテナで動かします — uid 1000、sudo なし、ホストの資格情報なし、ルートは読み取り専用、ワークスペースは使い捨て — WireGuard の tailnet 経由で、ポートは一切開けません。影響範囲はそのコンテナで、あなたのマシンではありません。ノートを閉じても、スリープさせても、別のノートに変えても動き続けます。

違いはサンドボックス化であって、マルチプレクスではありません。Herdr にできて OpenAB Connect にできないこともあります。ペインの状態判定、スクリプト可能なローカル API、そしてインフラを一切必要としない点です。何もデプロイしたくないなら、Herdr のほうが適した答えです。

自分の Mac で Claude Code や Codex Desktop を動かすのと何が違うのですか?

Mac 上のエージェントは、あなたとして動きます。SSH 鍵、クラウドの資格情報、npm や GitHub のトークン、ディスク上のすべてのリポジトリに手が届くので、間違ったコマンドはあなたのマシンでの間違ったコマンドになります。こちらのシェルはそれらを一切持たず、ワークスペースはセッションとともに破棄され、複数のエージェントが同じ作業ツリーや同じポートを奪い合わずに同時に働けます。ノートを閉じてもスリープさせても、何も止まりません。代償は実在します。エージェントはローカルのファイルを見られないので作業は git 経由になり、イメージの初回取得には数分かかり、クラスタか AWS アカウントが必要です。すでに開いているリポジトリを一行直すだけなら、ローカルで動かすほうが簡単で、これは何の足しにもなりません。

本家の OpenAB とは何が違うのですか?

この二つは設計として補完的です。分かれ目は、何を気にするかです:

  • OpenAB は ACP を仲介します — チャットから指示を送り、気にするのはエージェントが届けた結果で、その過程ではありません。あなたは指示する側で、セッションはターン制のリクエストとレスポンスです。
  • openab-pty は PTY のモード — ネイティブなターミナルで、完全な可観測性を持ちます。気にするのはいま何が起きているかで、リアルタイムに見て、調べて、手を動かします。あなたはキーボードの前の操作者で、セッションは終わりのないバイトストリームです。

補完的であることは比喩ではなく構造です。PTY のイメージは FROM ghcr.io/openabdev/openab なので、シェルはエージェントが動いているのと同じイメージの中で開き、同じ CLI と同じワークスペースを持ちます。作業が途中で止まっていれば、その場で接続して見ます。どちらも他方を必要とせず、セッションモデルは意図的に何も共有しません — バイトストリームの生存はバイトとソケットで定義され、ターンでは定義されないからです。

詳しくは openab-pty の 設計ドキュメントにあります。そして OpenAB Connect は openab-pty クライアント契約の最初のクライアント実装です — 契約は公開されているので、資格情報を持てて WebSocket を話せるものなら、次の実装になれます。

このシェルはどこまでできるのですか?

意図的にほとんど何もできません。uid 1000 で開き、sudo なし、サービスアカウントトークンなし、ホストの資格情報なし、ルートファイルシステムは読み取り専用、ワークスペースは使い捨てです。セッションのシェルは loopback でランタイムに到達できます。だからこそ管理用の資格情報はコンテナの中に置きません。アタッチトークンが許可するのは 1 セッションだけで、期限もあります。

ポートを開けたり ingress を用意する必要はありますか?

ありません。ランタイムは 127.0.0.1 にバインドし、TLS 鍵を持ちません。同じ pod の Tailscale サイドカーだけがネットワーク上の識別を持ち、両者は pod のネットワーク名前空間の中で loopback を通して会話します。通信は WireGuard の tailnet を通って届き、暗号化はそこが担います。

そちらには何が届くのですか?

何も届きません。ここにサービスはありません。アプリが接続する先はすべて、あなたが自分のクラスタか自分の AWS アカウントにデプロイしたものです。アカウント登録も、解析も、テレメトリもありません。入力した資格情報は macOS のキーチェーンに留まり、あなた自身のランタイム以外へは送信されません。

デプロイする前に中身を確認できますか?

できます。ランタイムは MIT ライセンスで openabdev/openab-pty にあり、クライアント契約も公開しているので、このアプリを使わずに自分のクライアントを書くこともできます。このアプリはその契約の一実装で、オープンソースではありません。

クラスタなしで試せますか?

試せます。アプリメニューの Demo Mode は、サンプル接続 2 つと収録済みのターミナルだけで動き、ネットワーク接続は一切行いません。何もデプロイする前に評価できるようにするためのものです。

デプロイを押すと何が起きますか?

3 クリックのあと、8 つの手順が走ります。資格情報を生成してキーチェーンに保存し、namespace を確認し、secret とボリュームを作成し、pod を適用し、起動を待ち、tailnet への参加を待ち、管理プレーンを検証します。マニフェストを書く必要はありません。あるイメージの初回デプロイは、クラスタがそれを取得するため数分かかることがあります。

セッションを削除したあと、何か残りますか?

ワークスペースは破棄されます。ここは確実です。そのセッションのためだけに存在し、セッションを削除すれば消えます。

確実でないのはプロセスです。セッションを削除するとそのセッションのプロセスグループは終了しますが、意図的にそのグループを離れたプロセス — nohup や setsid で起動したバックグラウンドジョブなど — は、pod や task が置き換わるまで生き残ることがあります。同じサンドボックスの中に閉じたままで、新たに何かへ手が届くわけではありませんが、その pod の CPU とメモリを使い続けます。

そのためアプリでは、きれいに終了したとは言わず best-effort と明示しています。何も残らないことを確実にするなら、pod か task を削除してください。

エージェント同士は、デバイスや地域やネットワークをまたいで会話できますか? 開発中

まだできません — 現在開発中です。今日は各セッションが独立していて、あなたが個々のエージェントに指示を出し、エージェント同士が仕事を委譲することはありません。

設計は公開されています。OpenAB の Agent Control Plane ADR に基づくもので、チャットプラットフォームを経由せず ACP over WebSocket でエージェントが直接委譲できるようにする、ハブ&スポーク型の登録・ルーティングサービスです。チャット経由はレート制限と遅延を招き、人間のためのチャンネルにオーケストレーションのノイズを流し込みます。構成は三つ:誰が生きていてどのラベルを持つかの Registry、名前/ラベル/namespace で振り分ける Router、委譲の深さ・循環・namespace・allowlist を扱う Policy です。

その設計のひとつはこのアプリの考え方と一致します。エージェントは制御プレーンへ外向きに接続するので、ネットワークをまたいで動かすのに、どちら側にも受信ポートは要りません。

ADR はマージ済みで、実装はまだ出荷していません。参加を歓迎します — 議論はあの文書から始まります。

主要な AI モデルはこのプロジェクトをどう評価していますか?

ヒーロー下の引用は、ランタイムの公開契約と ADR をモデルに渡して評価を求めた三つの会話から取っています。原文どおりに引用し(このページでは中国語からの翻訳)、会話はすべて公開しているので文脈を確認できます。

モデルが設計文書を読むことはセキュリティ監査ではなく、これらは推薦でもありません。掲載しているのは、モデルが応えた論理がこのページの論理と同じだからです。