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.2.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.2-py3-none-any.whl (251.6 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: shoreguard-0.16.2.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.2.tar.gz
Algorithm Hash digest
SHA256 8b7bb245e4e295df412113ab5143d39e04a0727430f53fc1b48f6a75abcf8d73
MD5 3da88ec10659ffd09dbeda2f21e5937e
BLAKE2b-256 7bf475d524bf74bc22b039a59b5e5062f095f6cee8c48f3cea23345a482f1435

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: shoreguard-0.16.2-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.2-py3-none-any.whl
Algorithm Hash digest
SHA256 e913911d8c111f17f0c7fc6a57fa3e2260aaa953c72f87cd63024921e0e0ce5b
MD5 a545e5edd3dc6e2a146c638d3703ae93
BLAKE2b-256 d884c796a88aa8eb1eee410cda08934da031f2a719b5bf190af7ca8888736397

See more details on using hashes here.

Provenance

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