Replies: 1 comment
-
Update: Red Hat Engineer's Setup Gist Confirms Operational Maturity@maxamillion (Adam Miller, Red Hat) — the developer who added Podman rootless support and the Vertex AI provider to OpenShell — published setup instructions for his team: Red Hat: OpenShell + Podman + Fedora/RHEL Vertex AI Anthropic Quickstart This changes several assumptions from the initial evaluation. Key findings1. Fedora/RHEL-native packaging already exists sudo dnf copr enable maxamillion/nvidia-openshell
sudo dnf install openshell-gateway openshellOpenShell is packaged as RPMs in a COPR repo with a systemd user unit for the gateway: systemctl --user start openshell-gateway.serviceThis is operationally more mature than UF's current approach (re-exec with sentinel env var + PID file management at 2. The gist uses 3. End-to-end setup is ~10 commands # Install
sudo dnf install openshell-gateway openshell
# Start gateway as systemd user service
systemctl --user start openshell-gateway.service
# Register local gateway
openshell gateway add https://localhost:17670 --local
# Enable providers v2 (temporary flag)
openshell settings set --global --key providers_v2_enabled --value true --yes
# Create Vertex AI provider from gcloud ADC
openshell provider create --name vertex-local --type google-vertex-ai \
--from-gcloud-adc --config VERTEX_AI_PROJECT_ID="${vertex_project}" \
--config VERTEX_AI_REGION=global
# Configure inference routing
openshell inference set --provider vertex-local --model claude-sonnet-4-6
# Create sandbox
openshell sandbox create --name my-sandbox --provider vertex-local
# Inside sandbox: run Claude Code or OpenCode
ANTHROPIC_BASE_URL="https://inference.local" ANTHROPIC_API_KEY=unused claude --bare
ANTHROPIC_BASE_URL="https://inference.local/v1" ANTHROPIC_API_KEY=unused opencodeNotable details:
Impact on adoption planPhase 1 (evaluation spike) is lower risk than initially assessed. The COPR packaging and systemd integration mean OpenShell is already deployed in a Red Hat engineering context, not just as a standalone alpha project. The integration layer is thinner than expected. UF wouldn't need to reimplement OpenShell's credential model or network policy. The integration would primarily be:
macOS remains the key unknown. The gist is Fedora/RHEL-specific. UF's primary development environment is macOS. The Phase 1 spike should prioritize validating macOS + rootless Podman + OpenShell, since that's where UF's existing workarounds live (virtiofs UID mapping probes, |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
Summary
NVIDIA OpenShell (v0.0.55, Apache 2.0, 6.7k stars, 61 contributors) is an open-source sandbox runtime for AI agents built in Rust. It provides containerized isolation with a centralized gateway, declarative YAML network/filesystem/process policies, and an inference routing layer. It supports rootless Podman and — as of v0.0.55 — Google Vertex AI as a first-class provider (including the
globalregion that UF's gateway currently rejects).The primary motivation for this evaluation is network isolation: UF's current sandbox has zero network policy enforcement — containers get full, unrestricted network access. OpenShell's L7 policy engine is its defining feature.
Feature Comparison
isolatedordirectmodesglobalregion; shells out togcloudglobal/us/eu/regional; native OAuth2 refreshKey Advantages of OpenShell
1. Network Policy Enforcement (primary motivation)
OpenShell's L7 proxy intercepts every outbound connection and enforces allow/deny rules by host, HTTP method, and URL path. Hot-reloadable at runtime. Example:
UF containers currently have unrestricted network access. Building an equivalent L7 proxy with TLS interception, credential placeholder resolution, and seccomp enforcement in Go would be a multi-month effort.
2. Credential Isolation Model
OpenShell never exposes real credentials to the agent process. The agent sees opaque placeholder tokens; the proxy resolves them at request time. If resolution fails, the request is rejected (fail-closed) rather than forwarding a raw placeholder. UF forwards raw API keys into the container environment for non-Anthropic providers.
3. Vertex AI Completeness
OpenShell supports
global,us,eu, and regional Vertex endpoints with this hostname logic:globalaiplatform.googleapis.comusoreuaiplatform.{region}.rep.googleapis.com{region}-aiplatform.googleapis.comIt routes Claude through
rawPredictand Gemini/others through the OpenAI-compatible endpoint. Nogcloudsubprocess dependency — manages OAuth2 refresh natively.UF's gateway rejects
global(seeinternal/gateway/provider.go:203-212), only supports Claude (not Gemini), and depends ongcloudbeing installed.4. Multi-Runtime Support
Docker, Podman, MicroVM, Kubernetes vs. Podman-only.
What UF Sandbox Does Better
uf sandbox startauto-detects providers, auto-starts gateway, integrates withufCLIProposed Adoption Path
Phase 1: Evaluation Spike (1-2 days)
globalregionPhase 2: Integration Design (spec)
backend: openshellin.uf/config.yamluf sandboxcommands toopenshell sandboxcommandsPhase 3: Implementation
OpenShellBackendimplementing theBackendinterface ininternal/sandbox/openshellbinaryPhase 4: Gateway Retirement
internal/gateway/gcloudsubprocess dependencyOpen Questions
--uidmapprobe indetect.go).curl | sh. Should UF bundle it, or require it as a prerequisite (like Podman/DevPod)?proxy.golang.org,sum.golang.org,github.com,api.github.com)References
internal/gateway/(current Vertex proxy implementation)internal/sandbox/(current Podman/DevPod backends)internal/gateway/provider.go:203-212Beta Was this translation helpful? Give feedback.
All reactions