
2026/03/31 0:17
**Show HN:Coasts ― エージェント向けのコンテナ化ホスト**
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
要約
Coast(発音は「コース」)はCLI駆動のツールで、開発者が単一マシン上で複数の隔離された開発環境を実行できるようにします。すべての環境は http://localhost:5173 のローカル Web UI から閲覧できます。
リポジトリのルートにある簡易的な
Coastfile を読み取り、デフォルトで Docker Compose を使用するか、任意のカスタムボリューム/ネットワーク構成を利用します。アプリケーションコードは変更されません。Coast は AI プロバイダーに依存せず、Git ワークツリーのみを利用し、ホストサービスへの依存がないためオフラインファーストのソリューションです。
インストール
eval "$(curl -fsSL https://coasts.dev/install)"
前提条件:Rust(stable)、Docker、Node.js、socat、および Git。
バイナリは
coast(CLI)と coastd(デーモン)です。
開発ワークフロー
- デーモン –
を一つのターミナルで実行します。coast-dev daemon start - Rust の再ビルド – 二番目のターミナルで
(または同等)を実行します。cargo watch -x run - Web UI – Vite のホットモジュールリプレースメントが http://localhost:5173 で利用可能です。
プロジェクト構成
モジュールには以下が含まれます:
、coast-cli
、coast-daemon
、coast-core
,coast-secrets
、coast-docker
、coast-git
(UI)、coast-guard
, さらにスクリプト、ドキュメント、およびcoast-i18n
。integrated-examples
ビルドと使用
coast build coast run main coast checkout feature-x coast ls coast rm
Makefile タスク
make lint, make fix, make test, make check,
make coverage, make watch.
統合テスト
integrated-examples/ に配置されており、Docker‑in‑Docker(make run-dind-integration)またはホストモードで実行可能です。大量のディスクスペースを消費します。
TypeScript バインディングとドキュメント
再生成方法:
npm run generate:types npm run generate:docs
プラットフォームに関する注意点
- macOS が主なターゲットです。
- Linux ではポート <1024 の設定が必要で、HTTPS スタックはインストールごとに Caddy ルート CA を共有します。
コントリビュータ
@jamiesunderland, @dahyman91, @agustif, @clarkerican, @mukeshblackhat, @gregpeden, @vaibhavsing.
本文
Coasts(コンテナ化ホスト)
CLI ツールとローカル可視化 UI を備え、単一マシン上で複数の完全な開発環境を隔離して実行できるツールです。
概要
- 現在の設定をそのまま利用可能 ― アプリケーションコードに変更は不要。リポジトリルートに小さな
を置くだけ。Coastfile - Docker Compose を既に使用している場合、
から起動できます。docker-compose.yml - Docker や Compose がなくても同様に機能します。
- 一度ビルドすれば、必要なボリュームとネットワーク構成で N 個のインスタンスを実行可能です。
- 必要に応じて一つずつ coast をチェックアウトし、ホスト上の標準ポートをバインド。ダイナミックポートを使えば任意の作業ツリーの進捗を確認できます。
- AI プロバイダーやエージェントハーネスに依存せず、Git 作業ツリーのみが必要 ― ツールを切り替えても作業フローは変わらず、ハーネス固有の環境設定も不要です。
- オフライン優先でホスト型サービスへの依存がないため、ベンダーロックインリスクなし。
インストール
eval "$(curl -fsSL https://coasts.dev/install)"
公式サイト・ドキュメント・インストール手順は coasts.dev を参照してください。
ドキュメント & デモ
- Docs – Coasts の完全なユーザー向け情報
- Demo Video – Coasts Demo
- Demo Repo –
に小規模デモプロジェクトが含まれ、エンドツーエンドで試せますcoasts-demo
ハーネス・デモ
- Coasts + Claude Code
- Coasts + Codex
- Coasts + Conductor
- Coasts + Cursor
コントリビューション
PR ガイドラインはコントリビューションガイドを参照してください。
注意: 目前のバージョンは macOS 向け。Linux 開発も可能ですが、1024 以下の標準ポートをバインドするにはホスト側で事前設定が必要です。
HTTPS スタックに Caddy を使用している場合、Coast はインストールごとに一つのローカル Caddy ルート CA を再利用します。同じの下で作成されたワークスペースは同じ CA を共有します。COAST_HOMEとcoastは異なる Coast ホームを使用するため、別々に扱われます。coast-dev
必須環境
- Rust(安定版ツールチェーン)
- Docker
- Node.js
- socat (
on macOS,brew install socat
on Ubuntu)sudo apt install socat - Git
開発セットアップ
1 回だけセットアップスクリプトを実行し、Web UI をビルド、ワークスペースをコンパイルし、
coast-dev / coastd-dev を ~/.local/bin にシンボリックリンクします。
# 初回実行で ~/.local/bin が PATH に追加されます – シェル再起動または source ~/.zshrc
- 開発モードは
とポート 31416 を使用し、グローバル coast インストール(ポート 31415)と衝突しません。~/.coast-dev/ - HTTPS 信頼も同様に分離されています。
はcoast-dev
の安定 Caddy ルートを再利用。~/.coast-dev/caddy/pki/...- 通常インストールは
を使用。~/.coast/caddy/pki/...
coast cert info coast cert export --to ~/Downloads/coast-root.crt
Coast は自動で OS やブラウザの信頼ストアに証明書を登録しません。エクスポート後、必要箇所へインポート/信頼設定してください。
日常開発フロー
3 つのターミナルを用意します:
| ターミナル | 用途 |
|---|---|
| 1 – dev デーモン | (バックグラウンド)または (フォアグラウンド、ログ出力)。Rust の変更で再ビルドしたら再起動。 |
| 2 – Rust 自動リビルド | を実行し、ソースが変わるたびにワークスペースをコンパイル。完了後、ターミナル 1 でデーモンを再起動。 |
| 3 – Web UI(ホットリロード) | Vite 開発サーバーが で HMR を提供し、 リクエストを のデーモンへプロキシ。( が無い)は本番デーモン(ポート 31415)向け開発時に使用。 |
Makefile ターゲット
Makefile は開発タスクの主要エントリーポイントです。
| コマンド | 内容 |
|---|---|
| フォーマッティングチェック()と 実行。 |
| 自動フォーマットと Clippy 警告の自動修正。 |
| ワークスペース全体でユニットテストを実行。 |
| と を順次実行。 |
| HTML カバレッジレポートを生成し、ブラウザで開く。 |
| ソース変更時に再ビルド( が必要)。 |
Coast Guard(Web UI)
TypeScript 型の生成
UI で使用する Rust 型を変更したらバインディングを再生成:
cd coast-guard npm run generate:types
これにより
cargo test -p coast-core export_bindings が実行され、src/types/generated/ のバレルファイルが更新されます。
Docs マニフェストの生成
ドキュメントビューアはマニフェストを参照します。
docs/ 内の Markdown を変更したら再生成:
cd coast-guard npm run generate:docs
ドキュメントローカライズ & 検索インデックス
Python スクリプトが Makefile 経由で呼び出されます。
| コマンド | 用途 |
|---|---|
| 翻訳対象ドキュメントの一覧表示。 |
| 指定ロケール(例: es)を翻訳。 |
| サポートされているすべてのロケールを一括翻訳。 |
| 指定ロケール用検索インデックス生成。 |
| すべてのロケールで検索インデックスを生成。 |
両スクリプトは環境変数
OPENAI_API_KEY、またはプロジェクトルートにある .env を参照します。.env.example をご確認ください。
テスト
ユニットテスト
cargo test --workspace
統合テスト
統合テストは
integrated-examples/ 内で実行し、完全な coast ワークフローを検証します。
- Docker-in-Docker(DinD)ランナーで実行(Docker だけが必要):
make run-dind-integration TEST=test_assign # 単一テスト実行 make run-dind-integration TEST=all # 全テスト実行
- ホスト上でも直接実行可能(Docker, socat, リリースビルドが必要)。DinD コンテナを実際に起動するため、ディスク使用量は増大します。定期的に
を実行してクリーンアップしてください。docker system prune
全テスト一覧と平均実行時間は
dindind/integration.yaml で確認できます。ホストモードの詳細と前提条件は integrated-examples/README.md に記載しています。
簡易使用例:
integrated-examples/test.sh # 全テスト実行 integrated-examples/test.sh test_checkout test_secrets # 指定テスト実行 integrated-examples/test.sh --include-keychain # macOS Keychain テストを含める
プロジェクト構成
coast/ ├─ coast-cli/ # 軽量 CLI クライアント、Unix ソケット経由でデーモンへ通信 ├─ coast-daemon/ # coastd バックグラウンドプロセス(ハンドラー、状態 DB、ポート管理) ├─ coast-core/ # 共有型定義、Coastfile パース、プロトコル定義 ├─ coast-secrets/ # 秘密情報抽出・暗号化・キーストア ├─ coast-docker/ # Docker API ラッパー、DinD 実行環境、Compose 連携 ├─ coast-git/ # Git 作業ツリー管理 ├─ coast-guard/ # Web UI(React + Vite)、デーモン経由で提供 ├─ coast-i18n/ # CLI の i18n ロケールファイル ├─ scripts/ # Python ビルドスクリプト(翻訳、検索インデックス生成) ├─ docs/ # ユーザー向けドキュメント(英語+翻訳版) └─ integrated-examples/ # サンプルプロジェクトとシェルベースの統合テスト
ソースからビルド
バイナリは
target/release/ に配置されます:
– CLI クライアントcoast
– バックグラウンドデーモンcoastd
# デーモン起動 coastd --foreground & # Coastfile と docker-compose.yml があるプロジェクトの場合: coast build coast run main coast run feature-x --worktree feature/x # 標準ポートを所有するインスタンスを切り替え coast checkout main coast checkout feature-x # 状態確認 coast ls coast ps main coast logs main coast ports main # クリーンアップ coast rm main coast rm feature-x
コントリビューター
- @jamiesunderland
- @dahyman91
- @agustif
- @clarkerican
- @mukeshblackhat
- @gregpeden
- @vaibhavsing
由来
本プロジェクトは別のリポジトリから始まり、いくつかの履歴が統合されました。完全なコミット履歴については、元のリポジトリをご覧ください。