mcpField
D
daytona

daytona

github.com/daytonaクラウド・DevOps211.3k 回インストール5 週間前に更新
リポジトリ

daytona について

daytonaは、SDKを通じてDaytona Cloudのサンドボックスを扱うスキルです。隔離環境でコードやコマンド、サービスを実行するための準備と操作を支援します。

主な機能

  1. 01イメージから隔離サンドボックスを作成
  2. 02シェルコマンドとコードを実行
  3. 03ファイルとサンドボックスのライフサイクルを管理
  4. 04再利用可能なスナップショットを作成
  5. 05プレビューURLでサンドボックスのサービスを公開

活用シーン

  1. 01隔離環境でAgent生成コードを実行
  2. 02依存関係入りの再利用可能な環境を用意
  3. 03長時間タスクを実行して出力を確認

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/daytona/skills --skill daytona

インストール後、Claude Code で/daytonaを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
cli.md
references/api/
api-keys.md
audit.md
config.md
docker-registry.md
Health.md
jobs.md
object-storage.md
organizations.md
preview.md
README.md
regions.md
runners.md
sandbox.md
secret.md
snapshots.md
toolbox-computer-use.md
toolbox-file-system.md
toolbox-git.md
toolbox-info.md
toolbox-interpreter.md
toolbox-lsp.md
toolbox-port.md
toolbox-process.md
toolbox-server.md
toolbox-system.md
users.md
volumes.md
warm-pools.md
webhooks.md

詳細

Daytona とは

Daytona は AI エージェント向けに、完全に構成可能なコンピューターであるサンドボックスを提供します。各サンドボックスは、独自のカーネル、ファイルシステム、ネットワークスタック、および専用の vCPU、RAM、ディスクを備えた、分離されたランタイム環境です。エージェントはサンドボックス内で、パッケージのインストール、サーバーの実行、コードのコンパイル、プロセスの管理を行えます。

サンドボックスは、OCI 準拠のイメージまたはスナップショットから構築されます。Linux 上で動作する言語やツールであれば、どれでも使用できます。

対象範囲: このスキルの対象は Daytona Cloud(app.daytona.io)です。

はじめる前に

Daytona のコードを書く前に、セットアップを確認してください。

  1. SDK はインストールされていますか? ユーザーの言語用の Daytona SDK がインストールされていることを確認します(例:pip show daytona、または package.json で @daytona/sdk を確認)。インストールされていない場合は、インストールしてください。
  2. API キーは設定されていますか? シェル環境または環境ファイルで DAYTONA_API_KEY を確認します。設定されていない場合は、API キーが必要であることをユーザーに伝え、作成するための Daytona ダッシュボード > API キー を案内してください。

SDK の基本 — Python

インストール
pip install daytona
クライアントとサンドボックスの作成
from daytona import Daytona

# Uses DAYTONA_API_KEY env var
daytona = Daytona()

# Create a sandbox with defaults (1 vCPU, 1GB RAM, 3GB disk)
sandbox = daytona.create()
from daytona import Daytona, CreateSandboxFromImageParams, Image, Resources

daytona = Daytona()

# Create with a custom image, name, and resources
sandbox = daytona.create(CreateSandboxFromImageParams(
    image=Image.debian_slim("3.12"),
    name="my-sandbox",
    resources=Resources(cpu=2, memory=4, disk=8),
))
コマンドの実行

exec と code_run は、どちらも .result(標準出力)と .exit_code を持つ ExecuteResponse を返します。 code_run はサンドボックスの言語ランタイム内で実行されます(作成時に language= パラメーターで設定し、デフォルトは "python" です)。対応言語:python、typescript、javascript。

# Run a shell command
response = sandbox.process.exec("echo 'Hello, World!'")
print(response.result)     # "Hello, World!"
print(response.exit_code)  # 0

# Run Python code (stateless)
response = sandbox.process.code_run('''
import json
data = {"key": "value"}
print(json.dumps(data, indent=2))
''')
print(response.result)
print(response.exit_code)  # 0 on success, non-zero on error
ファイル操作
# Write a file
sandbox.fs.upload_file(b"Hello, Daytona!", "/home/daytona/data.txt")

# Read a file
content = sandbox.fs.download_file("/home/daytona/data.txt")
print(content.decode())

# List files
files = sandbox.fs.list_files("workspace")
for f in files:
    print(f"{f.name} ({'dir' if f.is_dir else f.size})")
サンドボックスのライフサイクル
# Pause and resume later
sandbox.stop()          # frees CPU/RAM, keeps disk
sandbox.start()         # ready to use again

# Long-term storage (must be stopped first)
sandbox.stop()
sandbox.archive()       # cold storage, no quota impact

