Перейти к содержимому

Куб

Куб

Любой образ контейнера, который просыпается на каждый запрос

Ваш образ — приложение со своим адресом. Его экземпляры просыпаются на запросы, засыпают, когда запросы прекращаются, и продолжают с того места, где остановились.

Читать документацию

Куб в цифрах

на пробуждение экземпляра1
3.5 мс
простоя перед сном, если запросы приходят редко2
0 мс
на откат развёртывания
1 вызов

В три шага

Одни и те же вызовы из командной строки, API, SDK и MCP-сервера.

Перед началом работы

Запишите свой API-ключ в GLAC_API_KEY.

curl -fsSL https://glac.ai/install.sh | sh
export GLAC_API_KEY=ak_...
API=https://api.glac.ai/v1
AUTH="Authorization: Bearer $GLAC_API_KEY"
from glac import Glac
glac = Glac()
import { Glac } from "glac";
const glac = new Glac();
# give your agent the tools (Claude Code here)
claude mcp add glac -e GLAC_API_KEY=ak_... -- npx glac-mcp
  1. Разверните образ

    Версия начинает принимать трафик по собственному адресу, как только будет готова.

    glac deploy ghcr.io/acme/api:1.4 \
      --name api --port 8080
    curl $API/apps -H "$AUTH" --json '{"name": "api",
      "image": "ghcr.io/acme/api:1.4", "port": 8080}'
    app = glac.cube.deploy("ghcr.io/acme/api:1.4",
                           name="api", port=8080)
    const app = await glac.cube.deploy("ghcr.io/acme/api:1.4",
      { name: "api", port: 8080 });
    cube_deploy {"app": "api", "image": "ghcr.io/acme/api:1.4",
                 "port": 8080}
  2. Вызовите его

    Первый запрос будит экземпляр.

    curl https://api-‹project›.glac.run/
    curl https://api-‹project›.glac.run/
    import urllib.request
    print(urllib.request.urlopen(app.url).status)
    console.log((await fetch(app.url)).status);
    # from a sandbox made for the one command
    sandbox_run {"command":
      "curl -s https://api-‹project›.glac.run/"}
  3. Следите за ним

    По строке на каждый запрос: разбудил ли он экземпляр и сколько времени на это ушло.

    glac cube logs api -f
    curl -N "$API/apps/api/logs?follow=true" -H "$AUTH"
    for line in app.logs(follow=True):
        print(line)
    for await (const line of app.logs({ follow: true }))
      console.log(line);
    cube_logs {"app": "api", "kinds": ["requests"]}

‹project› — шесть символов ID вашего проекта. В API Куб называется app.

Возможности

  • Засыпает, когда запросы прекращаются, а к следующему просыпается за 3.5 мс.1

  • Каждое развёртывание — это версия: трафик переходит на неё, как только она готова, и возвращается одним вызовом.

  • Экземпляр на каждый ключ: создаётся первым запросом, со своей памятью и диском.

  • Масштабирование в каждом регионе: экземпляры запускаются по мере поступления запросов — до заданного вами максимума.

  • Ваш собственный домен — сертификат для него мы выпускаем и продлеваем за вас.

  • Ваш Compose-файл превращается в Куб для каждого сервиса, и к каждому можно обратиться по имени.

Читать документацию

Иллюстрации условны

Сравнение

Куб в сравнении с двумя привычными способами запуска сервиса.

Всегда включённый серверКонтейнер с масштабированием до нуляКуб
Первый запрос после затишьяОтвет сразуЖдёт, пока контейнер заново запустится из образаБудит экземпляр за 3.5 мс1
Память и процессы в простоеСохраняютсяТеряютсяСохраняются, пока экземпляр спит: час или всё время жизни экземпляра по ключу
За что вы платите в простоеПолную ценуНичегоНичего за CPU, только за хранимое
Изоляция от другихВиртуальная машинаОбычно общее ядроСобственная microVM

