---
title: "Hope isn't security: the five parts of an enterprise agent"
description: At GTC Berlin, Jensen Huang split an AI agent into five parts: the model, the harness, the sandbox, your company's knowledge and your tools. His advice to companies getting ready for agents starts with the sandbox, because today the only thing stopping an agent is asking it nicely. Notes on OpenShell, Sentry, the knowledge foundation, and where my own agents stand.
date: 2026-10-23
tags: AI agents, agent security, NVIDIA, OpenShell, enterprise AI
---

At GTC Berlin on October 21, Jensen Huang took an AI agent apart into five pieces: the model, the harness, the sandbox the harness runs in, your company's knowledge and your tools. His advice to every company getting ready for agents starts with the sandbox, not the model. Today the only thing between an agent and your SSH keys is a prompt asking it nicely. NVIDIA's answer, OpenShell, moves the rules outside the agent, where a policy checks every file, system call and network connection.

The agent part of the [keynote](https://www.youtube.com/watch?v=PvFjbPYEOZI&t=2502s) runs from about minute 41 to minute 66. It's the clearest checklist I've seen for what a company needs before agents touch its systems. It's also a vendor keynote, so I flag the claims that came without a number. I run a fleet of OpenClaw agents on a Mac mini, and at the end I hold my own setup against the list.

## An agent is five parts, and only one is the model

Jensen opened with the shift of the year. Agents think, reason, iterate and use tools, and that burns an enormous amount of tokens: token consumption, in his words, "has gone through the roof", and GPU demand with it. He credited OpenClaw, which NVIDIA talked about at the start of the year, with starting the open-source agent wave we see everywhere today.

Then the anatomy. The language model generates tokens. The harness consumes them; Jensen calls it the exoskeleton, and his example is OpenClaw. The harness sits inside a sandbox that isolates it from the rest of the system. The last two parts are knowledge and tools.

NVIDIA's diagram draws the harness as a loop: take in context, reason, plan, act, go around again, with knowledge and tools wired in underneath. The model does the thinking. The other four decide what that thinking can touch.

<figure class="fd-fig ea ea-loop" aria-labelledby="ea1-cap" data-desc="NVIDIA's anatomy of an agent, redrawn. At the top, the model generates tokens. They flow into the harness, which Jensen calls the exoskeleton, drawn as a loop of four steps: context, reason, plan and act, then back to context. The harness sits inside a sandbox that isolates it from the rest of the system. Under the sandbox, the harness connects to the last two parts: the company's knowledge and its tools. Jensen's line: models, sandbox, harness, knowledge and tools are the five elements of an agent.">
<p class="ea-now ea-say4" aria-hidden="true"><span>Context</span><span>Reason</span><span>Plan</span><span>Act</span></p>
<div class="ea-anat">
<div class="ea-model"><p class="ea-part"><b>1</b>Model</p><p class="ea-sub">generates the tokens</p></div>
<p class="ea-feed" aria-hidden="true"><i></i><i></i><i></i></p>
<div class="ea-sb">
<p class="ea-part ea-part-sb"><b>3</b>Sandbox <span class="ea-sub">isolates it from the rest of the system</span></p>
<div class="ea-hn">
<p class="ea-part"><b>2</b>Harness <span class="ea-sub">the exoskeleton</span></p>
<ol class="ea-steps ea-cyc4" aria-label="The harness loop">
<li>Context</li>
<li>Reason</li>
<li>Plan</li>
<li>Act</li>
</ol>
</div>
</div>
<p class="ea-stem" aria-hidden="true"><span>&lt;/&gt;</span></p>
<div class="ea-base">
<div class="ea-kt"><p class="ea-part"><b>4</b>Knowledge</p><p class="ea-sub">your company's data</p></div>
<div class="ea-kt"><p class="ea-part"><b>5</b>Tools</p><p class="ea-sub">what the agent acts with</p></div>
</div>
</div>
<p class="mp-strip"><b>Jensen</b><span>"Models, sandbox, harness, knowledge and tools. These are the five elements of an agent."</span></p>
<figcaption id="ea1-cap">The loop is NVIDIA's own drawing of the harness, redrawn and numbered in Jensen's order. The highlight walks the four steps; the squares are tokens.</figcaption>
</figure>

## Please don't is not a security model

Before making agents useful, Jensen said, you have to make them secure. An agent is an autonomous system with access to files, resources, networks and tools. Its privileges have to be minimal, and it has to be watched all the time.

The video that came next has the best line of the keynote. Today, the only thing stopping an agent from misusing its access is asking it nicely. "Please don't delete anything. Please don't touch my SSH keys." NVIDIA calls it the please-don't approach, and answers it in three words: hope isn't security.

I've written those prompts. Anyone who runs agents has. The trouble is where they live: in the agent's own context, the same place a prompt injection from an email or a web page lands.

The video's comparison is the early web. Viruses were everywhere until browsers enforced strict limits on what a page could do. Nobody asked the page nicely. OpenShell wants to be that browser for agents: you write a policy for what each agent can touch, and it's enforced on system calls, file access and network connections, outside the agent, "not just in LLM guardrails".

<figure class="fd-fig ea ea-please" aria-labelledby="ea2-cap" data-desc="Two ways to keep an agent away from your SSH keys. On the left, the please-don't approach: the rules are lines in the agent's prompt, please don't delete anything and please don't touch my SSH keys, and the agent's request passes straight through them and reaches the keys. On the right, enforcement outside the agent: a policy sits between the agent and the keys, and the same request is denied there. Under them, the comparison from NVIDIA's video: viruses were everywhere on the early web until browsers enforced strict limits on what a page could do.">
<div class="mp-two-row">
<div class="mp-two-card">
<p class="mp-two-who">The please-don't approach</p>
<p class="mp-two-name">Ask nicely</p>
<div class="ea-prompt"><p class="ea-prompt-k">In the prompt</p><p>Please don't delete anything.</p><p>Please don't touch my SSH keys.</p></div>
<div class="ea-run ea-run-pass" aria-hidden="true"><span class="ea-chip">agent</span><span class="ea-track"><i></i></span><span class="ea-chip ea-chip-key">~/.ssh</span></div>
<p class="ea-verdict ea-v-bad">Reached the keys</p>
<p class="mp-two-line">The rule sits in the agent's own context</p>
</div>
<p class="mp-two-vs">vs</p>
<div class="mp-two-card mp-two-peter">
<p class="mp-two-who">Enforced outside the agent</p>
<p class="mp-two-name">A policy</p>
<div class="ea-prompt ea-prompt-pol"><p class="ea-prompt-k">In the policy</p><p>files: ~/.ssh not allowed</p><p>network: approved hosts only</p></div>
<div class="ea-run ea-run-stop" aria-hidden="true"><span class="ea-chip">agent</span><span class="ea-track"><b class="ea-wall"></b><i></i></span><span class="ea-chip ea-chip-safe">~/.ssh</span></div>
<p class="ea-verdict ea-v-good">Denied at the policy</p>
<p class="mp-two-line">The check sits where the agent can't edit it</p>
</div>
</div>
<p class="mp-strip"><b>The early web</b><span>Viruses were everywhere until browsers enforced strict limits on what a page could do.</span></p>
<figcaption id="ea2-cap">The same request, twice. The policy lines are my sketch, not OpenShell's syntax.</figcaption>
</figure>

## The keys never enter the sandbox

This is the part worth copying even if you never install OpenShell. It's open source under Apache 2.0, and its [architecture docs](https://docs.nvidia.com/openshell/latest/about/architecture) split the job four ways.

- The sandbox holds the agent and has no direct route to the network. It catches every connection and DNS lookup, names the program behind it and hands it on. It never decides anything.
- The supervisor sits outside the sandbox and makes the decisions. It checks each request against the policy, opens the real connection if it's allowed, and holds the credentials.
- The gateway is the control plane: identity, policies and the life of each sandbox.
- The policy prover runs in the gateway and checks proposed policy changes with formal verification.

The credential trick is the one I like most. A provider maps a service to a stored credential, and the supervisor adds it only to requests bound for an endpoint the policy approves. The agent never sees the real key. As the video puts it, a compromised agent can't leak a key it never had.

The rules don't all move at the same speed either. Filesystem and process rules are locked when the sandbox is created. Network rules reload while it runs, and credentials can be attached, rotated or revoked at runtime.

<figure class="fd-fig ea ea-flow" aria-labelledby="ea3-cap" data-desc="How one network request leaves an OpenShell sandbox, following the project's architecture docs. The gateway above is the control plane, with the policy prover inside it. One: the agent opens a connection inside the sandbox, which has no direct route out. Two: the sandbox catches it and names the program behind it. Three: the supervisor, outside the sandbox, checks the request against the policy. Four: if it's allowed, the supervisor adds the credential on the way to the approved endpoint, so the agent never holds the key. Five: a request to a host the policy doesn't approve is denied at the supervisor.">
<p class="ea-now ea-say5" aria-hidden="true"><span>The agent opens a connection</span><span>The sandbox names the program</span><span>The supervisor checks the policy</span><span>The key joins on the way out</span><span class="ea-no">Unknown host: denied</span></p>
<p class="ea-gw"><b>Gateway</b><span>control plane: identity, policy, sandboxes</span><span class="ea-gw-pr">policy prover</span></p>
<div class="ea-lane" aria-hidden="true">
<div class="ea-box ea-box-sb"><p class="ea-box-k">Sandbox</p><p class="ea-box-n">agent</p></div>
<div class="ea-box ea-box-sv"><p class="ea-box-k">Supervisor</p><p class="ea-box-n">policy, keys</p></div>
<div class="ea-box"><p class="ea-box-k">Endpoint</p><p class="ea-box-n">approved host</p></div>
<i class="ea-req"></i>
</div>
<ol class="ea-rows ea-cyc5" aria-label="The request path">
<li><b>1</b><span class="ea-who">Agent</span><span>Opens a connection or a DNS lookup. The sandbox has no direct route out.</span></li>
<li><b>2</b><span class="ea-who">Sandbox</span><span>Catches it, names the program behind it, hands it on. Decides nothing.</span></li>
<li><b>3</b><span class="ea-who">Supervisor</span><span>Checks the request against the policy, outside the sandbox.</span></li>
<li><b>4</b><span class="ea-who">Supervisor</span><span>Adds the credential for an approved endpoint only, then opens the real connection.</span></li>
<li class="ea-row-no"><b>5</b><span class="ea-who">Supervisor</span><span>A host the policy doesn't approve: denied.</span></li>
</ol>
<p class="mp-strip"><b>The video</b><span>A compromised agent can't leak a key it never had.</span></p>
<figcaption id="ea3-cap">One allowed request, then one denied. The square is the request: it turns cobalt when the supervisor adds the key, red when it's refused.</figcaption>
</figure>

## Every launch gets different privileges

Back on stage, Jensen made the point that turns a container into a product. Every level of capability, every task you give the agent, every person who uses it: each combination needs a different level of privilege. Every time an agent launches, the privileges are different. So the privileges, the policy enforcement and the monitoring all have to happen at runtime.

That's the prover's job. When an agent asks for new access, OpenShell checks what the change would allow before applying it. The docs list what gets flagged: new reach with credentials, a new HTTP method, access to cloud metadata. Any finding blocks auto-approval, so the change waits for a human. The video's version: agents never gain more access than intended.

He also said this isn't only for the companies that build agents. It's for every company that will receive agents and let them run inside. That's the enterprise ask in one line: you need the runtime even if you never write an agent. On the same stage he announced that Anthropic and NVIDIA are partnering on Claude agents that run in OpenShell.

It's the conclusion Jiquan Ngiam reached in my [note on AI coworkers in Slack](/notes/ai-coworkers-slack-agent-identity.html) too: the right permissions depend on who asked, who will see the answer and what the task is, so they get decided per message.

<figure class="fd-fig ea ea-ceil" aria-labelledby="ea4-cap" data-desc="Privileges decided per launch. Jensen's sum: the agent's level of capability, plus the task, plus the person using it, gives one launch its privileges, and every launch is different. Below, a schematic: three launches of the same agent get three different amounts of access, all under the company's permission ceiling. A fourth bar, a proposed policy change, would go over the ceiling, so the policy prover flags it and the change waits for a human. The prover flags new reach with credentials, new HTTP methods and cloud metadata access, and any finding blocks auto-approval. OpenShell's layers: filesystem and process rules are locked when the sandbox is created, while network rules and credentials change as it runs.">
<p class="ea-sum"><span>Capability</span><i>+</i><span>Task</span><i>+</i><span>Person</span><i>=</i><span class="ea-sum-r">This launch's privileges</span></p>
<p class="ea-now ea-say4" aria-hidden="true"><span>Launch 1</span><span>Launch 2</span><span>Launch 3</span><span class="ea-no">Over the ceiling: a human decides</span></p>
<div class="ea-plot" aria-hidden="true">
<p class="ea-ceiling"><span>Your permission ceiling</span></p>
<i class="ea-bar ea-b1"></i><i class="ea-bar ea-b2"></i><i class="ea-bar ea-b3"></i><i class="ea-bar ea-b4"></i>
</div>
<p class="ea-plot-lbl" aria-hidden="true"><span>Launch 1</span><span>Launch 2</span><span>Launch 3</span><span>Proposed change</span></p>
<div class="rp-pair">
<p><span class="rp-k">The prover flags</span>New reach with credentials, a new HTTP method, cloud metadata access. Any finding blocks auto-approval.</p>
<p><span class="rp-k">Locked at creation</span>Filesystem and process rules. Network rules and credentials change while it runs.</p>
</div>
<figcaption id="ea4-cap">Bar heights are schematic: NVIDIA gives no numbers. The flagged list and the layers come from OpenShell's docs.</figcaption>
</figure>

## A second guard on its own chip

OpenShell enforces from the host's kernel. NVIDIA's optional extra leaves the host altogether. Sentry runs on a BlueField-4, a DPU: a processor on the server's network card, in its own hardware domain. The agent's reasoning traffic to the model passes through it. If the agent plans something unintended, Sentry updates the policy and cuts the connection to the model, quarantining the agent, NVIDIA says, in milliseconds. It keeps tamper-evident records for the security team and doesn't rely on logs from the host or the agent.

Two caveats. NVIDIA calls Sentry optional, a layer on top, not a requirement. And I couldn't find a published method behind "milliseconds". In Berlin it's packaged as the OpenShell reference architecture: Vera Rubin for model inference, Vera CPUs for harnesses and tools, BlueField-4 running Sentry.

<figure class="fd-fig ea ea-sentry" aria-labelledby="ea5-cap" data-desc="NVIDIA's second guard, outside the host. On the left, the host, a Vera CPU, runs the agent inside its OpenShell sandbox. In the middle, Sentry runs on a BlueField-4 DPU in its own hardware domain, and the agent's reasoning traffic to the model passes through it. On the right, the model on Vera Rubin. When the agent plans something unintended, Sentry updates the policy, cuts the connection to the model and quarantines the agent, which NVIDIA says takes milliseconds, and it keeps a tamper-evident record operators can verify. NVIDIA calls the layer optional and has not published how the milliseconds were measured.">
<p class="ea-now ea-say4" aria-hidden="true"><span>Reasoning traffic passes through Sentry</span><span class="ea-no">A plan it didn't intend</span><span class="ea-no">Connection cut, agent quarantined</span><span>A tamper-evident record</span></p>
<div class="ea-hw" aria-hidden="true">
<div class="ea-box ea-hw-host"><p class="ea-box-k">Host · Vera CPU</p><p class="ea-box-n">agent in its sandbox</p><p class="ea-q">Quarantined</p></div>
<span class="ea-link ea-l1"><i></i></span>
<div class="ea-box ea-hw-dpu"><p class="ea-box-k">BlueField-4</p><p class="ea-box-n">Sentry</p></div>
<span class="ea-link ea-l2"><i></i></span>
<div class="ea-box"><p class="ea-box-k">Vera Rubin</p><p class="ea-box-n">the model</p></div>
</div>
<p class="ea-rec"><b>Record</b><span>Tamper-evident, for detection, investigation and response</span></p>
<p class="mp-strip"><b>NVIDIA's claim</b><span>Quarantine in milliseconds, even if the host is compromised. No method published.</span></p>
<figcaption id="ea5-cap">Sentry is optional, a layer on top of OpenShell. The three boxes follow the OpenShell reference architecture announced in Berlin.</figcaption>
</figure>

## Rent the general model, own the special one

Then models. Jensen doesn't expect any company to run everything on one model. When the work is fairly generic, a general model does an incredibly good job. When the work captures too much of your proprietary knowledge, and you want to keep improving it, you take an open model and post-train it on your own data. Every company, he says, will use both.

NVIDIA's open family is Nemotron, shipped with the open weights, the training data and the scripts to reproduce it, so you know where the model came from. He was candid about the catch: these models "are not necessarily the frontier of frontiers", especially for language. The claim is that post-trained on your data, they reach frontier level for your use case. He backed it with partner pairs, Baseten with CodeRabbit and Scale with Skydance among them, and no benchmark on stage.

My fleet already splits that way. Most of my agents run on Claude. Fortuna, the one that reads my finance app, runs on Qwen 3.6 on the Mac mini itself.

<figure class="fd-fig ea ea-models" aria-labelledby="ea6-cap" data-desc="Jensen's split between models. On the left, fairly generic work goes to a general model, often a closed one, which he says will do an incredibly good job. On the right, work that captures too much of your proprietary knowledge goes to an open model you post-train on your own data and keep improving. NVIDIA's Nemotron ships with the open weights, the training data and the scripts to reproduce it, and with your data on top it becomes your model. His caveat: these models are not necessarily the frontier of frontiers, especially for language.">
<p class="ea-now ea-say4" aria-hidden="true"><span>Open weights</span><span>Plus the training data</span><span>Plus the scripts to rebuild it</span><span>Plus your data: your model</span></p>
<div class="mp-two-row">
<div class="mp-two-card">
<p class="mp-two-who">Fairly generic work</p>
<p class="mp-two-name">Rent</p>
<p class="ea-mdl"><b>General model</b>closed or open, used as it comes</p>
<p class="mp-two-line">"Going to do an incredibly good job"</p>
<p class="mp-two-line">Every company will use these</p>
</div>
<p class="mp-two-vs">and</p>
<div class="mp-two-card mp-two-peter">
<p class="mp-two-who">Your proprietary knowledge</p>
<p class="mp-two-name">Own</p>
<ol class="ea-recipe ea-cyc4" aria-label="What an open model ships with, then your part">
<li>Open weights</li>
<li>The training data</li>
<li>The scripts to reproduce it</li>
<li class="ea-recipe-you">Your data: post-train it</li>
</ol>
<p class="mp-two-line">And keep improving it</p>
</div>
</div>
<p class="mp-strip"><b>Jensen</b><span>These models "are not necessarily the frontier of frontiers, especially for the language model."</span></p>
<figcaption id="ea6-cap">Both, not either. The recipe is what NVIDIA ships with Nemotron's weights; the last line is the part only you have.</figcaption>
</figure>

## Knowledge turns agents into super agents

"What turns these agents into super agents is that you give them access to your company's knowledge." NVIDIA's piece for that is the agent knowledge foundation: libraries and models that pull meaning out of your data, whether it's unstructured, like PDFs that need an AI to read them, or structured, like rows in a database.

He named the parts one at a time. Nemotron Parse reads documents. Nemotron Embed matches a query to what's in a vector database. Nemotron Rerank takes the many sources a query matched and ranks them by relevance. Kumo predicts what's likely to happen from a structured database.

Then his example. A notice arrives that a supplier will be short or late: that's a document. Your orders sit in a SQL database. Kumo predicts which orders will run short and by how much. Then vector search finds the engineering document for a replacement component. One question, and it crosses a document, a database and an archive.

That's the part closest to my day job. I connect commerce systems for a living, and an agent can only answer that question once somebody has wired it to the order system.

<figure class="fd-fig ea ea-supply" aria-labelledby="ea7-cap" data-desc="Jensen's supply-chain example for the agent knowledge foundation, in three steps. One: a notice arrives that a supplier will be short or late; it is an unstructured document, read with Nemotron Parse. Two: the company's orders sit in a structured SQL database, and Kumo predicts which orders will run short and by how much. Three: vector search over engineering documents, with Nemotron Embed and Nemotron Rerank, finds a replacement component. Under them, the four parts he named: Parse reads documents, Embed matches a query to the vector database, Rerank orders the sources by relevance, and Kumo predicts from structured data.">
<p class="ea-now ea-say3" aria-hidden="true"><span>A notice: a supplier will be late</span><span>Which orders run short, and by how much</span><span>A replacement part</span></p>
<ol class="mp-trio ea-trio">
<li><svg class="mp-grow-art" viewBox="0 0 170 100" aria-hidden="true"><rect class="rp-doc" x="56" y="8" width="62" height="84"/><rect class="mp-ln" x="66" y="22" width="40" height="5"/><rect class="mp-ln" x="66" y="34" width="44" height="4"/><rect class="mp-ln" x="66" y="44" width="32" height="4"/><rect class="ea-hl" x="66" y="56" width="42" height="7"/><rect class="mp-ln" x="66" y="70" width="36" height="4"/></svg><p class="mp-trio-n"><b>1</b>The notice</p><p class="mp-trio-what">A document, so unstructured. Parse reads it.</p></li>
<li><svg class="mp-grow-art" viewBox="0 0 170 100" aria-hidden="true"><path class="ea-db" d="M50,22 V78 A35,10 0 0 0 120,78 V22"/><ellipse class="ea-db" cx="85" cy="22" rx="35" ry="10"/><path class="ea-db-ln" d="M50,41 A35,10 0 0 0 120,41"/><path class="ea-db-ln" d="M50,60 A35,10 0 0 0 120,60"/><rect class="ea-hl" x="76" y="64" width="18" height="7"/></svg><p class="mp-trio-n"><b>2</b>The orders</p><p class="mp-trio-what">Rows in SQL. Kumo predicts which run short, and by how much.</p></li>
<li><svg class="mp-grow-art" viewBox="0 0 170 100" aria-hidden="true"><rect class="rp-doc" x="40" y="14" width="44" height="60"/><rect class="rp-doc" x="52" y="22" width="44" height="60"/><rect class="mp-ln" x="60" y="34" width="28" height="4"/><rect class="mp-ln" x="60" y="44" width="22" height="4"/><circle class="ea-lens" cx="112" cy="52" r="18"/><path class="ea-lens-h" d="M125,65 L144,84"/></svg><p class="mp-trio-n"><b>3</b>The fix</p><p class="mp-trio-what">Vector search finds the engineering doc for a replacement.</p></li>
</ol>
<p class="ea-libs"><span><b>Parse</b>reads documents</span><span><b>Embed</b>matches a query to the vector database</span><span><b>Rerank</b>orders the sources by relevance</span><span><b>Kumo</b>predicts from structured data</span></p>
<figcaption id="ea7-cap">His example, step by step. The four names under it are the parts of NVIDIA's agent knowledge foundation he listed on stage.</figcaption>
</figure>

## Tools are the trade

The last part is tools. NVIDIA's CUDA-X libraries are simulators, solvers, data processing engines and domain libraries, and Jensen calls them the crown jewels of the company. The video's line: the most intelligent scientist still needs a laboratory, and the best engineer still needs simulators and solvers.

He also said why coding went first. Software was one of the first fields agents took on, and there a compiler or Python is all the agent needs. Other work needs more tools.

The video showed three. Lila Sciences, designing a therapy for B-cell lymphoma: the Iris agent turns the goal into an experimental plan, agents run millions of virtual experiments in a computational dry lab, the best candidates go to an AI science factory where robots make and test them, and the results go back to Iris. Siemens, at its electronics factory in Erlangen: agents make virtual prototypes and synthetic data, recommend production plans from orders, supplies and line setups, and a digital twin checks those plans with physics simulation before anything changes on the floor. Dassault Systèmes, adapting a Volkswagen Golf door for the Tiguan: a simulation agent finds a vibration problem, sends it back to the design agent, and the engineer picks the final design.

His summary afterwards: "Building agents is not that hard." Five parts. The model and the harness come in closed and open versions. Then the OpenShell runtime, "and then most importantly, the knowledge and tools, and those knowledge and tools belong to you. That's your expertise."

<figure class="fd-fig ea ea-lab" aria-labelledby="ea8-cap" data-desc="Lila Sciences' loop from NVIDIA's video, for designing a therapy for B-cell lymphoma. The Iris agent turns the goal into an experimental plan. Agents in a computational dry lab run millions of virtual experiments with BioNeMo. The most promising candidates go to an AI science factory, where robots and instruments make and test them. The results return to Iris and shape the next designs, and the loop continues. Under it, the video's two other examples. At Siemens' electronics factory in Erlangen, agents make virtual prototypes and synthetic data and recommend production plans, and a digital twin checks the plans with physics simulation before the floor changes. At Dassault Systèmes, agents adapt a Volkswagen Golf door for the Tiguan, a simulation agent finds a vibration problem and sends it back to design, and the engineer picks the final design.">
<p class="ea-now ea-say4" aria-hidden="true"><span>Iris plans the experiment</span><span>Millions of virtual experiments</span><span>Robots make and test the best</span><span>Results go back to Iris</span></p>
<p class="ea-goal"><b>Goal</b>A therapy for B-cell lymphoma</p>
<div class="ea-ring ea-cyc4">
<p class="ea-node ea-n1"><b>Plan</b><span>Iris turns the goal into an experimental plan</span></p>
<p class="ea-node ea-n2"><b>Dry lab</b><span>BioNeMo runs millions of virtual experiments</span></p>
<p class="ea-node ea-n3"><b>Science factory</b><span>Robots make and test the best candidates</span></p>
<p class="ea-node ea-n4"><b>Results</b><span>Back to Iris, shaping the next designs</span></p>
<span class="ea-arr ea-a1" aria-hidden="true">→</span><span class="ea-arr ea-a2" aria-hidden="true">↓</span><span class="ea-arr ea-a3" aria-hidden="true">←</span><span class="ea-arr ea-a4" aria-hidden="true">↑</span>
</div>
<div class="rp-pair">
<p><span class="rp-k">Siemens, Erlangen</span>Virtual prototypes and synthetic data, production plans from orders and line setups, a digital twin checks them first</p>
<p><span class="rp-k">Dassault Systèmes</span>A Golf door reshaped for the Tiguan. Simulation finds a vibration, design fixes it, the engineer picks</p>
</div>
<p class="mp-strip"><b>The video</b><span>The most intelligent scientist still needs a laboratory.</span></p>
<figcaption id="ea8-cap">Lila's loop as the video narrates it. The highlight walks it the way the results do: around, and around again.</figcaption>
</figure>

## Where my own agents stand

So I held my OpenClaw fleet against the five parts.

The model is mixed: Claude for most agents, Qwen 3.6 locally for a few. The harness is OpenClaw 2026.9.4. Knowledge comes through eight MCP servers into my own apps. Tools are gated by a deny list per agent in openclaw.json: Rex, my nutrition coach, has no shell at all, and only Nova can reach my phone.

The sandbox is the empty row. My agents run their tools on the host, which is OpenClaw's default and the thing I warned about in my [OpenClaw and Hermes comparison](/notes/hermes-agent-vs-openclaw.html).

Those deny lists are real code, not a please. But the harness enforces them, on the same machine as the agent, and they name tools. Any agent that still has a shell can reach whatever my user account can. That's the inside-the-agent enforcement NVIDIA says isn't enough.

<figure class="fd-fig ea ea-mine" aria-labelledby="ea9-cap" data-desc="My OpenClaw fleet on the Mac mini, held against the five parts. Model: mixed, Claude for most agents and Qwen 3.6 running locally for a few. Harness: OpenClaw 2026.9.4. Knowledge: eight MCP servers into my own apps. Tools: a deny list per agent in openclaw.json, enforced by the harness on the same machine; Rex has no shell, and only Nova can reach the phone. Sandbox: none yet, tools run on the host, which is OpenClaw's default. The gap: my rules live inside the harness, and NVIDIA's point is to put them outside the agent.">
<p class="ea-now ea-say5" aria-hidden="true"><span>Model: mixed</span><span>Harness: OpenClaw</span><span>Knowledge: eight MCP servers</span><span>Tools: deny lists, inside</span><span class="ea-no">Sandbox: not yet</span></p>
<ol class="ea-card ea-cyc5" aria-label="My setup, part by part">
<li><span class="ea-card-k">Model</span><span class="ea-card-v">Claude for most agents, Qwen 3.6 on the mini for a few</span><b class="ea-pill">Mixed</b></li>
<li><span class="ea-card-k">Harness</span><span class="ea-card-v">OpenClaw 2026.9.4</span><b class="ea-pill">Yes</b></li>
<li><span class="ea-card-k">Knowledge</span><span class="ea-card-v">Eight MCP servers into my own apps</span><b class="ea-pill">Yes</b></li>
<li><span class="ea-card-k">Tools</span><span class="ea-card-v">A deny list per agent. Rex has no shell; only Nova reaches the phone</span><b class="ea-pill ea-pill-mid">Inside</b></li>
<li class="ea-row-no"><span class="ea-card-k">Sandbox</span><span class="ea-card-v">None: tools run on the host, OpenClaw's default</span><b class="ea-pill ea-pill-no">Not yet</b></li>
</ol>
<p class="mp-strip"><b>The gap</b><span>My rules live inside the harness. NVIDIA's point is to put them outside the agent.</span></p>
<figcaption id="ea9-cap">My own setup on October 23, read from my openclaw.json. The last row is the one the keynote says to do first.</figcaption>
</figure>

## Try it

OpenShell runs on Linux, macOS on Apple Silicon, or Windows with WSL 2, with Docker, Podman or host virtualization. Two commands:

```
curl -LsSf https://raw.githubusercontent.com/NVIDIA/OpenShell/main/install.sh | sh
openshell sandbox create --name demo
```

The installer sets up the CLI and a local gateway, and the default sandbox is a minimal Ubuntu with no agent in it. The [Run your first agent](https://docs.nvidia.com/openshell/latest/about/run-your-first-agent) guide puts OpenCode inside on a free OpenRouter model and shows how you approve new access as the agent asks for it. I haven't run it yet, so read this note as the reading, not the review.

If you want more:

- [The GTC Berlin keynote](https://www.youtube.com/watch?v=PvFjbPYEOZI&t=2502s), the agent part from minute 41, and [the OpenShell video](https://www.youtube.com/watch?v=PvFjbPYEOZI&t=2657s) at 44:17
- [OpenShell on GitHub](https://github.com/NVIDIA/OpenShell), Apache 2.0, with the [architecture](https://docs.nvidia.com/openshell/latest/about/architecture) and [policy](https://docs.nvidia.com/openshell/latest/how-it-works/policies/overview) docs
- [NVIDIA Sentry](https://www.nvidia.com/en-us/networking/products/software/sentry/), the BlueField-4 layer
- [How autonomous AI agents become secure by design](https://blogs.nvidia.com/blog/secure-autonomous-ai-agents-openshell/), NVIDIA's OpenShell launch post
- [OpenClaw and Hermes Agent ship the same features with different defaults](/notes/hermes-agent-vs-openclaw.html), where the sandbox defaults are compared
- [AI coworkers in Slack need their own identity](/notes/ai-coworkers-slack-agent-identity.html), on permissions decided at runtime

If your company is getting ready for agents, start with the dull part. Write down what each agent may touch, and put that check somewhere the agent can't edit. If you try OpenShell before I do, tell me how many approvals it took before your agent was useful.
