Add Microsandbox sandbox blueprint#427
Closed
Hor1zonZzz wants to merge 1 commit into
Closed
Conversation
Microsandbox (microsandbox.dev) boots real hardware-isolated microVMs from any OCI image through a self-hosted, no-API-key Node SDK — a different tradeoff than the existing hosted providers (Daytona, E2B, Modal). Add it as a first-class `flue add sandbox microsandbox` blueprint alongside them. The `SandboxApi` implementation was verified against the actual `sdk/node-ts` source in superradcompany/microsandbox rather than just its docs: filesystem ops map straight onto `sandbox.fs()` with no buffer conversion needed, `exec()` runs through `sh -c` via `execStreamWith()` so `timeoutMs` forwards to the native `.timeout()` option as a direct millisecond match, and `AbortSignal` cancellation uses the streaming handle's `kill()` for true mid-flight cancellation rather than a `Promise.race` fake. Also wires it into the ecosystem catalog, docs navigation, and a new ecosystem/sandboxes page, and regenerates the `flue docs` catalog embedded in the Flue skill via `scripts/prepare-publish.mjs`. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
|
Thanks for the contribution! We're closing this PR and moving the conversation to the existing thread: #417 We've moved to a model where bugs and feature proposals are discussed in issues/discussions before code review, so the community can help prioritize and shape the work. Your branch is linked from the new thread so the implementation isn't lost — please join us there to continue the conversation. — astrobot 🤖 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Add Microsandbox as a supported sandbox provider blueprint (
flue add sandbox microsandbox), following the same format as the existing sandbox blueprints (Daytona, E2B, boxd, Mirage, ...).Why
Microsandbox boots real hardware-isolated microVMs (a guest kernel, not container namespaces) from any OCI image via a self-hosted TypeScript SDK with no API key and no server to run — the
microsandboxnpm package embeds the runtime through a native addon. That's a meaningfully different tradeoff from the existing hosted sandbox providers (Daytona, E2B, Modal): no account, no network dependency, fully local/self-hosted, sub-second boot.What this adds
blueprints/sandbox--microsandbox.md— theSandboxApiadapter implementation guide, in the same format as the other sandbox blueprintsapps/ecosystem-catalog.ts/apps/docs/src/lib/docs-navigation.ts/apps/docs/src/content/docs/ecosystem/sandboxes/microsandbox.md— ecosystem listing + docs pageskills/flue/SKILL.mddocs catalogImplementation notes
The
SandboxApiimplementation was checked against the actualsdk/node-tssource insuperradcompany/microsandbox(not just its docs), so a few details are worth calling out:sandbox.fs()—read()/write()already accept/returnUint8Array | string, so no buffer conversion is needed, unlike Daytona/E2B.mkdir/rmonly support single-level operations, so recursive mkdir falls back to a shell command andrmrejects unsupportedrecursive/forcewithSandboxOperationUnsupportedError, matching the contract.exec()runs throughsh -c '<command>'viaexecStreamWith(), socwd/env/timeoutMsall forward through the nativeExecOptionsBuilder—timeoutMsmaps directly to.timeout(ms)with no unit conversion needed.AbortSignalgets true mid-flight cancellation via the streaming handle'skill(), not aPromise.racefake.ExecTimeoutErroris converted to an exit-code-124 result, matching the convention documented for other adapters.Testing
pnpm --dir packages/cli run prebuildregenerates the blueprint index cleanly (39 blueprints)flue add sandbox microsandbox, themsbalias, andflue update sandbox microsandboxall return the expected guide viaFLUE_REGISTRY_URLpointed at the local serverpnpm --dir apps/docs run check:types(astro check): 0 errorspackages/clitest suite: 93/93node --test+ 83/83vitestpassing, including the SKILL.md catalog sync testbiome check/prettierclean on all touched files🤖 Generated with Claude Code