Sakhanda Wire
NVDA MSFT GOOGL META AMZN
← До новин

Найкращі пісочниці для агентів у 2026 році: холодний старт за пікового навантаження, похвилинна тарифікація та мережеві політики в E2B, Daytona, Modal, Cloudflare і Vercel

Кожному агенту, який пише код, потрібне місце для його запуску. Це «місце» тепер є окремою категорією продуктів, у якій щонайменше дюжина постачальників, чотири несумісні моделі оплати та маркетингові сторінки, де наводяться показники холодного старту, виміряні за умов, які ніхто не публікує.

Це порівняння приводить одиниці вимірювання до спільного знаменника. Воно охоплює п’ять платформ, які найчастіше потрапляють до короткого списку команд, — E2B, Daytona, Modal Sandboxes, Cloudflare Sandbox SDK і Vercel Sandbox, — а також Runloop, Fly.io Sprites і Northflank там, де вони змінюють відповідь.

Чотири запитання, які насправді визначають вибір

Таблиці функцій для цієї категорії здебільшого є інформаційним шумом. Чотири властивості змінюють архітектуру, а все інше — питання вподобань:

  1. Холодний старт за умов конкурентного запуску: агентський цикл, який створює пісочницю для кожного виклику інструмента, сплачує цю «ціну» тисячі разів на день.
  2. Збереження файлової системи між ходами: чи бачить другий хід результат pip install із першого, чи агент щоразу відбудовує свій світ?
  3. Політика вихідного трафіку: чи може пісочниця звертатися до інтернету, чи можна це вимкнути та чи можна змінити рішення посеред сесії?
  4. Оплата простою: агенти більшу частину часу за годинником очікують на модель. Хтось платить за ці секунди.

1. Холодний старт: що насправді показують цифри

Заяви постачальників не можна безпосередньо порівнювати. Сторінка тарифів Daytona рекламує створення пісочниці менш ніж за 90 мс. Для E2B часто наводять показник близько 150 мс. Modal рекламує холодний старт менш ніж за секунду для попередньо кешованих контейнерів. Жоден із цих показників не уточнює конкурентність, регіон, розмір образу або те, чи зупиняється відлік у момент підтвердження API, чи після виконання першої команди.

Найкорисніший загальнодоступний набір даних — таблиця лідерів ComputeSDK для пісочниць, яка має відкритий вихідний код і запускається за розкладом. Вона вимірює час до інтерактивності (TTI): час від create() до першої успішної команди всередині пісочниці, 100 ітерацій для кожного постачальника, запущених одночасно одним пакетом із хоста на 4 vCPU у Північній Вірджинії.

Результати запуску від 21 серпня 2026 року:

ПостачальникМедіанний TTIP95P99Рівень успішності
Vercel Sandbox0.67 с1.04 с1.12 с100%
Modal0.88 с1.00 с1.08 с100%
Runloop0.89 с3.27 с3.50 с100%
E2B1.61 с1.77 с1.81 с100%
Cloudflare5.06 с6.04 с6.48 с100%
Daytona0.27 с0.43 с0.44 с37%

У цій таблиці важливіші за рейтинг три речі.

  • Пакетний запуск — не те саме, що послідовний: найкраща опублікована медіана Daytona є реальною, а під час попереднього запуску на сторінці постачальника платформа створювала пісочниці з медіаною 0.10 с, коли їх запускали по одній. Під час серпневого пакетного запуску вона показала найшвидшу медіану серед усіх і завершила 37 зі 100 спроб. Медіана, якої ви досягаєте лише в третині викликів, — це не показник затримки, а показник пропускної здатності. Логіка повторних спроб не є необов’язковою на жодній із цих платформ.
  • Проєктувати потрібно з урахуванням хвостової затримки: медіани Runloop і Modal відрізняються на 10 мс. P95 Runloop у 3,3 раза більший за P95 Modal. Якщо бюджет UX вашого агента становить одну секунду, медіана майже нічого вам не говорить.
  • Cloudflare вимірює інший продукт: Sandbox SDK працює на базі Cloudflare Containers, який планує екземпляр контейнера та завантажує образ. Архітектурно це важча операція, ніж відновлення попередньо прогрітої Firecracker VM, і медіани на рівні 5 с це відображають. У власному дописі про загальну доступність Cloudflare відверто описує масштаб проблеми: запуск пісочниці, клонування репозиторію та виконання npm install займають близько 30 секунд, тоді як відновлення того самого середовища з резервної копії — близько двох.

