Skip to main content

Open source control plane for NVIDIA OpenShell

Project description

ShoreGuard

CI Python 3.14+ License: Apache 2.0

Open-source control plane for NVIDIA OpenShell. Manage AI agent sandboxes, inference routing, and security policies — from a web UI, REST API, or Terraform.

Sandbox Overview


Architecture

ShoreGuard sits between operators and OpenShell's secure runtime. Agents run inside hardened sandboxes with routed inference — they never see real API keys or provider endpoints.

graph LR
    subgraph "Operators — all use ShoreGuard REST API"
        UI["ShoreGuard Web UI"]
        TF["Terraform Provider"]
        PC["Paperclip"]
        OC["OpenClaw"]
    end

    subgraph "Observability"
        Grafana["Grafana"]
    end

    subgraph "ShoreGuard — Management Plane"
        SG["ShoreGuard API"]
        DB[("PostgreSQL")]
        Metrics["/metrics"]
    end

    subgraph "Gateway: dev"
        OS1["OpenShell Controller"]
        subgraph "Sandbox"
            Agent1["Agent"]
        end
        Proxy1["inference.local/v1"]
    end

    subgraph "Gateway: staging"
        OS2["OpenShell Controller"]
        subgraph "Sandbox "
            Agent2["Agent"]
        end
        Proxy2["inference.local/v1"]
    end

    subgraph "LLM Providers"
        LLM["Anthropic / NVIDIA / OpenAI"]
    end

    UI --> SG
    TF --> SG
    PC -->|"adapter plugin"| SG
    OC -->|"slash commands"| SG
    PC -.->|"controls"| Agent1
    OC -.->|"controls"| Agent1
    Grafana --> Metrics
    SG --> DB
    SG --> Metrics
    SG -- "gRPC + mTLS" --> OS1
    SG -- "gRPC + mTLS" --> OS2
    OS1 --> Agent1
    OS2 --> Agent2
    Agent1 -. "inference.local" .-> Proxy1
    Agent2 -. "inference.local" .-> Proxy2
    Proxy1 -- "real API key" --> LLM
    Proxy2 -- "real API key" --> LLM

    style SG fill:#1a7f37,color:#fff,stroke:#1a7f37
    style Agent1 fill:#c8e6c9,stroke:#388e3c,color:#1b5e20
    style Agent2 fill:#c8e6c9,stroke:#388e3c,color:#1b5e20
    style Proxy1 fill:#ffe0b2,stroke:#e65100,color:#bf360c
    style Proxy2 fill:#ffe0b2,stroke:#e65100,color:#bf360c
    style Grafana fill:#bbdefb,stroke:#1565c0,color:#0d47a1

Key insight: The agent inside the sandbox only knows inference.local/v1. OpenShell's L7 proxy injects the real credentials and routes to the actual provider. API keys are managed by ShoreGuard, never exposed to agent code. All operators — whether human (Web UI, Terraform) or agent platforms (Paperclip, OpenClaw) — use the same ShoreGuard REST API. One ShoreGuard instance manages multiple gateways (dev, staging, production).


Why ShoreGuard?

NVIDIA OpenShell provides hardened sandboxes for AI agents — but ships with only a CLI. NemoClaw adds orchestration, but is single-gateway and CLI-driven.

ShoreGuard adds the missing management layer:

Capability OpenShell CLI NemoClaw ShoreGuard
Sandbox creation CLI CLI Web UI + API + Terraform
Multi-gateway Multiple gateways, one dashboard
Visual policy editor Drag-and-drop with revision history
Approval flow Real-time notifications
Inference routing CLI Blueprint profiles API-driven, per-gateway
Audit trail Persistent, filterable, exportable
RBAC Admin / Operator / Viewer
Agent frameworks OpenClaw only Paperclip, OpenClaw, custom
Webhooks Slack, Discord, Email, HMAC-signed

Quick Start

Local development

pip install shoreguard
shoreguard --local --no-auth

Open http://localhost:8888. The --local flag enables Docker-based gateway management, --no-auth skips login.

Docker Compose (production)

git clone https://github.com/FloHofstetter/shoreguard.git
cd shoreguard/deploy
cp .env.example .env    # edit: set SHOREGUARD_SECRET_KEY, passwords
docker compose up -d    # core: ShoreGuard + OpenShell + Caddy (HTTPS)

The stack automatically generates mTLS certificates, registers an OpenShell gateway, and provides HTTPS via Caddy with self-signed certificates.

Optional profiles

# Add Paperclip agent orchestration
docker compose --profile paperclip up -d

# Add OpenClaw agent gateway (sandboxed)
docker compose --profile openclaw up -d

See the deployment guide for production hardening, custom domains, and Let's Encrypt.

Verifying release integrity

Docker images on GHCR and wheels on PyPI are signed via sigstore keyless (GitHub OIDC → Fulcio → Rekor). Verify before running:

