Skip to content

PROD-250 docs: sandbox OpenShell microVM provider (additional) - #162

Closed
salamisandwich77 wants to merge 11 commits into
docs/constrain-temporal-python-integrationfrom
docs/sandbox-openshell-provider
Closed

PROD-250 docs: sandbox OpenShell microVM provider (additional)#162
salamisandwich77 wants to merge 11 commits into
docs/constrain-temporal-python-integrationfrom
docs/sandbox-openshell-provider

Conversation

@salamisandwich77

Copy link
Copy Markdown
Contributor

OpenShell Provider (VM)

Documentation for the optional microVM sandbox provider.

openshell runs the admitted command inside a libkrun microVM, giving a guest-kernel boundary rather than the host-kernel isolation the default native provider applies. It uses Hypervisor.framework on macOS and KVM on Linux.

The page covers supported platforms and the assets published for each, the prepared VM cache that keeps warm-up to a cache hit, the OCI registry mode for development, registry CA trust per platform, and the security properties and limits.

Provider selection is explicit and fails closed; there is no fallback to native.

Stacked on #157. The base sandbox section must land first, since this page links to Provisioning, Native Provider, and Concept.


Replaces #160. That pull request was closed as merged on 2026-08-26 by an accidental git pull that pulled this branch into its own base branch. The merge commit was reverted, so none of this work reached the base branch. GitHub cannot reopen a pull request once it records it as merged, so this is a new one against the same base with the same branch.

Adds the OpenShell provider page on top of the base sandbox section: the
supported platforms and their published assets, the prepared VM cache, the
OCI registry mode for development, registry CA trust on each platform, and
the security properties and limitations.

Restores the sidebar entry and the four cross-references from the native
provider, provisioning, configuration, and sandbox-execution pages.

The page states what this provider costs relative to the default: it needs a
prepared image cache and a hypervisor, and OpenBox publishes a complete asset
set only for Apple Silicon macOS and x86_64 glibc Linux.
configuration.md conflicted: the base corrected the provision command and
this branch added the OpenShell cross-reference. Both are kept.
The flag did nothing and has now been removed from the launcher, so a
command carrying it fails rather than being ignored. The page also
described it as accepting defaults and not bypassing the KVM, signing, and
CA-trust checks; provisioning never prompts, and those checks stand on
their own.
Four things stopped the page working as written.

The published SDK installs without error and does not contain
`openbox.sandbox`, so the example died at an import in step 4 with nothing
on the page explaining it. Step 3 now states that plainly and gives the
editable install that does work.

`temporal server start-dev` was a clause inside a sentence about other
requirements. It is a hard prerequisite for step 4, so it is a command
block of its own.

`uv init` writes a `main.py` that `uv run python .` ignores, which is
confusing next to an example made of two other files. The page says to
remove it.

Troubleshooting named an error the example cannot produce: it reads the
boundary values from the environment directly, so a missing one raises
`KeyError`, not the SDK's message. That entry is corrected, and entries for
the missing module and for a port still held by an earlier service are
added.
The page carried a caution that the published SDK lacks openbox.sandbox and
told the reader to install from a local checkout. The sandbox work is
treated as merged, so the documented install is the plain one.
Configuration listed seven environment variables and said parameters
override them. The package reads the process environment once, in
sandbox/deployment.py, and that read has nothing to do with plugin
configuration. Setting OPENBOX_GOVERNANCE_TIMEOUT, OPENBOX_ENABLED,
OPENBOX_GOVERNANCE_POLICY, OPENBOX_SEND_START_EVENT or
OPENBOX_SEND_ACTIVITY_START_EVENT changed nothing.

The plugin takes constructor parameters. OPENBOX_URL and OPENBOX_API_KEY
are conventional names that your own code reads and passes in, which is why
the example does exactly that.

The walkthrough's .env carried four of the inert variables, including
OPENBOX_GOVERNANCE_MAX_RETRIES, which is not a parameter either.

Also relabels a constructor signature in the SDK reference as text, since
it is an illustration rather than code that parses.
Saying the variables have no effect answered half the question. The SDK's
own README documents OPENBOX_GOVERNANCE_TIMEOUT and
OPENBOX_GOVERNANCE_POLICY as names an application reads and passes in, the
same way the examples already treat OPENBOX_URL and OPENBOX_API_KEY. The
page now shows that pattern.
@vercel

vercel Bot commented Aug 27, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
openbox-document Ready Ready Preview Aug 27, 2026 9:27am

Request Review

@salamisandwich77

Copy link
Copy Markdown
Contributor Author

Reopened on a fresh branch (docs/sandbox-openshell-provider-v2) so the stack tool sees one PR per branch. The old branch stays in merged PR #160.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant