安全で分離されたコード実行環境を構築する
Sandbox SDK を使うと、信頼できないコードを分離環境で安全に実行できます。Containers の上に構築され、コマンド実行、ファイル管理、バックグラウンドプロセスの実行、サービスの公開を、Workers アプリケーションから簡単な API で行えます。
サンドボックスは、コード実行が必要な AI エージェント、対話型の開発環境、データ分析プラットフォーム、CI/CD システム、エッジで安全なコード実行が必要なアプリケーションに向いています。各サンドボックスは、完全な Linux 環境を持つ独自の分離コンテナーで動き、性能を保ちながら強いセキュリティ境界を提供します。
Sandbox では、Python スクリプトの実行、Node.js アプリケーションの実行、データ分析、コードのコンパイル、複雑な計算ができます。TypeScript API は簡潔で、管理するインフラはありません。
import { getSandbox } from '@cloudflare/sandbox';
export { Sandbox } from '@cloudflare/sandbox';
export default {
async fetch(request: Request, env: Env): Promise<Response> {
const sandbox = getSandbox(env.Sandbox, 'user-123');
// Execute a command and get the result
const result = await sandbox.exec('python --version');
return Response.json({
output: result.stdout,
exitCode: result.exitCode,
success: result.success
});
}
};import { getSandbox } from '@cloudflare/sandbox';
export { Sandbox } from '@cloudflare/sandbox';
export default {
async fetch(request: Request, env: Env): Promise<Response> {
const sandbox = getSandbox(env.Sandbox, 'user-123');
// Create a Python execution context
const ctx = await sandbox.createCodeContext({ language: 'python' });
// Execute Python code with automatic result capture
const result = await sandbox.runCode(`
import pandas as pd
data = {'product': ['A', 'B', 'C'], 'sales': [100, 200, 150]}
df = pd.DataFrame(data)
df['sales'].sum() # Last expression is automatically returned
`, { context: ctx });
return Response.json({
result: result.results?.[0]?.text,
logs: result.logs
});
}
};import { getSandbox } from '@cloudflare/sandbox';
export { Sandbox } from '@cloudflare/sandbox';
export default {
async fetch(request: Request, env: Env): Promise<Response> {
const sandbox = getSandbox(env.Sandbox, 'user-123');
// Create a project structure
await sandbox.mkdir('/workspace/project/src', { recursive: true });
// Write files
await sandbox.writeFile(
'/workspace/project/package.json',
JSON.stringify({ name: 'my-app', version: '1.0.0' })
);
// Read a file back
const content = await sandbox.readFile('/workspace/project/package.json');
return Response.json({ content });
}
};import { getSandbox } from '@cloudflare/sandbox';
export { Sandbox } from '@cloudflare/sandbox';
export default {
async fetch(request: Request, env: Env): Promise<Response> {
const sandbox = getSandbox(env.Sandbox, 'user-123');
// Watch for file changes in real-time
const watcher = await sandbox.watch('/workspace/src', {
include: ['*.js', '*.ts'],
onEvent: (event) => {
console.log(`${event.type}: ${event.path}`);
if (event.type === 'modify') {
// Trigger rebuild or hot reload
console.log('Code changed, recompiling...');
}
},
onError: (error) => {
console.error('Watch error:', error);
}
});
// Stop watching when done
setTimeout(() => watcher.stop(), 60000);
return Response.json({ message: 'File watcher started' });
}
};import { getSandbox } from '@cloudflare/sandbox';
export { Sandbox } from '@cloudflare/sandbox';
export default {
async fetch(request: Request, env: Env): Promise<Response> {
const url = new URL(request.url);
// Terminal WebSocket connection
if (url.pathname === '/ws/terminal') {
const sandbox = getSandbox(env.Sandbox, 'user-123');
return sandbox.terminal(request, { cols: 80, rows: 24 });
}
return Response.json({ message: 'Terminal endpoint' });
}
};WebSocket でブラウザーターミナルをサンドボックスのシェルへ直接接続します。詳細: ブラウザーターミナル。
import { getSandbox } from '@cloudflare/sandbox';
export { Sandbox } from '@cloudflare/sandbox';
export default {
async fetch(request: Request, env: Env): Promise<Response> {
// Connect to WebSocket services in sandbox
if (request.headers.get('Upgrade')?.toLowerCase() === 'websocket') {
const sandbox = getSandbox(env.Sandbox, 'user-123');
return await sandbox.wsConnect(request, 8080);
}
return Response.json({ message: 'WebSocket endpoint' });
}
};サンドボックス内で動く WebSocket サーバーへ接続します。詳細: WebSocket 接続。
始める
API リファレンス
Worker をデプロイし、npm パッケージとコンテナーイメージを同じリリース系列に揃えます。
シェルコマンド、Python スクリプト、Node.js アプリケーションなどを、ストリーミング出力と自動タイムアウト処理付きで実行します。
サンドボックスのファイルシステムでファイルの読み書きと操作を行います。バックグラウンドプロセスの実行、出力の監視、長時間処理の管理ができます。
サンドボックス内で動く HTTP サービスを、自動生成されるプレビュー URL で公開します。対話型の開発環境とアプリケーションホスティングに向いています。
チャート、テーブル、画像を含む豊富な出力で、Python と JavaScript のコードを実行します。実行間で状態を保持し、AI 生成コードと対話型ワークフローに使えます。
WebSocket でサンドボックスのシェルへ直接つながる、ブラウザーベースのターミナル画面を作ります。共同作業ターミナル、対話型の開発環境、自動再接続付きのリアルタイムシェルアクセスを構築できます。
S3 互換のオブジェクトストレージ(R2、S3、GCS など)をローカルファイルシステムとしてマウントします。標準のファイル操作でバケットへアクセスし、データはサンドボックスのライフサイクルをまたいで残ります。本番デプロイが必要です。
ネイティブのファイルシステムイベントで、ファイルとディレクトリの変更を監視します。ホットリロード開発サーバー、ビルド自動化、設定監視ツールの構築に向いています。
サンドボックスからの送信 HTTP を遮断、許可、傍受します。送信ハンドラーで認可ヘッダーを注入し、認証情報は Worker に置いたままにできます。
Sandbox で強力なアプリケーションを構築します。
大規模言語モデルが生成したコードを、安全かつ確実に実行します。Workers AI の GPT-OSS などのモデルとのネイティブ統合により、サンドボックス実行付きの function calling が使えます。信頼できないコードを動かす AI エージェント、コードアシスタント、自律システムに向いています。
pandas、NumPy、Matplotlib を使った対話型のデータ分析環境を作ります。チャート、テーブル、可視化を、豊富な出力の自動整形付きで生成します。
完全な Linux 環境とプレビュー URL を使い、クラウド IDE、コーディングプレイグラウンド、共同開発ツールを構築します。
分離環境でテスト、コンパイル、ビルドパイプラインを実行します。並列実行とストリーミングログに対応します。
Sandbox を動かすサーバーレスのコンテナーランタイムです。コンテナ化した任意のワークロードをエッジで実行できます。
ネットワーク上で機械学習モデルと LLM を実行します。Sandbox と組み合わせて、安全な AI コード実行ワークフローを作れます。
強い一貫性を持つ永続環境を Sandbox が維持するための、ステートフルな調整レイヤーです。
エージェント向けに Cloudflare Skills ↗ を入れます(Agent setup)。現行の安定版パッケージを使っているあいだは、このサイトの本編ドキュメントと sandbox-stable を使います。@cloudflare/sandbox@next には sandbox-next を使います(新規プロジェクトに推奨)。既存アプリを移植する準備ができたら、sandbox-migrate-to-next を使います。
チュートリアル
AI によるコード実行、データ分析、対話型環境を含む、一連の例を確認します。
Sandbox アプリケーションをデプロイする
デプロイし、パッケージとイメージを揃えます。
How-to ガイド
Sandbox SDK で特定の問題を解き、機能を実装する方法を学びます。
1.0 プレビュー
@cloudflare/sandbox@next をインストールし、Sandbox SDK 1.0 のリリースに備えます。
API リファレンス
Sandbox SDK の API ドキュメント全体を確認します。
概念
Sandbox SDK の主要な概念とアーキテクチャを学びます。
設定
Sandbox SDK の設定オプションを学びます。
GitHub リポジトリ
SDK のソースコードを確認し、問題を報告し、プロジェクトへ貢献します。
料金
基盤の Containers プラットフォームに基づく Sandbox の料金を理解します。
制限
リソース制限、クォータ、その範囲で作業するためのベストプラクティスを学びます。
Discord コミュニティ
Discord でコミュニティとつながります。質問する、作っているものを共有する、ほかの開発者から助けを得る、ができます。