Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
77 changes: 0 additions & 77 deletions .github/workflows/build-sandboxes.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,6 @@ on:
env:
REGISTRY: ghcr.io
IMAGE_PREFIX: ${{ github.repository }}
ECR_REGISTRY: 524473328983.dkr.ecr.us-west-2.amazonaws.com
ECR_IMAGE_PREFIX: nemoclaw-community

permissions:
contents: read
Expand Down Expand Up @@ -246,79 +244,4 @@ jobs:
cache-from: type=gha,scope=${{ matrix.sandbox }}
cache-to: type=gha,mode=max,scope=${{ matrix.sandbox }}

# ---------------------------------------------------------------------------
# Publish images to ECR (re-tag from GHCR, no rebuild required)
# ---------------------------------------------------------------------------
publish-ecr:
name: Publish to ECR
needs: [detect-changes, build-base, build]
if: |
always() &&
github.ref == 'refs/heads/main' &&
needs.detect-changes.result == 'success' &&
(needs.build-base.result == 'success' || needs.build-base.result == 'skipped') &&
(needs.build.result == 'success' || needs.build.result == 'skipped')
runs-on: ubuntu-latest
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
AWS_DEFAULT_REGION: us-west-2
steps:
- name: Lowercase image prefix
id: repo
run: |
echo "image_prefix=${IMAGE_PREFIX,,}" >> "$GITHUB_OUTPUT"
echo "short_sha=${GITHUB_SHA::7}" >> "$GITHUB_OUTPUT"

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

- name: Log in to GHCR
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Log in to ECR
run: aws ecr get-login-password --region us-west-2 | docker login --username AWS --password-stdin ${{ env.ECR_REGISTRY }}

- name: Copy base image to ECR
if: needs.detect-changes.outputs.base-changed == 'true'
run: |
set -euo pipefail
GHCR_IMAGE="${{ env.REGISTRY }}/${{ steps.repo.outputs.image_prefix }}/sandboxes/base"
ECR_IMAGE="${{ env.ECR_REGISTRY }}/${{ env.ECR_IMAGE_PREFIX }}/sandboxes/base"
SHORT_SHA="${{ steps.repo.outputs.short_sha }}"

echo "Copying ${GHCR_IMAGE}:${SHORT_SHA} -> ${ECR_IMAGE}:${SHORT_SHA}"
docker buildx imagetools create \
-t "${ECR_IMAGE}:${SHORT_SHA}" \
"${GHCR_IMAGE}:${SHORT_SHA}"

echo "Copying ${GHCR_IMAGE}:latest -> ${ECR_IMAGE}:latest"
docker buildx imagetools create \
-t "${ECR_IMAGE}:latest" \
"${GHCR_IMAGE}:latest"

- name: Copy sandbox images to ECR
if: needs.detect-changes.outputs.sandboxes != '[]'
run: |
set -euo pipefail
SANDBOXES='${{ needs.detect-changes.outputs.sandboxes }}'
SHORT_SHA="${{ steps.repo.outputs.short_sha }}"

for SANDBOX in $(echo "$SANDBOXES" | jq -r '.[]'); do
GHCR_IMAGE="${{ env.REGISTRY }}/${{ steps.repo.outputs.image_prefix }}/sandboxes/${SANDBOX}"
ECR_IMAGE="${{ env.ECR_REGISTRY }}/${{ env.ECR_IMAGE_PREFIX }}/sandboxes/${SANDBOX}"

echo "Copying ${GHCR_IMAGE}:${SHORT_SHA} -> ${ECR_IMAGE}:${SHORT_SHA}"
docker buildx imagetools create \
-t "${ECR_IMAGE}:${SHORT_SHA}" \
"${GHCR_IMAGE}:${SHORT_SHA}"

echo "Copying ${GHCR_IMAGE}:latest -> ${ECR_IMAGE}:latest"
docker buildx imagetools create \
-t "${ECR_IMAGE}:latest" \
"${GHCR_IMAGE}:latest"
done
10 changes: 5 additions & 5 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
# Contributing to NemoClaw Community
# Contributing to OpenShell Community

