Skip to main content

Open source control plane for NVIDIA OpenShell

Project description

ShoreGuard

CI Python 3.12+ License: Apache 2.0

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

Sandbox Overview

What is ShoreGuard?

NVIDIA OpenShell provides secure, sandboxed environments for autonomous AI agents — but it ships with only a CLI and terminal UI. ShoreGuard adds the missing management layer: a web-based control plane to register gateways, create sandboxes, edit policies, and approve access requests — across multiple gateways from a single dashboard.

Think of it like Rancher for Kubernetes, but for OpenShell gateways.

Why ShoreGuard?

OpenShell gives you secure sandboxes — ShoreGuard gives you control over them:

  • Visibility — see every gateway, sandbox, and policy in one dashboard instead of juggling CLI sessions
  • Guardrails — visual policy editor with revision history, so security changes are auditable, not ad-hoc
  • Approval flow — agents request network access, humans approve or deny in real-time
  • Multi-gateway — manage dev, staging, and production gateways from a single pane
  • Automation — REST API and Terraform provider for CI/CD pipelines and GitOps workflows
Channel Use case
Web UI Ops teams, dashboards, approval flows
REST API CI/CD pipelines, custom integrations
Terraform Provider Infrastructure as Code, GitOps

Where ShoreGuard fits

graph TB
    subgraph Orchestration
        PC[Paperclip]
    end
    subgraph Agents
        OC[OpenClaw]
        CC[Claude Code]
        CX[Codex]
    end
    subgraph Secure Runtime
        OS[NVIDIA OpenShell]
    end
    subgraph Management Plane
        SG["ShoreGuard<br/>Web UI · REST API · Terraform"]
    end
    subgraph Infrastructure
        DO[DigitalOcean / AWS / on-premise]
    end

    PC --> OC
    PC --> CC
    PC --> CX
    OC --> OS
    CC --> OS
    CX --> OS
    SG -- "gRPC / mTLS" --> OS
    OS --> DO
    SG --> DO

    style SG fill:#1a7f37,color:#fff,stroke:#1a7f37

Quick start

pip (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 for development.

Docker Compose (production)

git clone https://github.com/FloHofstetter/shoreguard.git
cd shoreguard
cp .env.example .env
# Edit .env — set POSTGRES_PASSWORD and SHOREGUARD_SECRET_KEY
docker compose up -d

Open http://localhost:8888 and complete the setup wizard. See the deployment guide for TLS, reverse proxy, and production hardening.

Features

  • Gateway management — register and monitor multiple remote OpenShell gateways with health probing, descriptions, and label-based filtering
  • Sandbox wizard — step-by-step creation with agent types, images, and presets
  • Visual policy editor — network rules, filesystem paths, process settings — no YAML
  • Approval flow — review agent-requested endpoint access in real-time
  • RBAC — Admin, Operator, Viewer roles with gateway-scoped overrides
  • Docker deployment — Dockerfile + docker-compose with PostgreSQL and health probes
  • Audit log — persistent, filterable, exportable audit trail
  • Terraform provider — declarative infrastructure-as-code
  • Webhooks & Notifications — Slack, Discord, Email, and generic webhook channels with HMAC-SHA256 signing
  • Prometheus metrics/metrics endpoint for Grafana, Datadog, and standard monitoring stacks
Screenshots
Policy Editor Network Policies Gateway Detail
Policy Editor Network Policies Gateway Detail

Documentation

Full documentation is available at flohofstetter.github.io/shoreguard.

Roadmap

Completed:

  • Multi-gateway management with health monitoring
  • RBAC — Admin, Operator, Viewer roles with gateway-scoped overrides
  • Sandbox wizard with community images and presets
  • Visual policy editor with revision history and diff viewer
  • Approval flow with real-time notifications
  • Terraform provider (separate repo)
  • Alpine.js reactive frontend with dark/light theme
  • Persistent audit log with export
  • Docker image + docker-compose with PostgreSQL
  • Health probes (/healthz, /readyz)
  • Stateless gateway routing (URL-based, no server-side selection)
  • Inference timeout configuration (OpenShell v0.0.22)
  • L7 query parameter matchers for network policies
  • Webhooks with HMAC-SHA256 signing
  • Notification channels (Slack, Discord, Email)
  • Prometheus /metrics endpoint
  • Justfile for common development tasks
  • Gateway descriptions and labels with API filtering

Planned:

  • DigitalOcean Marketplace integration
  • Paperclip adapter for agent orchestration
  • Multi-region gateway federation

Development

git clone https://github.com/FloHofstetter/shoreguard.git
cd shoreguard
uv sync --group dev
uv run shoreguard --local --no-auth

This starts ShoreGuard with SQLite, hot-reload, no login, and local gateway management. Create a gateway from the UI or use the openshell CLI.

Run checks with just:

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

Or manually:

uv run ruff check . && uv run ruff format --check . && uv run pyright && uv run pytest -m 'not integration'

See the contributing guide for details.

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.16.1.tar.gz (175.7 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.16.1-py3-none-any.whl (251.6 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for shoreguard-0.16.1.tar.gz
Algorithm Hash digest
SHA256 5bb1a380cf32f649a8734d1e2394eb6c994fd6de0c234d479043b49bfe82a125
MD5 3121b2433b899f62d33e2abb5da98925
BLAKE2b-256 4909b05a47793fc727c837f89542afe958fba2b4f34d0cff9ccb262ce2f9db22

See more details on using hashes here.

Provenance

The following attestation bundles were made for shoreguard-0.16.1.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.16.1-py3-none-any.whl.

File metadata

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

File hashes

Hashes for shoreguard-0.16.1-py3-none-any.whl
Algorithm Hash digest
SHA256 7c50cd5761d792170baf55683e528c96019d5e59bb82fc9bf233c45849c37976
MD5 3c0d867422bb8faa693bae89687ab14d
BLAKE2b-256 f1e4772c1dea75fffe40dbda825e98848b35580c7f5f65d7a6955e9cac80b591

See more details on using hashes here.

Provenance

The following attestation bundles were made for shoreguard-0.16.1-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