Open source control plane for NVIDIA OpenShell
Project description
ShoreGuard
Open-source control plane for NVIDIA OpenShell. Manage AI agent sandboxes, gateways, and security policies from a web UI, REST API, or Terraform.
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 —
/metricsendpoint for Grafana, Datadog, and standard monitoring stacks
Screenshots
| 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
/metricsendpoint - 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
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5bb1a380cf32f649a8734d1e2394eb6c994fd6de0c234d479043b49bfe82a125
|
|
| MD5 |
3121b2433b899f62d33e2abb5da98925
|
|
| BLAKE2b-256 |
4909b05a47793fc727c837f89542afe958fba2b4f34d0cff9ccb262ce2f9db22
|
Provenance
The following attestation bundles were made for shoreguard-0.16.1.tar.gz:
Publisher:
release.yml on FloHofstetter/shoreguard
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
shoreguard-0.16.1.tar.gz -
Subject digest:
5bb1a380cf32f649a8734d1e2394eb6c994fd6de0c234d479043b49bfe82a125 - Sigstore transparency entry: 1234024787
- Sigstore integration time:
-
Permalink:
FloHofstetter/shoreguard@14c44d615f0f274a6454c3c35346c331a5199d25 -
Branch / Tag:
refs/tags/v0.16.1 - Owner: https://github.com/FloHofstetter
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@14c44d615f0f274a6454c3c35346c331a5199d25 -
Trigger Event:
push
-
Statement type:
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7c50cd5761d792170baf55683e528c96019d5e59bb82fc9bf233c45849c37976
|
|
| MD5 |
3c0d867422bb8faa693bae89687ab14d
|
|
| BLAKE2b-256 |
f1e4772c1dea75fffe40dbda825e98848b35580c7f5f65d7a6955e9cac80b591
|
Provenance
The following attestation bundles were made for shoreguard-0.16.1-py3-none-any.whl:
Publisher:
release.yml on FloHofstetter/shoreguard
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
shoreguard-0.16.1-py3-none-any.whl -
Subject digest:
7c50cd5761d792170baf55683e528c96019d5e59bb82fc9bf233c45849c37976 - Sigstore transparency entry: 1234024819
- Sigstore integration time:
-
Permalink:
FloHofstetter/shoreguard@14c44d615f0f274a6454c3c35346c331a5199d25 -
Branch / Tag:
refs/tags/v0.16.1 - Owner: https://github.com/FloHofstetter
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@14c44d615f0f274a6454c3c35346c331a5199d25 -
Trigger Event:
push
-
Statement type: