
Apple Silicon macOS上で超高速なCLIを実現し、高速でサンドボックス化された開発とLLMエージェントを可能にします。
コーディングエージェントを安全に実行するための超高速なオープンソースサンドボックス。
VibeBox は、macOS(Apple Virtualization Framework)上でコーディングエージェントを実行するためのプロジェクト単位のマイクロVMサンドボックスです。 日常的に使うワークフローに最適化されており、高速なウォーム再入、明示的なマウント、再利用可能なセッションを備えています。
対象ユーザー: コーディングエージェントを実行するmacOSユーザーで、高速な日常ワークフローを犠牲にせずに真の隔離を求める方。
クイックファクト: ウォーム再入は通常、私のM3では5秒未満(マシン/キャッシュによって異なります)。初回実行時にはDebianベースイメージのダウンロードとプロビジョニングが行われます(ネットワーク環境に依存)。
セキュリティモデル: LinuxゲストVMと、vibebox.tomlによる明示的なマウント許可リスト(リポジトリ優先、その他はすべてオプトイン)。
vibebox を実行すると、現在のリポジトリに再利用可能なサンドボックスに入ります。# 任意のリポジトリから
cd my-project
vibebox
おおよそ以下のような表示になります:
vibebox: starting (session: my-project)
vibebox: attaching...
vibecoder@vibebox:~/my-project$
私は毎日コーディングエージェントを使っていますが、ホストマシンを渡さずにエージェントに本物のシェルを与えたいと考えていました。制限を厳しくすると確認が止まらず、緩めるとファイル削除、シークレットへのアクセス、リポジトリ外への逸脱などが心配になります。
VibeBox はその中間を行くものです。ハードなVM境界、高速な再入、明示的なマウントを備えたプロジェクト単位のサンドボックスです。安全性を面倒な作業にせず、エージェントワークで「常時オン」にできるように作られています。
コンテナは素晴らしいものです。VibeBox はサービス構築のために Docker/devcontainers を置き換えようとするものではありません。
macOS 上のエージェントワークフローにおいて、私は特に VM 型のデフォルトを求めていました:
既存の選択肢を使わなかった理由は以下の通りです:
それが VibeBox を作ろうと思った理由です:プロジェクト単位のサンドボックスで、vibebox と入力するだけで高速に入室でき、実際の設定とセッションをサポートし、ハードな隔離境界を維持できるもの。
# インストールスクリプト
curl -fsSL https://raw.githubusercontent.com/robcholz/vibebox/main/install | bash
# パッケージマネージャ
cargo install vibebox
# 手動インストール
curl -LO https://github.com/robcholz/vibebox/releases/download/latest/vibebox-macos-arm64.zip
unzip vibebox-macos-arm64.zip
mkdir -p ~/.local/bin
mv vibebox ~/.local/bin
export PATH="$HOME/.local/bin:$PATH"
必要条件
初回実行
初回の vibebox 実行時に Debian ベースイメージをダウンロードし、プロビジョニングします。その後は、プロジェクトごとのインスタンスがキャッシュされたベースイメージを再利用するため、起動が大幅に高速化されます。
クイックスタート
cd /path/to/your/project
vibebox
初回実行時、VibeBox はプロジェクト内に vibebox.toml(存在しない場合)と、インスタンスデータ用の .vibebox/ ディレクトリを作成します。
設定(vibebox.toml)
vibebox.toml はデフォルトでプロジェクトルートに配置されます。vibebox -c path/to/vibebox.toml または環境変数 VIBEBOX_CONFIG_PATH で上書きできますが、パスはプロジェクトディレクトリ内にある必要があります。
デフォルト設定(存在しない場合に自動生成):
[box]
cpu_count = 2
ram_mb = 2048
disk_gb = 5
mounts = [
"~/.codex:~/.codex:read-write",
"~/.claude:~/.claude:read-write",
]
[supervisor]
auto_shutdown_ms = 20000
disk_gb はインスタンスディスクが初めて作成されるときにのみ適用されます。後で変更する場合は、vibebox reset を実行してディスクを再作成してください。
マウント
~/<project-name> に読み書き可能でマウントされ、シェルはそこから起動します。.git ディレクトリが存在する場合、ゲストVM内では tmpfs マウントでマスクされ、ゲストからの偶発的な編集を防ぎます。box.mounts に host:guest[:read-only|read-write] 形式で指定します。~ 展開をサポートします。相対ゲストパスは /root/<path> として扱われます。~ を使用するゲストパスは、利便性のために /home/<ssh-user> にリンクされます。vibebox explain を実行すると、解決済みのホスト/ゲストマッピングが表示されます。CLI コマンド
vibebox # 現在のプロジェクトVMを起動またはアタッチ
vibebox list # 既知のプロジェクトセッションを一覧表示
vibebox reset # このプロジェクトの.vibeboxを削除し、次回実行時に再作成
vibebox purge-cache # グローバルキャッシュ (~/.cache/vibebox) を削除
vibebox explain # マウントとネットワーク情報を表示
VM 内で
vibecodervibeboxgit、curl、ripgrep、openssh-server、sudo。mise をインストールし、uv、node、@openai/codex、@anthropic-ai/claude-code などのツールを設定します(ベストエフォート)。:help および :exit。状態とキャッシュ
.vibebox/(インスタンスディスク、SSHキー、ログ、マネージャーソケット/pid)に保存されます。vibebox reset で削除されます。~/.cache/vibebox(ベースイメージ+共有ゲストキャッシュ)に保存されます。vibebox purge-cache でクリアされます。~/.vibebox/sessions に保存され、vibebox list で表示されます。VibeBox へのコントリビュートに興味がある方は、プルリクエストを送信する前にコントリビューションガイドをお読みください。
VibeBox は、最小限の手間で高速で繰り返し使えるローカルサンドボックスを提供するために作られています。異なる点は以下の通りです:
vibebox という単一のシンプルなコマンドで、プロジェクトからサンドボックスに入れます。vibebox.toml に記述し、CPU、RAM、ディスクサイズ、マウントを設定できます。vibe by lynaghk.
そして素晴らしいRustコミュニティ — crates.io のようなエコシステムとツールチェーンがなければ、これは実現しませんでした!
X でフォローしてください x.com/robcholz