# Resume a previous sandbox by ID or name
sandbox = daytona.get("sandbox-id-or-name")
sandbox.start()

# Permanently remove
sandbox.delete()

エラー処理のため、Daytona の呼び出しは DaytonaError でラップしてください。非同期処理では、AsyncDaytona(非同期コンテキストマネージャー)を使用します。Python SDK の詳細なリファレンスについては、python-sdk/README.md を参照してください。

SDK の基本 — TypeScript

TypeScript SDK(@daytona/sdk)は Python API に準じています。主な違いは、exec の代わりに executeCommand、code_run の代わりに codeRun を使用する点、ファイル操作に uploadFile/downloadFile/listFiles を使用する点、エラー処理に DaytonaError を使用する点です。npm install @daytona/sdk でインストールしてください。

TypeScript SDK の詳細なリファレンスと例については、typescript-sdk/README.md を参照してください。

よくあるパターン

カスタム環境とスナップショット

ユーザーがサンドボックス内で特定のパッケージ、ツール、またはカスタム OS を必要とする場合は、Image ビルダーでカスタムイメージを定義します。同じセットアップで複数のサンドボックスを作成する場合は、スナップショットの作成を提案してください。スナップショットは依存関係を再利用可能なテンプレートに組み込むため、以降のサンドボックスを必要なものがすべてプリインストールされた状態で、すばやく起動できます。

注: スナップショットはイメージ定義から構築され、実行中のサンドボックスの状態から構築されるものではありません。現在のファイルシステムの状態を取り込むために、実行中のサンドボックスをスナップショットにすることはできません。

Image ビルダーでイメージを定義します。

from daytona import Image

# Debian with Python packages
image = Image.debian_slim("3.12").pip_install(["pandas", "numpy", "scikit-learn"])

# With system packages and shell commands
image = (Image.debian_slim("3.12")
    .run_commands("apt-get update && apt-get install -y curl git",
                   "curl -fsSL https://deb.nodesource.com/setup_20.x | bash -")
    .pip_install(["flask"])
    .env({"APP_ENV": "production"}))

# From a Dockerfile
image = Image.from_dockerfile("./Dockerfile")

# From a registry image directly
image = Image.base("node:20-slim")
import { Image } from '@daytona/sdk'

const image = Image.debianSlim('3.12').pipInstall(['pandas', 'numpy', 'scikit-learn'])

const image = Image.debianSlim('3.12')
    .runCommands('apt-get update && apt-get install -y curl git',
                 'curl -fsSL https://deb.nodesource.com/setup_20.x | bash -')
    .pipInstall(['flask'])
    .env({ APP_ENV: 'production' })

const image = Image.fromDockerfile('./Dockerfile')

const image = Image.base('node:20-slim')

イメージから単発のサンドボックスを直接作成します。

from daytona import Daytona, CreateSandboxFromImageParams, Image

daytona = Daytona()
image = Image.debian_slim("3.12").pip_install(["flask"])
sandbox = daytona.create(CreateSandboxFromImageParams(image=image))
const sandbox = await daytona.create({ image })

または、再利用するためのスナップショットを作成します(同じセットアップで複数のサンドボックスを作成する場合におすすめです)。

from daytona import Daytona, CreateSandboxFromSnapshotParams, CreateSnapshotParams, Image

daytona = Daytona()

# One-time: build a snapshot
image = Image.debian_slim("3.12").pip_install(["pandas", "numpy", "scikit-learn"])
snapshot = daytona.snapshot.create(CreateSnapshotParams(
    name="data-science",
    image=image,
))

# Every time after: fast start from snapshot
sandbox = daytona.create(CreateSandboxFromSnapshotParams(
    snapshot=snapshot.name,
))
response = sandbox.process.code_run("import pandas; print(pandas.__version__)")
const snapshot = await daytona.snapshot.create({
    name: 'data-science',
    image: Image.debianSlim('3.12').pipInstall(['pandas', 'numpy', 'scikit-learn']),
})

const sandbox = await daytona.create({ snapshot: snapshot.name })

Image ビルダー API の詳細については、./references/<lang>-sdk/declarative-builder.md を参照してください。スナップショットの管理については、./references/<lang>-sdk/snapshots.md を参照してください。

長時間実行タスクのパターン
from daytona import Daytona

daytona = Daytona()
sandbox = daytona.create()

# ... clone repo, install deps, etc.

# Start a test suite in the background
sandbox.process.exec("nohup pytest --tb=short > /home/daytona/test.log 2>&1 &")

# Check progress later
response = sandbox.process.exec("tail -5 /home/daytona/test.log")
print(response.result)