Як відтворити це самостійно

Варто вимірювати завдання, яке виконує ваш агент, а не echo hello. Корисний тестовий стенд виконує всюди однакову роботу: встановлює pandas, читає CSV, будує графік і повертає PNG. Вимірюйте окремо чотири контрольні точки.

Копіювати кодСкопійованоВикористати інший браузер
# checkpoints: t_create -> t_ready -> t_deps -> t_result
# run 100 iterations sequential, then 100 concurrent, report median/P95/P99
import time, statistics

def one_run(provider):
    t0 = time.perf_counter()
    sbx = provider.create()              # API acknowledged
    t1 = time.perf_counter()
    sbx.exec("python -c 'print(1)'")     # first command returns: TTI
    t2 = time.perf_counter()
    sbx.exec("pip install pandas matplotlib")
    t3 = time.perf_counter()
    sbx.exec("python /work/plot.py")     # writes /work/out.png
    png = sbx.read_file("/work/out.png")
    t4 = time.perf_counter()
    sbx.kill()
    return dict(create=t1-t0, tti=t2-t0, deps=t3-t2, task=t4-t3, bytes=len(png))

Звітуйте про tti і task окремо. Постачальники оптимізують перший показник, а читачів цікавить другий. Зафіксуйте регіон і образ та опублікуйте як послідовну, так і конкурентну серії, адже вони відповідають на різні запитання.

2. Ціни за секунду, нормалізовані

Опубліковані тарифи станом на 27 серпня 2026 року, перераховані до спільної одиниці. Modal встановлює ціни за фізичне ядро, яке визначає як 2 vCPU, тому для порівняння наведено еквівалент у vCPU.

ПлатформаCPUПам’ятьОснова тарифікаціїМінімальний план
E2B$0.0504 / vCPU-год$0.0162 / GiB-годЧас за годинником, щосекундиБезплатний Hobby; Pro за $150/міс.
Daytona$0.0504 / vCPU-год$0.0162 / GiB-годЧас за годинником, щосекундиБез мінімуму; кредит $200
Modal Sandbox$0.1419 / ядро-год (~$0.0710 / vCPU-год)$0.0240 / GiB-годmax(request, actual), щосекундиБезплатний Starter; Team за $250/міс.
Vercel Sandbox$0.128 / vCPU-год лише активний CPU$0.0212 / GB-год виділеної пам’ятіРоздільна: активний CPU, пам’ять — за часомЛіміт Hobby; кредит Pro
Cloudflare Sandbox$0.072 / vCPU-год лише активний CPU$0.009 / GiB-год виділеної пам’ятіАктивний CPU + виділені пам’ять/дискWorkers Paid за $5/міс.
Fly.io Sprites$0.07 / CPU-год$0.04375 / GB-годЛише активне використання; засинає під час простоюРівні підписки
Runloop$0.108 / CPU-год$0.0252 / GB-годСтан роботи; призупинений — лише сховищеБезплатний Basic; Pro за $250/міс.
Northflank$0.01667 / vCPU-год$0.00833 / GB-годВиділені ресурси, щосекундиБезплатний рівень Sandbox

