just-bash - エージェント向け Bash シミュレーション環境
(github.com/vercel-labs)- Vercelが開発した "Bash for Agents"
- 安全でサンドボックス化された bash 環境を必要とする AI エージェントのために設計された、TypeScript ベースの仮想 Bash 環境
- メモリ内仮想ファイルシステム(InMemoryFs) 上で動作し、実際のディスクにはアクセスできない サンドボックス実行環境
- デフォルトで ネットワークアクセスは遮断されており、必要に応じて
curlによる 許可 URL ベースの安全なネットワークリクエストをサポート - 提供されたファイルシステムにのみアクセス可能で、無限ループ・再帰実行防止機能を含む
- バイナリや WASM の実行はサポートしない
- API の使用時は
exec()単位で分離され、環境変数・関数・作業ディレクトリは呼び出し間で保持されない(ファイルシステム状態のみ永続化) - 生成引数として、初期ファイル、環境変数、作業ディレクトリ、実行制限などを細かく設定可能
- Lazy ファイルロードをサポートし、必要な時点でのみファイル内容を同期/非同期関数で生成可能
- ユーザー定義コマンド(defineCommand) 機能により、TypeScript ベースのカスタムコマンドを追加可能
CommandContextを通じてfs,cwd,env,stdin,execへのアクセスをサポート
- 4種類のファイルシステム実装を提供
- InMemoryFs: 純粋なメモリベース
- OverlayFs: 読み取りはディスク、書き込みはメモリ
- ReadWriteFs: 実際のディスクの読み書きが可能
- MountableFs: 複数のファイルシステムをパスごとにマウントし、統合ネームスペースを構成
- AI SDK 統合ツールとして
bash-toolをサポートgenerateText()と組み合わせて、AI モデルが Bash コマンドを安全に実行できるよう設計
- Vercel Sandbox 互換 API を提供
Sandboxクラスにより @vercel/sandbox と同じインターフェースで使用可能- 必要に応じて実際の VM ベースのサンドボックスへ移行しやすい
- CLI の
just-bashコマンドを提供- OverlayFS ベースで実行後、すべての書き込み内容はメモリ上で破棄
--jsonオプションで プログラム的な結果出力をサポート
- 対話型シェルモード(
pnpm shell) を提供- デフォルトでインターネットアクセスを許可し、
--no-networkで遮断可能
- デフォルトでインターネットアクセスを許可し、
- サポートするコマンド群
- ファイル操作、テキスト処理、データ処理、圧縮、ネットワークなど 標準的な Bash コマンドの大半を含む
jq,sqlite3,python3(Pyodide ベース) などのデータ処理コマンドも任意でサポート- シェル機能として、パイプ、リダイレクト、条件分岐、ループ、関数、変数、グロブパターンなど Bash 構文の大半を実装
- 基本ディレクトリ構造は
/home/user,/bin,/usr/bin,/tmpなど、Unix ライクな環境を提供 - ネットワークアクセス制御は URL・HTTP メソッドベースのホワイトリスト方式
dangerouslyAllowFullInternetAccessオプションで全面許可も可能
- Python および SQLite サポートは任意で有効化
- Pyodide ベースの Python、WASM ベースの SQLite(sql.js) により 完全なサンドボックス実行を保証
- 実行保護機能として、関数の深さ、コマンド数、ループ反復回数など 実行上限を設定可能
- Apache-2.0 ライセンス
まだコメントはありません。