# Download the full report when done
report = sandbox.fs.download_file("/home/daytona/test.log")
プレビュー URL

サンドボックスでは、プレビュー URL を介して HTTP サービスを公開できます。プレビューはデフォルトでトークン認証されますが、サンドボックスの作成時に public=True(Python)/public: true(TypeScript)を指定すると公開されます。

  • トークン認証 — .url と .token を返します(x-daytona-preview-token ヘッダーとして送信)
    • Python:sandbox.get_preview_link(port) | TypeScript:sandbox.getPreviewLink(port) | Go:sandbox.GetPreviewLink(port) | Ruby:sandbox.get_preview_link(port)
  • 署名付き URL(共有可能) — トークンが URL に埋め込まれるため、ヘッダーは不要です
    • Python:sandbox.create_signed_preview_url(port, expires_in_seconds=3600) | TypeScript:sandbox.getSignedPreviewUrl(port, 3600) | Go:sandbox.GetSignedPreviewLink(port, 3600) | Ruby:sandbox.create_signed_preview_url(port, expires_in_seconds: 3600)

詳細については、./references/<lang>-sdk/preview.md を参照してください。

サンドボックスの制限と制約

制約デフォルト最大
サンドボックスあたりの vCPU14
サンドボックスあたりの RAM1 GB8 GB
サンドボックスあたりのディスク3 GiB10 GB

合計制限(すべてのサンドボックスにおける vCPU/RAM/ディスクの合計)は、組織のティアによって異なります。

ティアvCPURAMストレージ要件
Tier 11010 GiB30 GiBメール認証済み
Tier 2100200 GiB300 GiBクレジットカード + $25 のチャージ + GitHub 連携
Tier 3250500 GiB2000 GiBビジネス用メールアドレス + $500 のチャージ
Tier 45001000 GiB5000 GiB30 日ごとに $2000 のチャージ

リソースの状態による影響:

  • 実行中のサンドボックスは vCPU + RAM + ディスクの制限に算入されます
  • 停止中のサンドボックスはディスクの制限にのみ算入されます
  • アーカイブ済みのサンドボックスはクォータに影響しません(データはコールドストレージに保存されます)
ネットワークアクセスの制限

Tier 1 および Tier 2 の組織では、ネットワークアクセスが制限されています。 サンドボックスがアクセスできるのは、必須サービス(パッケージレジストリ、Git ホスト、AI API、CDN など)の許可リストに含まれるサービスのみです。この制限はサンドボックス単位で上書きできません。つまり、networkAllowListを設定しても、組織が Tier 1/2 の場合は役に立ちません。

Tier 3 および Tier 4では、デフォルトでインターネットに無制限にアクセスでき、必要に応じてサンドボックスごとにファイアウォールを制御できます。

コードから任意の URL(外部 API、カスタムサービスなど)にアクセスする必要がある場合は、Tier 3 以上が必要です。Daytona Dashboard > Limitsでティアを確認してください。

すべてのティアで利用できる必須サービスには、npm/PyPI/apt レジストリ、GitHub/GitLab/Bitbucket、Docker レジストリ、主要な AI API(Anthropic、OpenAI、Google AI など)、S3、Google Cloud Storage、一般的な開発ツール(Vercel、Supabase、Clerk、Sentry など)があります。全リストについては、network-limits.mdを参照してください。必要なサービスが見つかりませんか?daytonaio/sandbox-network-whitelistからリクエストを送信してください。

使用状況はDaytona Dashboard > Limitsで確認できます。詳細については、limits.mdを参照してください。

クイック決定ツリー

やりたいことまずはこちら
分離された環境でコード/コマンドを実行する上記の SDK Essentials を確認し、次に ./references/<lang>-sdk/process-code-execution.md を参照
サンドボックスの起動を高速化する./references/<lang>-sdk/snapshots.md — イメージ定義からスナップショットを作成し、それを使って新しいサンドボックスを作成
サンドボックスの実行をまたいでデータを保持する./references/<lang>-sdk/volumes.md — サンドボックスを削除しても保持される永続ストレージを接続
カスタム環境(特定の OS、パッケージ、依存関係)を構築する./references/<lang>-sdk/declarative-builder.md — Image ビルダーを使ってカスタムサンドボックスイメージを定義
サンドボックスがネットワーク上でアクセスできる対象を制御する./references/<lang>-sdk/network-limits.md — サンドボックスごとのファイアウォールルール(無制限アクセスには Tier 3 以上が必要)
サンドボックス内のブラウザーまたは GUI を操作する./references/<lang>-sdk/computer-use-guide.md + ./references/<lang>-sdk/vnc-access.md
ステートフルな Python インタープリターを実行する(呼び出し間で変数を保持)./references/python-sdk/sync/code-interpreter.md または ./references/typescript-sdk/code-interpreter.md
オブジェクトを保存・取得する(S3 互換)./references/<lang>-sdk/object-storage.md(Python sync/async、TypeScript、Ruby)
実行中のサンドボックスに SSH 接続する./references/<lang>-sdk/ssh-access.md

