@@ -15,13 +15,26 @@ Want to run on cloud compute? [Launch on Brev](https://brev.nvidia.com/launchabl
1515
1616### Install
1717
18- ** Binary (recommended):**
18+ ** Binary (recommended — requires [ GitHub CLI ] ( https://cli.github.com ) ):**
1919
2020``` bash
21- curl -fsSL https://raw.githubusercontent.com/NVIDIA/OpenShell/main/install.sh | sh
21+ sh -c ' ARCH=$(uname -m); OS=$(uname -s); \
22+ case "${OS}-${ARCH}" in \
23+ Linux-x86_64) ASSET="openshell-x86_64-unknown-linux-musl.tar.gz" ;; \
24+ Linux-aarch64) ASSET="openshell-aarch64-unknown-linux-musl.tar.gz" ;; \
25+ Darwin-arm64) ASSET="openshell-aarch64-apple-darwin.tar.gz" ;; \
26+ *) echo "Unsupported platform: ${OS}-${ARCH}" >&2; exit 1 ;; \
27+ esac; \
28+ gh release download devel --repo NVIDIA/OpenShell --pattern "${ASSET}" -O - \
29+ | tar xz \
30+ && sudo install -m 755 openshell /usr/local/bin/openshell'
2231```
2332
24- The install script auto-detects your platform (Linux x86_64, Linux aarch64, macOS Apple Silicon) and places the ` openshell ` binary in ` /usr/local/bin ` . See the [ releases page] ( https://github.com/NVIDIA/OpenShell/releases ) for manual download options.
33+ Or use the install script from the repository:
34+
35+ ``` bash
36+ ./install.sh
37+ ```
2538
2639** From PyPI (requires [ uv] ( https://docs.astral.sh/uv/ ) ):**
2740
@@ -84,20 +97,20 @@ OpenShell applies defense in depth across four policy domains:
8497| Layer | What it protects | When it applies |
8598| ---------- | --------------------------------------------------- | --------------------------- |
8699| Filesystem | Prevents reads/writes outside allowed paths. | Locked at sandbox creation. |
87- | Network | Blocks unauthorized outbound connections. | Hot-reloadable at runtime. |
88- | Process | Blocks privilege escalation and dangerous syscalls. | Locked at sandbox creation. |
89- | Inference | Reroutes model API calls to controlled backends. | Hot-reloadable at runtime. |
100+ | Network | Blocks unauthorized outbound connections. | Hot-reloadable at runtime. |
101+ | Process | Blocks privilege escalation and dangerous syscalls. | Locked at sandbox creation. |
102+ | Inference | Reroutes model API calls to controlled backends. | Hot-reloadable at runtime. |
90103
91104Policies are declarative YAML files. Static sections (filesystem, process) are locked at creation; dynamic sections (network, inference) can be hot-reloaded on a running sandbox with ` openshell policy set ` .
92105
93106## Supported Agents
94107
95- | Agent | Source | Notes |
96- | ---| ---| ---|
97- | [ Claude Code] ( https://docs.anthropic.com/en/docs/claude-code ) | Built-in | Works out of the box. Requires ` ANTHROPIC_API_KEY ` . |
98- | [ OpenCode] ( https://opencode.ai/ ) | Built-in | Works out of the box. Requires ` OPENAI_API_KEY ` or ` OPENROUTER_API_KEY ` . |
99- | [ Codex] ( https://developers.openai.com/codex ) | Built-in | Works out of the box. Requires ` OPENAI_API_KEY ` . |
100- | [ OpenClaw] ( https://openclaw.ai/ ) | [ Community] ( https://github.com/NVIDIA/OpenShell-Community ) | Launch with ` openshell sandbox create --from openclaw ` . |
108+ | Agent | Source | Notes |
109+ | ------------------------------------------------------------- | ---------------------------------------------------------- | ------------------------------------------------------------------------ |
110+ | [ Claude Code] ( https://docs.anthropic.com/en/docs/claude-code ) | Built-in | Works out of the box. Requires ` ANTHROPIC_API_KEY ` . |
111+ | [ OpenCode] ( https://opencode.ai/ ) | Built-in | Works out of the box. Requires ` OPENAI_API_KEY ` or ` OPENROUTER_API_KEY ` . |
112+ | [ Codex] ( https://developers.openai.com/codex ) | Built-in | Works out of the box. Requires ` OPENAI_API_KEY ` . |
113+ | [ OpenClaw] ( https://openclaw.ai/ ) | [ Community] ( https://github.com/NVIDIA/OpenShell-Community ) | Launch with ` openshell sandbox create --from openclaw ` . |
101114
102115## How It Works
103116
@@ -109,27 +122,27 @@ OpenShell isolates each sandbox in its own container with policy-enforced egress
109122
110123Under the hood, the gateway runs as a [ K3s] ( https://k3s.io/ ) Kubernetes cluster inside Docker — no separate K8s install required.
111124
112- | Component | Role |
113- | ---| ---|
114- | ** Gateway** | Control-plane API that coordinates sandbox lifecycle and acts as the auth boundary. |
115- | ** Sandbox** | Isolated runtime with container supervision and policy-enforced egress routing. |
116- | ** Policy Engine** | Enforces filesystem, network, and process constraints from application layer down to kernel. |
117- | ** Privacy Router** | Privacy-aware LLM routing that keeps sensitive context on sandbox compute. |
125+ | Component | Role |
126+ | ------------------ | -------------------------------------------------------------------------------------------- |
127+ | ** Gateway** | Control-plane API that coordinates sandbox lifecycle and acts as the auth boundary. |
128+ | ** Sandbox** | Isolated runtime with container supervision and policy-enforced egress routing. |
129+ | ** Policy Engine** | Enforces filesystem, network, and process constraints from application layer down to kernel. |
130+ | ** Privacy Router** | Privacy-aware LLM routing that keeps sensitive context on sandbox compute. |
118131
119132## Key Commands
120133
121- | Command | Description |
122- | ---| ---|
123- | ` openshell sandbox create -- <agent> ` | Create a sandbox and launch an agent. |
124- | ` openshell sandbox connect [name] ` | SSH into a running sandbox. |
125- | ` openshell sandbox list ` | List all sandboxes. |
126- | ` openshell sandbox delete <name> ` | Delete a sandbox. |
127- | ` openshell provider create --type claude --from-existing ` | Create a credential provider from env vars. |
128- | ` openshell policy set <name> --policy file.yaml ` | Apply or update a policy on a running sandbox. |
129- | ` openshell policy get <name> ` | Show the active policy. |
130- | ` openshell inference set --provider <p> --model <m> ` | Configure the ` inference.local ` endpoint. |
131- | ` openshell logs [name] --tail ` | Stream sandbox logs. |
132- | ` openshell term ` | Launch the real-time terminal UI for debugging. |
134+ | Command | Description |
135+ | --------------------------------------------------------- | ----------------------------------------------- |
136+ | ` openshell sandbox create -- <agent> ` | Create a sandbox and launch an agent. |
137+ | ` openshell sandbox connect [name] ` | SSH into a running sandbox. |
138+ | ` openshell sandbox list ` | List all sandboxes. |
139+ | ` openshell sandbox delete <name> ` | Delete a sandbox. |
140+ | ` openshell provider create --type claude --from-existing ` | Create a credential provider from env vars. |
141+ | ` openshell policy set <name> --policy file.yaml ` | Apply or update a policy on a running sandbox. |
142+ | ` openshell policy get <name> ` | Show the active policy. |
143+ | ` openshell inference set --provider <p> --model <m> ` | Configure the ` inference.local ` endpoint. |
144+ | ` openshell logs [name] --tail ` | Stream sandbox logs. |
145+ | ` openshell term ` | Launch the real-time terminal UI for debugging. |
133146
134147See the full [ CLI reference] ( https://github.com/NVIDIA/OpenShell/blob/main/docs/reference/cli.md ) for all commands, flags, and environment variables.
135148
0 commit comments