zordon について
zordonは、Alphasfileで宣言したデータベース、ブローカー、プロキシ、サービスをホストプロセスとして管理します。コンテナを使わず、再現可能なローカル環境や分離ワークスペースを必要とする開発者やエージェント向けです。
主な機能
- 01Alphasfile一つでスタックを宣言
- 02コンテナなしでホストプロセスを管理
- 03ソースからのビルドやパッケージの用意
- 04分離されたスタックワークスペースの作成
- 05準備状況の確認と変更箇所の再実行
- 06エージェント向け制約下で指定プロビジョニングを実行
活用シーン
- 01開発用ローカルスタックの起動
- 02並行するエージェントごとのスタック分離
- 03必要に応じたマイグレーションやデータ投入
- 04宣言済みスタックのエージェントによる確認と管理
MCP 対応
`zordon mcp`は標準入出力またはHTTPでZordonのコマンドとプロビジョニングをMCPツールとして公開し、エージェントが宣言済みスタックを起動、確認、操作できるようにします。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Zordon
開発中の反復実行を支えるローカルスタック — データベース、ブローカー、プロキシ、サービスを、高速で使い捨て可能な ホストプロセス として一度定義し、まとめて監視します。コンテナーは不要です。
Zordon は、コードが実行されるローカルスタックを監視するスーパーバイザーです。コードを実際に動かして試すために稼働している必要があるデータベース、ブローカー、プロキシ、サービスを扱います。
コンテナーではなく通常の ホストプロセス として実行し、Alphasfile に一度定義してまとめて監視するため、スタックの起動、複製、破棄をすべて低コストで行えます。
あらゆる判断を形作る目標は3つあります。
低レイテンシ — スタックの起動と再実行はループの中で行われるものであり、ループを取り囲むものではありません。インフラが原因で反復を待たせるべきではありません。
リソース効率 — スタックごとのオーバーヘッドを小さく保ち、多数のエージェントをそれぞれ評価に使えるほど実環境に近いスタックとともに並行して実行できます。モックの壁に頼る必要はありません。
ガードレール — Alphasfile はコントラクトも兼ねるため、MCP サーバー はエージェントに、宣言された限定的な操作だけを渡します。スタックの起動、状態の確認、指定したプロビジョニングの実行が可能で、ホストに対してその場しのぎの操作をするのではなく、このインターフェースを通じて作業できます。
コンテナーを使わない理由は何でしょうか? コードはますます、何かを変更し、それを実際のスタックで実行し、結果を読み、また繰り返すというループの中で書かれています。これを1時間に何百回も行います。 コンテナーは、実行のたびに完全なコールドスタートとアイドル時のオーバーヘッドというコストを払うことで分離を実現します。本番環境には適していますが、ループ内で使うには無駄が多くなります。 Zordon はその逆を選び、イメージではなく実行ごとのワークスペースによって分離を確保します。そのため、自分のスタックの隣に2つ目、あるいは10個目のスタックを用意しても、何の負担にもなりません。
スタック全体を1つの Alphasfile で宣言します。
service "go" "nats" {
git {
url = "github.com/nats-io/nats-server"
tag = "v2.14.0"
}
vars = { client = net::pickport() } # grab a free port, no clashes
arguments { values = { main = { p = self.vars.client } } }
}
zordon start # resolve, build, bring it up, stream logs until everything is READY
特長
- コンテナもデーモンも不要です。 データベース、ブローカー、プロキシ、サービスは、ホスト上の通常の監視対象プロセスとして実行されます。イメージ化、マウント、登録は不要です。
- 多言語のツールチェーンに対応しています。 Go、Rust、Ruby、Node.js、Java(Maven/Gradle)のサービスを、git URL またはローカルソースから直接ビルドできます。Redis、PostgreSQL、etcd などのネイティブパッケージは、mise を通じてプロビジョニングします。
- マニフェストは 1 つです。 スタック全体のソース、ビルド、実行、環境変数、準備状態、ログを、単一の
Alphasfileで宣言します。 - 動的設定をグラフとして扱います。 値は文字列ではなく関数です。
net::pickport()は空きポートを選び、fs::tmp()/fs::hash()は実行ごとのパスを生成します。また、サービス同士をservice.go.caddy.vars.httpのように参照できるため、固定の接続設定は一切不要です。→ ドキュメント - ワークスペース。
zordon workspace create xを実行すると、スタック全体の 2 つ目の完全に隔離されたコピーが起動します。ポートもディレクトリも独立するため、ポートマッピングなしで、エージェント用のサンドボックスを自分の環境の隣に用意できます。→ ドキュメント - フェデレーション。 Alphasfile はディレクトリ上の位置に基づいて連携します。プロジェクトは共通インフラをインポートするのではなく、その 配下に配置 されます。ツリー内で位置を変えると、環境が再計算されます。→ ドキュメント
- 準備状態を考慮した起動。 依存関係グラフに対して HTTP と exec の準備状態チェックを行います。
zordon startは、すべてのサービスが READY になった時点で戻り、その後もスタックをバックグラウンドで実行し続けます。 - 変更分だけを反映する再実行。 再実行時に必要なのは、実際に変更された部分だけです。すべてを停止して再ビルドすることはありません。
- プロビジョニング。 マイグレーション、データ投入、トピック作成などの一度限りのセットアップをサービスごとに宣言し、必要に応じて実行できます。停止には
zordon cleanを使用します。 - エージェント向けの出力。
--agentを指定すると、簡潔で構造化されたログが出力されます。モデルがログを読む場合、トークンが貴重な予算となるため、出力は重要な情報を高密度に保ちます。 - MCP サーバー。
zordon mcpはすべてのコマンドとプロビジョニングを MCP ツールとして公開するため、エージェントがスタック全体を操作できます。→ ドキュメント - エージェント向けのガードレール。
Alphasfileと MCP のインターフェースによって、エージェントとスタックの間に、宣言された限定的なインターフェースが設けられます。実行できるのは定義済みの 名前付き プロビジョニングであり、自由に使えるシェルではないため、エージェントが設定を勝手に迂回することはできません。 - 実行時の依存関係はありません。 静的 Go バイナリの
zordon、alpha、tommyの 3 つだけで、ほかにインストール、イメージ化、登録するものはありません。
ドキュメント
ドキュメント全文:https://zordon.io
(docs/ 内のソースを MkDocs Material で構築)。
- Alphasfile — サービス、ソースの参照先、準備状態、ログを定義するマニフェスト
- 動的設定 — DAG、ヘルパー、
self、サービス間参照 - ワークスペース — スタック全体の並列かつ隔離されたコピー
- フェデレーション — Alphasfile の連携、共通インフラ、
zordon sudo - MCP サーバー — MCP 経由でエージェントから zordon(およびそのプロビジョニング)を操作
- Claude Code プラグインをインストール —
/plugin installによる設定不要のセットアップ
インストール
Homebrew(macOS):
brew install piotrkowalczuk/tap/zordon
Releases からリリース tarball(macOS および Linux、arm64 と amd64)を入手:
tar -xzf zordon_<version>_<os>_<arch>.tar.gz -C ~/.local/bin zordon alpha tommy
Go ツールチェーンがある場合は、ソースからインストールすることもできます:
go install github.com/piotrkowalczuk/zordon/cmd/...@latest
どの方法でも、同じ 3 つのバイナリ、zordon、alpha、そしてリーパーの tommy がインストールされます。これらは同じディレクトリに置き、そのディレクトリが $PATH に含まれていることを確認してください。zordon は $PATH 経由で alpha を見つけ、alpha は自身の実行ファイルと同じディレクトリにある場合にのみ tommy を見つけます。バイナリとディレクトリ構成をご覧ください。
クイックスタート
Alphasfile を作成し(examples/simple を参照)、次のコマンドを実行します:
zordon start # spawn alpha, push config, stream bringup logs
zordon status # what's running across the whole chain right now?
zordon stop # ask alpha to shut its children down and exit
zordon clean # run each provision's clean teardown (stack stopped)
zordon workspace create x # a parallel, isolated copy of the stack
その他の内容については、ドキュメントをご覧ください。
Claude での使用(MCP)
zordon mcp は、デフォルトでは stdio 経由で、--transport=http を指定すると HTTP 経由で MCP サーバーを実行します。
すべての zordon コマンドとすべてのプロビジョンをツールとして公開するため、エージェントがスタックを操作し、必要に応じてプロビジョンを実行できます。
最も手軽なのは Claude Code プラグインを使う方法です。手動での設定は不要です。
/plugin marketplace add piotrkowalczuk/zordon
/plugin install zordon@zordon
これにより、zordon mcp サーバーと、エージェントが自動的にこれを利用するよう促すスキルが登録されます。詳しくはインストール方法をご覧ください。
その他の MCP クライアントを使う場合、またはプラグインを使わない場合:
MCP クライアントがサーバーを起動するため、自分で zordon mcp を実行する必要はありません。
Claude Code では、プロジェクトディレクトリから次のコマンドで登録します。
claude mcp add zordon -- zordon mcp
または、クライアントの MCP 設定(例:.mcp.json)に追加します。
{ "mcpServers": { "zordon": { "command": "zordon", "args": ["mcp"] } } }
サーバーは作業ディレクトリを起点にチェーンを解決するため、クライアントはプロジェクトツリーから起動してください(または -e ZORDON_HOME=… を渡してください)。
プロビジョンは稼働中の alpha 内で実行されるため、先に zordon start を実行するか、エージェントに start ツールを呼び出させてください。
コンテナまたはサンドボックス内に制限されたエージェントからホスト側のスタックを操作できるようにするには、代わりに HTTP 経由で提供します。クライアントには URL だけが必要となり、コンテナ内に zordon バイナリを置く必要はありません。
zordon mcp --transport=http --listen 127.0.0.1:7391
方法の説明をご覧ください。なお、エンドポイントはまだ認証されていません。
サーバーは、MCP の instructions を介してその目的(これらのツールをいつ使うか)をエージェントに伝えるため、エージェントは自分で使いどころを判断できるはずです。
zordon で管理されているリポジトリでエージェントをさらに促すには、CLAUDE.md(または AGENTS.md)に次の一文を追加してください。"このプロジェクトのローカルスタックは zordon で管理されています。起動、調査、プロビジョンの実行には zordon MCP ツールを使ってください。"
zordon mcp のリファレンスと方法の説明をご覧ください。
ライセンス
GNU General Public License v3.0、 詳しくは LICENSE.md をご覧ください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。