<lang>-sdkは次のいずれかに置き換えてください:python-sdk、typescript-sdk、java-sdk、go-sdk、またはruby-sdk。

SDK インデックス

Python SDK(主要)
ファイル説明
python-sdk/README.mdインストール、クイックスタート、設定
python-sdk/sync/daytona.mdDaytona クライアント — サンドボックスの作成、一覧表示、削除
python-sdk/sync/sandbox.mdサンドボックスインスタンス — ライフサイクル、リソース、ラベル
python-sdk/sync/process.mdコマンドの実行、コードの実行
python-sdk/sync/file-system.mdファイル操作 — 読み取り、書き込み、アップロード、ダウンロード
python-sdk/sync/git.mdGit 操作 — クローン、コミット、プッシュ、ステータス
python-sdk/sync/snapshot.mdスナップショット管理
python-sdk/sync/volume.mdボリューム管理
python-sdk/sync/code-interpreter.mdステートフルな Python インタープリター
python-sdk/sync/computer-use.mdデスクトップの自動化(マウス/キーボード/画面)
python-sdk/sync/lsp-server.mdLanguage Server Protocol
python-sdk/sync/object-storage.mdS3 互換のオブジェクトストレージ
python-sdk/errors.mdエラーの種類
python-sdk/image.mdカスタムイメージ定義

非同期版は同期 API と同じ構成です:python-sdk/async/。

TypeScript SDK

フラットな構成です(Python のような同期/非同期の分割はありません):typescript-sdk/README.md。ファイル:daytona.md、sandbox.md、process.md、file-system.md、git.md、snapshot.md、volume.md、code-interpreter.md、computer-use.md、lsp-server.md、object-storage.md、execute-response.md、pty-handle.md、errors.md、image.md。

Java SDK、Go SDK、Ruby SDK

いずれも同じパターンに従います。Java は TypeScript のフラットな構成を踏襲しています:java-sdk/README.md。Go は簡潔な単一ファイル構成です:go-sdk/README.md。Ruby は TypeScript の構成を踏襲しています:ruby-sdk/README.md。

機能ガイド(SDK ごと)

各 SDK フォルダーには、言語ごとの例を含む同じ機能ガイド一式が含まれています。ガイドを探すには、./references/<lang>-sdk/<filename> を使用してください(例:./references/python-sdk/sandboxes.md、./references/typescript-sdk/snapshots.md)。

ファイル名トピック
sandboxes.mdサンドボックスのライフサイクル — 作成、起動、停止、アーカイブ、削除
process-code-execution.mdコマンドとコードの実行、ステートフルなインタープリター
file-system-operations.mdファイルの読み取り、書き込み、アップロード、ダウンロード
git-operations.mdクローン、コミット、プッシュ、ステータス
snapshots.mdイメージ定義から再利用可能なサンドボックステンプレートを構築
volumes.mdサンドボックス間での永続ストレージ
ssh-access.mdサンドボックスへの SSH 接続
vnc-access.mdデスクトップサンドボックス向けの VNC
computer-use-guide.mdデスクトップの自動化(マウス/キーボード/画面)
declarative-builder.mdImage ビルダーによるカスタムサンドボックスイメージ
log-streaming.mdサンドボックスのログをストリーミング
network-limits.mdネットワークファイアウォールの制御
language-server-protocol.mdIDE のような機能(自動補完、診断)
preview.md公開ポートのプレビュー URL
pty.mdPTY/ターミナルのサポート
regions.md利用可能なリージョン
vpn-connections.mdVPN 接続

プラットフォームリファレンス

ファイル説明
limits.mdリソース制限、レート制限、ティア要件
organizations.mdチーム管理、メンバーの役割
billing.md使用状況の追跡、料金
audit-logs.md監査ログ
linked-accounts.mdGitHub/GitLab アカウントのリンク
web-terminal.mdブラウザーからのターミナルアクセス
webhooks.mdWebhook イベント
mcp.mdMCP 統合
cli.mdCLI コマンドリファレンス

API リファレンス

すべての Daytona エンドポイント(サンドボックス、スナップショット、ボリューム、ツールボックス操作など)の REST API ドキュメント:api/README.md。

コメント