Два примітки, у яких люди часто помиляються.

  • Рівень пісочниць Modal приблизно утричі дорожчий за стандартний тариф Function ($0.00003942 проти $0.0000131 за core-секунду), а вибір регіону додає ще 1,5–1,75 раза. Ціна пісочниці — не основний тариф Modal на обчислення.
  • Тарифи Daytona на GPU часто відтворюють як $3,95/год за H100. На її актуальній сторінці тарифів вказано H100 за запитом за $2,27/год, а H200 — за $2,61/год. Сторонні порівняльні таблиці в цій категорії застарівають менш ніж за квартал.

3. Вартість 1 000 виконань

Тарифи — це не витрати. Наведена нижче модель фіксує робоче навантаження та пропускає його через кожну тарифну сітку.

Припущення: пісочниця на 2 vCPU / 4 GiB, 1 000 виконань, без урахування мінімального платежу за планом, без вихідного трафіку, стандартний регіон (Vercel iad1, Cloudflare standard-3 на 2 vCPU / 8 GiB / 16 GB диска, оскільки розміри екземплярів фіксовані).

Сценарій A: короткий пакетний запуск — 90 с роботи, 50% середнього завантаження CPU

ПлатформаВартість / 1 000Складова
Northflank$1.67$0.83 CPU + $0.83 пам’ять
Cloudflare$3.70$1.80 CPU + $1.80 пам’ять + $0.10 диск
E2B / Daytona$4.14$2.52 CPU + $1.62 пам’ять
Vercel$5.32$3.20 активний CPU + $2.12 пам’ять
Modal$5.95$3.55 CPU + $2.40 пам’ять
Fly Sprites$7.88$3.50 CPU + $4.38 пам’ять
Runloop$7.92$5.40 CPU + $2.52 пам’ять

Сценарій B: переважно простій — 10 хв роботи, 5% середнього завантаження CPU

Саме так виглядає реальний агентський цикл. Пісочниця відкрита, модель думає, нічого не виконується.

ПлатформаВартість / 1 000Зміна порівняно з A
Northflank$11.11у 6,7 раза
Cloudflare$13.87у 3,7 раза
Vercel$16.27у 3,1 раза
E2B / Daytona$27.60у 6,7 раза
Modal$39.66у 6,7 раза
Fly Sprites (залишена активною)$52.50у 6,7 раза
Runloop (залишена запущеною)$52.80у 6,7 раза

Vercel переходить із четвертого за дешевизною на третє місце, а її рядок CPU зменшується з $3.20 до $2.13, тоді як у всіх інших показники масштабуються лінійно. Рядок активного CPU Cloudflare знижується до $1.20. У цьому полягає весь аргумент на користь тарифікації за активним CPU, і для цього робочого навантаження це дає приблизно дворазову різницю.

Сценарій B із призупиненням

Платформи, які програють у сценарії B, можуть відігратися, якщо ваша оркестрація призупиняє їх між ходами замість того, щоб тримати середовище відкритим. Те саме робоче навантаження, 30 с активності на виконання:

ПлатформаВартість / 1 000Механізм
E2B (автопауза)~$2.16Пауза коштує ~4 с на GiB оперативної пам’яті, відновлення — ~1 с (документація)
Fly Sprites$2.62Монітор простою присипляє Sprite за кілька секунд
Runloop$2.64Призупинення зупиняє оплату обчислень; сховище оплачується й надалі

Показник E2B включає приблизно 17 с накладних витрат на паузу та відновлення для пісочниці обсягом 4 GiB. Ці накладні витрати є вирішальною змінною: призупинення економічно виправдане лише тоді, коли проміжок між ходами суттєво довший за сам процес призупинення.

Детектор простою Fly чітко визначає, що вважається активністю: поточний HTTP- або API-запит, виведення до stdout сесії, відкрите TCP-з’єднання або активне завдання (sprites.dev). Агент, який утримує з’єднання відкритим під час очікування, — це агент, за якого виставляють рахунок. Перенаправлення виведення у файл не вважається активністю, і це справді дає простір для оптимізації.

4. Збереження файлової системи між ходами

Саме тут платформи найбільше відрізняються, і саме тут неправильний вибір проявляється як повторне створення node_modules на кожному ході.

ПлатформаТипова поведінка під час зупинки/простоюСтан пам’ятіМеханізм
E2BonTimeout за замовчуванням має значення killПауза зберігає RAM і запущені процесиpause() / connect(), призупинені середовища зберігаються безстроково
DaytonaЗберігається за замовчуванням; автозупинка через 15 хв (контейнери), автопауза через 60 хв (VM)Лише пісочниці-VM через pause/resumeЗупинка, архівування, пауза, форк, томи
ModalЗавершується після timeout (за замовчуванням 5 хв, максимум 24 год.)Знімки пам’яті, термін дії 7 днівЗнімки файлової системи є образами, типовий TTL — 30 днів
CloudflareЗасинає через 10 хв; диск скидається до образуНіcreateBackup() / restoreBackup(), монтування R2, знімки поступово впроваджуються
VercelПостійні пісочниці створюють знімок файлової системи під час зупинкиНіЗнімки, типовий термін дії 30 днів, $0.08/GB-місяць
RunloopПризупинення зберігає станТак, через suspend/resumeПризупинення/відновлення та розгалуження знімків; лише план Pro
Fly SpritesКоренева файлова система обсягом 100 GB зберігається безстроковоКонтрольна точка/відновленняДиск на основі об’єктного сховища, без образу контейнера

Три деталі, які варто запам’ятати:

  • Типові налаштування E2B знищують вашу роботу: onTimeout має значення kill, якщо під час створення не встановити lifecycle: { onTimeout: 'pause' }. Знищений стан є остаточним, а документація не описує надсилання сигналу завершення роботи перед припиненням. Вважайте незбережену роботу втраченою.
  • Диск Cloudflare є ефемерним після сну: документація контейнерів прямо зазначає, що екземпляр, який прокинувся після сну, перезапускається зі свіжим диском з образу. Резервне копіювання та відновлення до R2 вже працюють; автоматичний знімок диска persistAcrossSessions, анонсований під час загальної доступності, на момент написання статті все ще поступово впроваджувався.
  • Daytona розділяє збереження за класом пісочниці: контейнерні пісочниці зберігають файлову систему між зупинкою та запуском, але не підтримують паузу, тому пам’ять щоразу очищується. Пісочниці на Linux VM підтримують обидві функції. GPU-пісочниці є ефемерними та видаляються під час зупинки; результати потрібно записувати до тому.

5. Політика вихідного трафіку

Кожна платформа в цьому порівнянні тепер може запускати пісочницю без доступу до інтернету. Відмінності полягають у пріоритетах правил, деталізації та можливості змінювати політику без перезапуску.

ПлатформаТипове значенняПовне блокуванняСписок дозволенихЗміна під час роботи
E2BВихідний трафік відкритийallowInternetAccess: falseДомени, IP, CIDR; шаблониТак, updateNetwork() замінює всю політику
DaytonaЗалежить від рівняnetworkBlockAlldomainAllowList (макс. 20), networkAllowList (10 CIDR, лише IPv4)Так, лише рівні 3/4
ModalВихідний трафік відкритий, вхідний відсутнійblock_network=Trueoutbound_cidr_allowlist, outbound_domain_allowlist (бета)Альфа; лише якщо списки дозволених задано під час створення
CloudflareВихідний трафік відкритийenableInternet = falseallowedHosts / deniedHosts, шаблони globТак, обробники та правила для хостів застосовуються в реальному часі
Vercelallow-alldeny-all, включно з DNSДомени через SNI, а також резервний варіант IP/CIDRТак, без перезапуску
RunloopМережеві політики для кожного devboxТакТакДокументовано для кожного devbox

Пастка пріоритетів

E2B і Vercel розв’язують конфлікти у протилежних напрямках. В E2B правила дозволу мають пріоритет над правилами заборони: IP-адреса, яка є в обох списках, дозволена. У Vercel Sandbox заборонені діапазони мають пріоритет над дозволеними. Політика, перенесена з однієї платформи на іншу без переписування, не матиме того самого значення.

