API server
Gin-based REST API — sessions, runs, files, audit logs, key management.
Self-hosted secure runtime for AI agents.
Your agent asks for a tool. VaultRun runs it in an isolated Docker sandbox on your infra — with policy, limits, and a signed audit trail. No SaaS. No telemetry. No data leaving your network.
Agent asks. Sandbox runs. Audit sticks.
Illustrated walkthrough using the real API shapes — not a recorded customer run. Click a step, then verify the same trail on your own instance with the curl below.
After install, replay your audit trail (same endpoint the demo shows):
$ curl -sS -H "Authorization: Bearer $VAULTRUN_API_KEY" \ "http://localhost:8080/api/v1/audit?session_id=$SESSION_ID" # → { "audit_logs": [ { "action": "command.finished", "sig": "…" }, … ] }
Up and running in five commands.
$ git clone https://github.com/nickvd7/vaultrun && cd vaultrun $ cp .env.example .env # set MASTER_API_KEY to something strong $ make up # API + Postgres + Redis + dashboard $ make bootstrap-key # prints your first vr_... API key $ curl http://localhost:8080/health {"status":"ok"} # dashboard → http://localhost:3000
Prerequisites: Docker, Docker Compose, Go 1.25+.
One API between your agent and the blast radius.
┌──────────────────────────────────────────────────────────────┐
│ Your AI agent (Claude, GPT, custom, …) │
│ │
│ result = client.run(session_id, │
│ command="python", args=["analyze.py"]) │
└────────────────────────┬─────────────────────────────────────┘
│ API key
▼
┌──────────────────────────────────────────────────────────────┐
│ VaultRun API (your server, your infra) │
│ │
│ • isolated Docker container per session │
│ • exec API only — no shell injection │
│ • path traversal prevention in workspace │
│ • HMAC-signed audit trail │
│ • CPU / memory / timeout limits per session │
│ • network disabled by default │
└──────────────────────────────────────────────────────────────┘
Nine components, one repo.
Gin-based REST API — sessions, runs, files, audit logs, key management.
53 tools over stdio and HTTP. Claude, OpenAI, OpenRouter, custom agents.
The vaultrun command-line tool for sessions, files, runs and logs.
GitHub webhook → sandboxed CI with Slack / Teams notifications.
Next.js management UI with a server-side API proxy — keys never reach the browser.
Typed Go client and a Python client. Same API, your language.
OIDC (PKCE) + SAML 2.0 with org-aware RBAC. Okta, Azure AD, Google, Keycloak. VaultRun Enterprise.
Every action HMAC-signed and queryable. Tamper-evident by design.
Pluggable policy layer, OPA-ready. Decide what agents may run, centrally.
53 tools. Two transports. Any agent.
Pick your transport, copy the snippet, paste into the agent. Same tools either way.
{
"mcpServers": {
"vaultrun": {
"command": "/path/to/vaultrun-mcp",
"env": {
"VAULTRUN_BASE_URL": "http://localhost:8080",
"VAULTRUN_API_KEY": "vr_your_key"
}
}
}
}
$ MCP_TRANSPORT=http \ MCP_AUTH_TOKEN=your-secret-token \ VAULTRUN_BASE_URL=http://localhost:8080 \ VAULTRUN_API_KEY=vr_your_key \ ./vaultrun-mcp # POST /mcp — JSON-RPC 2.0 # Authorization: Bearer your-secret-token
Five lines to a sandboxed run.
Same API surface — switch language without rewriting the mental model.
# pip install vaultrun-sdk
from sandbox_sdk import Client
client = Client("http://localhost:8080",
api_key="vr_...")
s = client.create_session(
image="python:3.12-slim")
client.upload_file(s.id, "script.py",
open("script.py", "rb"))
r = client.run(s.id, command="python",
args=["script.py"])
print(r.stdout)
import vaultrun "github.com/nickvd7/vaultrun/sdk/go"
client := vaultrun.New(
"http://localhost:8080", "vr_...")
s, _ := client.CreateSession(ctx,
vaultrun.CreateSessionOptions{
Image: "python:3.12-slim"})
client.UploadFile(ctx, s.ID,
"script.py", scriptContent)
run, _ := client.Run(ctx, s.ID,
vaultrun.RunOptions{Command: "python",
Args: []string{"script.py"}})
fmt.Println(*run.Stdout)
Local workflows meet isolated execution.
Flowd observes local file workflows, detects patterns, and suggests automations you approve from the terminal. VaultRun runs agent code in Docker sandboxes with an audit trail. Together: observe → suggest → approve locally, then execute risky work in a container.
flowd (local) VaultRun (sandbox) observe · detect · suggest → create_session · run_command · audit flowctl approve MCP flowd_* tools (opt-in)
Paranoid by default. On purpose.
Full write-up: docs/security.md
Teams with an IdP?
OIDC / SAML SSO and org-aware RBAC — evaluate free, license for prod. No fake case studies; talk to us instead.Apache 2.0 core. Fork it, ship it, embed it.
The core — API server, sandbox runtime, CLI, MCP server (53 tools), CI runner, dashboard, and both SDKs — is Apache 2.0: run it commercially, modify it, or vendor the Go SDK straight into your agent. Enterprise SSO (OIDC + SAML) ships separately under a commercial license. Issues and pull requests welcome.
SSO for teams that already have an IdP.
VaultRun Enterprise adds OIDC (Authorization Code + PKCE) and SAML 2.0 to the self-hosted API — Okta, Azure AD, Google Workspace, Keycloak, AD FS, OneLogin — with org-aware RBAC and signed dashboard sessions. Eval is free; production needs a license. Requests land in mail@030.dev.
| Capability | Core (Apache 2.0) | Enterprise |
|---|---|---|
| API / sandboxes / MCP / SDKs / CI runner | included | included |
| API key auth | included | included |
| OIDC + SAML SSO | — | included |
| Org-aware IdP group → RBAC mapping | — | included |
| Dev / test / evaluation use | free | free |
| Production SSO | — | commercial license |
Dev and test use is free under the Enterprise License. Ask for evaluation access and follow the SSO setup guide.
request evaluation → read SSO setup ↗Ready for prod SSO? Tell us org, IdP, instances, and timeline — custom commercial quote (no public price list).
request a license →Pick up to three preferred times — we confirm by email. No calendar SaaS required.
propose times → general sales question →Procurement one-pager: enterprise.html · Use cases: use-cases.html · Demo script: demo-video-script.md
Enterprise, sales, or a walkthrough?
This form goes to mail@030.dev — for SSO evaluation, licenses, and calls. Bugs & features → GitHub Issues (use the templates). Security → private only: SECURITY.md (not this form, unless intent = security report).