Для чего подходит

  • API и веб-приложения

    CPU оплачивается по миллисекундам работы, а между запросами приложение спит.

    glac deploy ghcr.io/acme/web:2.0 \
      --name web --port 3000
    curl https://web-‹project›.glac.run/
  • Бэкенд на каждого пользователя или агента

    Один экземпляр на ключ, у каждого своя память и свой диск.

    glac.cube.deploy(
      "ghcr.io/acme/agent:3",
      name="agent", port=8080,
      keys={"from": {"header": "User"}})
  • Задания

    Образ, который выполняется до конца и останавливается.

    glac deploy ghcr.io/acme/report:1 \
      --name report --kind job
    glac cube logs report -f

Цены и лимиты

Оплата по использованным ресурсам Куба — как у любого продукта. Все цены и тарифы

Что учитываетсяКакЦена
CPUВремя занятости CPU, с точностью до миллисекунды$0.01 / млн CPU-мс$0.00001 / CPU-секунда$0.036 / CPU-час$26.28 / CPU-месяц
ПамятьУдерживаемая хостом, с точностью до миллисекунды и с шагом 128 MiB$0.00222 / млн GiB-мс$0.00000222 / GiB-секунда$0.008 / GiB-час$5.84 / GiB-месяц
ЗапросыЗа запрос в Куб или через ссылку песочницы$0.30 / млн
Исходящий трафикNA · EUЗа GB трафика из Северной Америки и Европы$0.004 / GB
Исходящий трафикАТРЗа GB трафика из Азиатско-Тихоокеанского региона$0.01 / GB
Хранится во сне3То, что хранят спящие экземпляры, и снимки$0.00000761 / млн GB-мс$0.00000000761 / GB-секунда$0.0000274 / GB-час$0.02 / GB-месяц
Логи3Хранимый вывод Кубов, в исходном объёме$0.00000761 / млн GB-мс$0.00000000761 / GB-секунда$0.0000274 / GB-час$0.02 / GB-месяц

Рассчитать стоимость за месяц

Реальная нагрузка — и сколько стоит месяц её работы на тарифах «Платный» и «Бесплатный».

JSON на входе, JSON на выходе, один-два запроса к базе данных.

Экземпляр активен в среднем 23.8 ч в сутки и ещё 0.21 ч приостановлен в памяти. На каждый запрос учитывается ещё 0.61 мс CPU сверх его собственного: время, когда экземпляр активен между запросами, а также каждая остановка и каждое пробуждение.

Месяц в 30 дней; на аккаунте только эта нагрузка. Источники

Месяц на тарифе «Платный»

$5.00

$0.39 за миллион запросов

  • CPU11 млн CPU-мс$0.11
  • Память90 GiB-ч$0.72
  • Запросы10 млн запросов$3.00
  • Исходящий трафик6 GB$0.02
Потребление по прайс-листу
$3.85
Включено в тариф «Платный»
−$3.85
Плата за тариф «Платный»
$5.00

Превышены лимиты тарифа «Бесплатный» для запросов.

БесплатныйПлатный
Кубына аккаунт10500
Экземпляры одного Кубав каждом регионе, не больше5500
Активных одновременноэкземпляров и песочниц5500
Самый большой экземпляр2 vCPU, 4 GiB8 vCPU, 16 GiB
Переменные и секретына Куб64128
Логи хранятся3 дня30 дней

Изоляция

Виртуальная машина для каждого экземпляра, и всё, что он хранит, зашифровано ключом вашего проекта.

Безопасность
  • Собственная microVM

    MicroVM на Firecracker с собственным ядром, загруженная из вашего образа.

  • Изолированная среда вокруг неё

    Пустой корневой каталог, пользователь без привилегий, собственные лимиты.

  • Доступ через API

    Команды и файлы идут через агент внутри неё, а не через её сеть.

  • Сеть по вашим правилам

    Частная сеть на каждый проект; правила, к каким хостам можно обращаться.

  • Зашифровано вашим ключом

    Диски, память спящих экземпляров, снимки и логи — до того, как они покинут машину.

  • Ключи открывают только то, что в них указано

    API-ключ открывает один проект в пределах своих прав; журнал аудита записывает, что он делает.

Что почитать дальше

Платформа