Пастка режиму відмови

E2B документує, що заблоковані TCP-з’єднання можуть виглядати успішними зсередини пісочниці. Брандмауер приймає з’єднання, перш ніж вирішити, чи дозволено призначення, тому сокет відкривається, але пакети не надходять. Перевіряйте вихідний трафік за відповіддю на рівні застосунку — статусом HTTP або рукостисканням TLS, — а не за успішним connect(). Будь-який набір тестів, який перевіряє «заблоковану мережу» через помилку з’єднання, пройде для незаблокованої пісочниці.

Справжня відмінність — ін’єкція облікових даних

Блокування вихідного трафіку — базова функція. А ось можливість для пісочниці виконати автентифікований виклик, ніколи не зберігаючи облікові дані, — ні.

Cloudflare запускає вихідні обробники у середовищі Workers, за межами пісочниці, із доступом до прив’язок Workers. Пісочниця надсилає звичайний запит, обробник додає секрет, а ctx.containerId обмежує облікові дані окремим екземпляром (документація). Vercel передає облікові дані під час вихідного запиту за допомогою зіставників, обмежених шляхом, методом, рядком запиту або заголовками, і зазначає, що брандмауер працює на хості за межами мікроVM, де код пісочниці не може його вимкнути (Vercel). E2B постачає трансформації запитів для кожного хоста в публічній бета-версії, які додають заголовки на проксі вихідного трафіку, зокрема токени ідентичності робочого навантаження, яких пісочниця ніколи не бачить. Runloop пропонує Credential Gateway з ін’єкцією непрозорих токенів.

Для агентів, які обробляють ненадійні вхідні дані, ця конструкція важливіша за холодний старт. Агент, якому через ін’єкцію в запиті дістався токен GitHub у середовищі, — це зовсім інцидент іншого масштабу, ніж агент, який може звертатися до GitHub лише через проксі, що зберігає токен.

6. Ізоляція, обмеження та дрібний шрифт

ПлатформаІзоляціяМаксимальна сесіяКонкурентністьGPU у пісочниціВласний хостинг / BYOC
E2BМікроVM Firecracker1 год. Hobby, 24 год. Pro; скидається після паузи20 Hobby, 100 Pro, до 1 100Нірепозиторій інфраструктури Apache-2.0, Terraform + Nomad + Consul
DaytonaКонтейнери, а також класи VM і WindowsНалаштовуваний, TTL за часом за бажаннямЗалежить від рівняТак (ефемерний)BYOC, корпоративний рівень
ModalgVisor5 хв. за замовчуванням, максимум 24 год.100 Starter, 5 000 TeamТак, повна тарифна сіткаНі
CloudflareКонтейнери на WorkersЗасинає через 10 хв. простою, доступний keepAlive15 000 lite, 1 000+ standard-2НіНі
VercelМікроVM Firecracker45 хв. Hobby, 24 год. Pro10 Hobby, 10 000 ProНіAWS BYOC у приватній бета-версії
RunloopМікроVMПризупинення/відновленняПродемонстровано 10 000НіРозгортання у VPC
Fly SpritesМікроVM FirecrackerПостійнаРівні підпискиНіНі
NorthflankМікроVM (Kata, Firecracker, gVisor)Постійна або ефемернаНа рівні платформиТакСамообслуговування BYOC

