microsandbox
superradcompany/microsandboxmicrosandbox запускает изолированные microVM за миллисекунды прямо из кода — без серверов и демонов. Поддерживает OCI-образы, Python/TypeScript/Rust SDK, MCP-сервер и Agent Skills. Идеально для AI-агентов, которым нужна собственная безопасная среда выполнения.
Подключение
git clone https://github.com/superradcompany/microsandbox.gitREADME
Microsandbox запускает лёгкие виртуальные машины за миллисекунды из наших SDK. Работает локально на вашем компьютере. Не требует настройки сервера. Нет фонового демона. Всё встроено и работает без root!
- Аппаратная изоляция: изоляция на уровне железа с помощью технологии microVM.
- Мгновенный запуск: среднее время загрузки менее 100 миллисекунд.
- Встраиваемость: запускайте VM прямо из кода. Никакого сервера. Никакого долгоживущего демона.
- Секреты без утечек: неэксплуатируемые секретные ключи, которые никогда не попадают в VM.
- Совместимость с OCI: запускает стандартные образы контейнеров из Docker Hub, GHCR или любого OCI-реестра.
- Долгоживущие сессии: песочницы могут работать в отсоединённом режиме. Отлично подходит для длительных сессий.
- Готово для агентов: ваши агенты могут создавать собственные песочницы с помощью Agent Skills и MCP-сервера.
Быстрый старт
Установка SDK
cargo add microsandbox # 🦀 Rustuv add microsandbox # 🐍 Pythonnpm i microsandbox # 🟦 TypeScript
Установка CLI (опционально)
Запустите microVM одной командой.
npx microsandbox run debianИли установите команду
msbглобально:curl -fsSL https://install.microsandbox.dev | shmsb run debian
Требования: Linux с включённым KVM или macOS с Apple Silicon. Предупреждение: Microsandbox всё ещё находится в стадии бета. Ожидайте ломающих изменений, отсутствующих функций и шероховатостей.
SDK
SDK позволяет создавать и управлять песочницами прямо из вашего приложения. Sandbox::builder("...").create() запускает microVM как дочерний процесс. Никакой инфраструктуры не требуется.
Запуск кода в песочнице
rsuse microsandbox::Sandbox; #[tokio::main] async fn main() -> Result<(), Box<dyn std::error::Error>> { let sandbox = Sandbox::builder("my-sandbox") .image("python") .cpus(1) .memory(512) .create() .await?; let output = sandbox .exec("python", ["-c", "print('Hello from a microVM!'")]) .await?; println!("{}", output.stdout()?); sandbox.stop_and_wait().await?; Ok(()) }pyimport asyncio from microsandbox import Sandbox async def main(): sandbox = await Sandbox.create( "my-sandbox", image="python", cpus=1, memory=512, ) output = await sandbox.exec("python", ["-c", "print('Hello from a microVM!')"]) print(output.stdout_text) await sandbox.stop_and_wait() asyncio.run(main())tsimport { Sandbox } from "microsandbox"; const sandbox = await Sandbox.create({ name: "my-sandbox", image: "python", cpus: 1, memoryMib: 512, }); const output = await sandbox.exec("python", ["-c", "print('Hello from a microVM!')"]); console.log(output.stdout()); await sandbox.stopAndWait();
При первом вызове
create()образ скачивается, если он не кэширован локально — это может занять некоторое время в зависимости от скорости соединения. Последующие запуски используют кэш.