cosign verify ghcr.io/flohofstetter/shoreguard:0.27.0 \
  --certificate-identity-regexp 'https://github.com/FloHofstetter/shoreguard/.*' \
  --certificate-oidc-issuer 'https://token.actions.githubusercontent.com'

PyPI wheels ship with PEP 740 attestations — modern pip/uv verify them automatically. See the installation guide for explicit verification.


Features

Sandbox Management

  • Sandbox wizard — step-by-step creation with community images, GPU support, and policy presets
  • Visual policy editor — network rules, filesystem paths, process settings with revision history and diff viewer
  • Approval flow — agents request endpoint access, operators approve or deny in real-time
  • Templates — pre-configured sandboxes for data science, web development, and secure coding

Infrastructure

  • Multi-gateway — manage dev, staging, and production OpenShell clusters from one dashboard
  • RBAC — Admin, Operator, Viewer roles with gateway-scoped overrides
  • Audit log — persistent, filterable, exportable trail of all state changes
  • Health monitoring — automatic gateway probing with status indicators

Integrations

  • REST API — full CRUD for gateways, sandboxes, policies, providers, and inference
  • Terraform provider — declarative infrastructure as code
  • Webhooks — Slack, Discord, Email, and generic webhooks with HMAC-SHA256 signing
  • Prometheus metrics/metrics endpoint for Grafana and standard monitoring
Screenshots
Sandbox Overview Policy Editor
Sandbox Overview Policy Editor
Network Policies Gateway Detail
Network Policies Gateway Detail
Providers Audit Log
Providers Audit Log

Ecosystem

Project Description
Terraform Provider Manage gateways, sandboxes, providers, and policies as code
Paperclip Plugin + Adapter Run Paperclip agents in isolated OpenShell sandboxes
OpenClaw Plugin /shoreguard slash commands for OpenClaw agents
OpenClaw Sandbox Image Hardened OpenClaw image for OpenShell deployment
Docker Compose Stack One-command setup: ShoreGuard + OpenShell + Caddy + optional integrations

Roadmap

Shipped:

  • Multi-gateway management with health monitoring
  • RBAC with gateway-scoped overrides
  • Sandbox wizard with community images and presets
  • Visual policy editor with revision history
  • Real-time approval flow
  • Terraform provider
  • Persistent audit log with export
  • Webhooks (Slack, Discord, Email) with HMAC signing
  • Prometheus metrics
  • Paperclip adapter (@shoreguard/paperclip-plugin + @shoreguard/paperclip-adapter)
  • Docker Compose stack with Caddy auto-TLS
  • Inference routing via OpenShell L7 proxy
  • OpenClaw sandbox image with NemoClaw-style hardening

In progress:

  • Hardened sandbox deployment via gRPC API (blocked by OpenShell API limitations)
  • Routed inference for Paperclip adapter (replace credential injection with inference.local)

Planned:

  • Multi-region gateway federation
  • DigitalOcean Marketplace integration

Development

git clone https://github.com/FloHofstetter/shoreguard.git
cd shoreguard
uv sync --group dev
uv run pre-commit install --hook-type pre-commit --hook-type pre-push
uv run shoreguard --local --no-auth

Run checks with just:

just check    # lint + format + typecheck + tests
just dev      # start dev server
just test     # run unit tests

See the contributing guide for details.

Documentation

Full docs: flohofstetter.github.io/shoreguard

License

Apache 2.0

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

shoreguard-0.30.0.tar.gz (269.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

shoreguard-0.30.0-py3-none-any.whl (357.8 kB view details)

Uploaded Python 3

File details

Details for the file shoreguard-0.30.0.tar.gz.

File metadata

  • Download URL: shoreguard-0.30.0.tar.gz
  • Upload date:
  • Size: 269.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for shoreguard-0.30.0.tar.gz
Algorithm Hash digest
SHA256 ec897efdc6b6c71ae914acb802a076c1d5bd20f890ac513d11441273b0ae17a9
MD5 28083b4ad34810d6d98c2bf67c9612da
BLAKE2b-256 8d292f5c02b03ab44cf50af8e2a29a96c2af40876b08d3b625a2f6739c92fc3c

See more details on using hashes here.

Provenance

The following attestation bundles were made for shoreguard-0.30.0.tar.gz:

Publisher: release.yml on FloHofstetter/shoreguard

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file shoreguard-0.30.0-py3-none-any.whl.

File metadata

  • Download URL: shoreguard-0.30.0-py3-none-any.whl
  • Upload date:
  • Size: 357.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for shoreguard-0.30.0-py3-none-any.whl
Algorithm Hash digest
SHA256 7f2cc0bbc1f6b351fe4d857109cf9a16668bcf1050a4baf300fc7e0e799f560d
MD5 899d33c47700b5a59b4b6929c9d24d1c
BLAKE2b-256 8f36f22cad39e797a50367b2ff94471d7ff6c982d6a54fc914eb9ac4e30c7563

See more details on using hashes here.

Provenance

The following attestation bundles were made for shoreguard-0.30.0-py3-none-any.whl:

Publisher: release.yml on FloHofstetter/shoreguard

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page