7. Як вибрати

  • Обирайте Vercel Sandbox, якщо ваш агент більше очікує на моделі, ніж виконує обчислення, і ви хочете отримати найнижчий виміряний холодний старт під час пакетного запуску серед представлених платформ. Тарифікація за активним CPU дає приблизно дворазову перевагу в циклах із переважанням простою, брандмауер вихідного трафіку з брокеруванням облікових даних тепер доступний на всіх планах, а медіана 0,67 с із P99 1,12 с стала найстабільнішим розподілом у серпневому запуску.
  • Обирайте E2B, якщо вам потрібна ізоляція ядра для кожної сесії під час виконання ворожого коду, збереження стану пам’яті між ходами або можливість власного хостингу. Встановіть onTimeout: 'pause' у перший же день. Будьте готові до мінімальної вартості плану Pro у $150/міс., щойно перевищите 20 одночасних пісочниць або сесії тривалістю понад 1 годину.
  • Обирайте Daytona, якщо збереження стану є суттю вашого продукту і ви можете прийняти нестабільність пропускної здатності. Життєвий цикл зупинки/архівування/паузи/форка тут найрозвиненіший у категорії, форкування активної VM зі збереженням пам’яті не має повноцінного аналога в інших платформах, а тариф на обчислення відповідає E2B без мінімальної плати за підписку.
  • Обирайте Modal, якщо будь-яка частина роботи агента використовує GPU. Це єдина представлена тут платформа з повною тарифною сіткою GPU безпосередньо в пісочниці — від T4 до B300. Перед рішенням врахуйте потрійний множник для пісочниці та регіональні множники.
  • Обирайте Cloudflare Sandbox, якщо ваш застосунок уже працює на Workers, а модель безпеки вихідного трафіку важливіша за холодний старт. Програмовані обробники вихідного трафіку, що працюють за межами пісочниці та мають доступ до прив’язок, справді вирізняють платформу. П’ятисекундні медіани пакетного запуску — ні, тому тримайте пісочниці відкритими протягом сесії, а не створюйте одну для кожного виклику інструмента, і плануйте роботу з диском, який скидається після сну.
  • Обирайте Runloop, якщо ви створюєте агента для програмування і вам потрібне оцінювання на кшталт SWE-Bench на тій самій платформі. Зверніть увагу, що призупинення/відновлення — функція, яка виправляє економіку простою, — доступна лише в плані Pro за $250/міс.
  • Обирайте Fly Sprites, якщо вам потрібен постійний комп’ютер для кожного користувача, а не одноразовий для кожного виклику, і Northflank, якщо вам потрібні найнижчий опублікований тариф, підтримка GPU та самообслуговування BYOC на одній платформі.

Ключові висновки

  • Виміряний холодний старт під час пакетного запуску відрізняється між постачальниками в 7 разів: Vercel — 0,67 с, Modal — 0,88 с, E2B — 1,61 с, Cloudflare — 5,06 с.
  • Заяви постачальників про «менш ніж 90 мс» і «~150 мс» описують послідовне створення, а не конкурентні пакетні запуски, які насправді генерують агенти.
  • Модель оплати важливіша за рекламний тариф: найдешевший постачальник змінюється залежно від того, як довго ваша пісочниця простоює.
  • Лише Vercel і Cloudflare тарифікують CPU за активним використанням; E2B, Daytona, Modal і Runloop стягують плату за час роботи середовища.
  • Усі представлені тут платформи тепер можуть за замовчуванням забороняти вихідний трафік, але пріоритети дозволів/заборон і поведінка TCP під час відмови відрізняються так, що це руйнує звичні припущення.

Джерела: тарифи E2B, збереження стану E2B, доступ E2B до інтернету, тарифи Daytona, збереження стану Daytona, мережеві обмеження Daytona, тарифікація Daytona, тарифи Modal, мережева взаємодія пісочниці Modal, ресурси пісочниці Modal, знімки пісочниці Modal, тарифи Cloudflare Containers, вихідний трафік Cloudflare, загальна доступність Cloudflare Sandboxes, тарифи Vercel Sandbox, брандмауер Vercel Sandbox, тарифи Runloop, Sprites та тарифи Northflank

Перекладено автоматично з англійської. Оригінал статті — за посиланням нижче.

Вперше опубліковано виданням MarkTechPost

Читати оригінал на MarkTechPost ↗

Текст і зображення належать MarkTechPost і наводяться тут із зазначенням авторства та посиланням на оригінальну публікацію.

← До новин

Ще новини

Усі останні новини