Thank you for your interest in contributing to the NemoClaw Community ecosystem. This guide covers everything you need to get started.
Thank you for your interest in contributing to the OpenShell Community ecosystem. This guide covers everything you need to get started.

## Ways to Contribute

- **Sandbox images** -- Add new domain-specific sandbox environments under `sandboxes/`
- **Skills** -- Create agent skills and tool definitions inside a sandbox's `skills/` directory
- **Bug fixes** -- Fix issues in existing sandboxes, skills, or configurations
- **Documentation** -- Improve READMEs, guides, and usage examples
- **Integrations** -- Connect NemoClaw to new tools, platforms, or workflows
- **Integrations** -- Connect OpenShell to new tools, platforms, or workflows

## Developer Certificate of Origin (DCO)

Expand All @@ -35,8 +35,8 @@ A DCO check runs on every pull request and will fail if any commit is missing th
3. Create a feature branch from `main`

```bash
git clone https://github.com/<your-username>/NemoClaw-Community.git
cd NemoClaw-Community
git clone https://github.com/<your-username>/OpenShell-Community.git
cd OpenShell-Community
git checkout -b my-feature
```

Expand Down
12 changes: 6 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
# NemoClaw Community
# OpenShell Community

[NemoClaw](https://github.com/NVIDIA/NemoClaw) is the runtime environment for autonomous agents -- the infrastructure where they live, work, and verify. It provides a programmable factory where agents can spin up physics simulations to master tasks, generate synthetic data to fix edge cases, and safely iterate through thousands of failures in isolated sandboxes. The core engine includes the sandbox runtime, policy engine, gateway (with k3s harness), privacy router, and CLI.
[OpenShell](https://github.com/NVIDIA/OpenShell) is the runtime environment for autonomous agents -- the infrastructure where they live, work, and verify. It provides a programmable factory where agents can spin up physics simulations to master tasks, generate synthetic data to fix edge cases, and safely iterate through thousands of failures in isolated sandboxes. The core engine includes the sandbox runtime, policy engine, gateway (with k3s harness), privacy router, and CLI.

This repo is the community ecosystem around NemoClaw -- a hub for contributed skills, sandbox images, launchables, and integrations that extend its capabilities. For the core engine, docs, and published artifacts (PyPI, containers, binaries), see the [NemoClaw](https://github.com/NVIDIA/NemoClaw) repo.
This repo is the community ecosystem around OpenShell -- a hub for contributed skills, sandbox images, launchables, and integrations that extend its capabilities. For the core engine, docs, and published artifacts (PyPI, containers, binaries), see the [OpenShell](https://github.com/NVIDIA/OpenShell) repo.

## What's Here

| Directory | Description |
| ------------ | --------------------------------------------------------------------------------- |
| `brev/` | [Brev](https://brev.dev) launchable for one-click cloud deployment of NemoClaw |
| `brev/` | [Brev](https://brev.dev) launchable for one-click cloud deployment of OpenShell |
| `sandboxes/` | Pre-built sandbox images for domain-specific workloads (each with its own skills) |

### Sandboxes
Expand All @@ -24,7 +24,7 @@ This repo is the community ecosystem around NemoClaw -- a hub for contributed sk

### Prerequisites

- [NemoClaw CLI](https://github.com/NVIDIA/NemoClaw) installed (`uv pip install nemoclaw`)
- [OpenShell CLI](https://github.com/NVIDIA/OpenShell) installed (`uv pip install openshell`)
- Docker or a compatible container runtime
- NVIDIA GPU with appropriate drivers (for GPU-accelerated images)

Expand All @@ -35,7 +35,7 @@ TODO: Add Brev instructions
### Using Sandboxes

```bash
nemoclaw sandbox create --from openclaw
openshell sandbox create --from openclaw
```

The `--from` flag accepts any sandbox defined under `sandboxes/` (e.g., `openclaw`, `sdg`, `simulation`), a local path, or a container image reference.
Expand Down
2 changes: 1 addition & 1 deletion THIRD-PARTY-NOTICES
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
THIRD-PARTY SOFTWARE NOTICES

This file lists the third-party software packages used by NemoClaw Community,
This file lists the third-party software packages used by OpenShell Community,
along with their respective licenses.

================================================================================
Expand Down
4 changes: 2 additions & 2 deletions sandboxes/base/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,12 @@
# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
# SPDX-License-Identifier: Apache-2.0

# NemoClaw Community base sandbox image
# OpenShell Community base sandbox image
#
# Provides the foundational system tools, users, and developer environment
# that all other community sandbox images build on top of.
#
# Build: docker build -t nemoclaw-base .
# Build: docker build -t openshell-base .

# System base
FROM ubuntu:24.04 AS system
Expand Down
6 changes: 3 additions & 3 deletions sandboxes/base/README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Base Sandbox

The foundational sandbox image that all other NemoClaw Community sandbox images build from.
The foundational sandbox image that all other OpenShell Community sandbox images build from.

## What's Included

Expand Down Expand Up @@ -29,15 +29,15 @@ The foundational sandbox image that all other NemoClaw Community sandbox images
## Build

```bash
docker build -t nemoclaw-base .
docker build -t openshell-base .
```

## Building a Sandbox on Top

Other sandbox images should use this as their base:

```dockerfile
ARG BASE_IMAGE=ghcr.io/nvidia/nemoclaw-community/sandboxes/base:latest
ARG BASE_IMAGE=ghcr.io/nvidia/openshell-community/sandboxes/base:latest
FROM ${BASE_IMAGE}

# Add your sandbox-specific layers here
Expand Down
8 changes: 4 additions & 4 deletions sandboxes/openclaw/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,13 @@
# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
# SPDX-License-Identifier: Apache-2.0

# OpenClaw sandbox image for NemoClaw
# OpenClaw sandbox image for OpenShell
#
# Builds on the community base sandbox and adds OpenClaw.
# Build: docker build -t nemoclaw-openclaw --build-arg BASE_IMAGE=nemoclaw-base .
# Run: nemoclaw sandbox create --from openclaw
# Build: docker build -t openshell-openclaw --build-arg BASE_IMAGE=openshell-base .
# Run: openshell sandbox create --from openclaw

ARG BASE_IMAGE=ghcr.io/nvidia/nemoclaw-community/sandboxes/base:latest
ARG BASE_IMAGE=ghcr.io/nvidia/openshell-community/sandboxes/base:latest
FROM ${BASE_IMAGE}

USER root
Expand Down
10 changes: 5 additions & 5 deletions sandboxes/openclaw/README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# OpenClaw Sandbox

NemoClaw sandbox image pre-configured with [OpenClaw](https://github.com/openclaw) for open agent manipulation and control.
OpenShell sandbox image pre-configured with [OpenClaw](https://github.com/openclaw) for open agent manipulation and control.

## What's Included

Expand All @@ -12,27 +12,27 @@ NemoClaw sandbox image pre-configured with [OpenClaw](https://github.com/opencla
## Build

```bash
docker build -t nemoclaw-openclaw .
docker build -t openshell-openclaw .
```

To build against a specific base image:

```bash
docker build -t nemoclaw-openclaw --build-arg BASE_IMAGE=nemoclaw/sandbox:v0.1.0 .
docker build -t openshell-openclaw --build-arg BASE_IMAGE=openshell/sandbox:v0.1.0 .
```

## Usage

### Create a sandbox

```bash
nemoclaw sandbox create --from openclaw
openshell sandbox create --from openclaw
```

### With port forwarding (to access the OpenClaw UI)

```bash
nemoclaw sandbox create --from openclaw --forward 18789 -- openclaw-start
openshell sandbox create --from openclaw --forward 18789 -- openclaw-start
```

This runs the `openclaw-start` helper which:
Expand Down
4 changes: 2 additions & 2 deletions sandboxes/openclaw/openclaw-start.sh
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@
# SPDX-License-Identifier: Apache-2.0

# openclaw-start — Configure OpenClaw and start the gateway.
# Designed for NemoClaw sandboxes.
# Designed for OpenShell sandboxes.
#
# Usage:
# nemoclaw sandbox create --from openclaw --forward 18789 -- openclaw-start
# openshell sandbox create --from openclaw --forward 18789 -- openclaw-start
set -euo pipefail

openclaw onboard
Expand Down