The sandbox
A real Linux box with a persistent /workspace. The agent owns it — but no credentials ever land here.
# inside the sandbox
$ echo $GH_TOKEN
(empty) RunVault gives your AI agent a persistent Linux box, hooks it into Slack, Telegram, and Discord, and routes every credential through a server-side proxy. Run kubectl, hit internal APIs, ship runbooks — without leaking secrets.
acme/api with the p0 label?
acme/api:
You've tried these. So have we. Each one solves a slice; none solves the whole.
Six weeks of plumbing. Brittle tool calls. Nobody on the team wants to own it.
Polished UI — but the agent can't
kubectl get pods
. Workflow tools dressed as agents.
Workflows are a graph of nodes. Agents are an open-ended loop. The shapes don't match.
The inspiration. A single user with a real shell — great. But built for one developer at their desk.
A credential proxy sits between the sandbox and the outside world. Three boundaries, one rule: the token never enters the agent's environment.
A real Linux box with a persistent /workspace. The agent owns it — but no credentials ever land here.
# inside the sandbox
$ echo $GH_TOKEN
(empty) Holds the credentials. Injects them server-side. Blocks any host that isn't on the per-credential allow-list.
# on the way out
Authorization: Bearer ghp_••••
↑ injected · host allow-listed Every call leaves a trail — actor, tool, target, status. Blocked attempts are logged the same way.
# every call, server-side
✓ alex · http · github.com · 200 /workspace survives restarts. Real shell, real filesystem, real package manager.
Manage integrations, schedules, members, and skills through the runvault CLI — just like the agent does.
Plug in any MCP-compatible tool server. Existing internal tooling becomes available to the agent.
Secrets injected server-side, never in the sandbox. Per-credential hostname allow-list blocks exfiltration to attacker hosts.
Owner / admin / member / viewer. Per-user access to specific integrations. Least privilege by default.
Every tool call, credential use, member change, RBAC mutation — logged with actor and metadata.
Slack, Telegram, Discord, web, and webhooks. One agent, one memory — across all of them.
Cron jobs and one-shot tasks the agent owns. Daily standups, weekly cleanup, on-call rotation reports.
Click any message to see the exact tool calls, token counts, latency, and full system prompt.
Anthropic, OpenAI, Google Gemini. Switch model mid-conversation — different jobs, different brains.
Bring your own keys. Zero markup. Zero lock-in. Switch providers per conversation.
Skills are stored in the tenant DB, versioned and reviewable. Edit them via the CLI — every change shows up in the audit log.
Everything the dashboard does, the runvault CLI does — and it lives inside the sandbox. The agent uses the same surface you do.
An honest table. We've used the others — they're good at what they do; what they do is not this.
| RunVault | OpenClaw | Dust / Lindy | n8n / Dify | |
|---|---|---|---|---|
| Real Linux shell | Yes | Yes | — | — |
| Persistent /workspace | Yes | Yes | — | — |
| Server-side credential proxy | Yes | — | — | — |
| Slack / Telegram / Discord | Yes | — | Yes | Partial |
| Multi-user, RBAC, grants | Yes | — | Partial | — |
| Full audit log | Yes | Partial | Partial | Partial |
| Schedules · cron | Yes | — | Yes | Yes |
| BYOK (no markup) | Yes | Yes | — | Partial |
| Runs as a service | Yes | — | Yes | Yes |
We're onboarding a small batch of teams every week. Tell us a bit about what you'd build — we'll get back within 48 hours with a code or a polite "not yet."
Tell us what you'd build and we'll get back within 48 hours.