Contained AI agents on your servers.
One reviewed file decides what an agent can reach and which credentials it can use. reef holds every agent to it, in its own microVM on your own servers.
Open source, MIT license · reef.clawbits.ai
- 02The problemWhat changed, and why existing controls miss it
- 03The productRoles, microVMs, three controls
- 06ProofClawbits, and the runtime underneath
- 09AppendixDetail on any of it, one click away
The problem
Agents act on their own
They are long-running software with access to your systems, not chat windows.
- They run code and browse
- Agents run commands and open websites with no person approving each step.
- They hold credentials
- A key an agent can read is a key it can print, log or send somewhere else.
- Their settings are not a boundary
- Anything reaching the agent, including its own input, can talk it out of them.
Appendix: Questions before an agent goes live
The product
What reef is
A policy layer for agents you run yourself. The rules are applied by the runtime, not by the agent.
One file per agent type: image, resources, the domains it may reach, the keys it may use.
Every agent gets its own kernel, its own disk and a volume that outlives it.
No daemon. A command reconciles the VM to the record, then exits.
Linux with KVM or an Apple Silicon Mac. MIT licensed, nothing phones home.
Appendix: What a role defines · Architecture
The product
From an approved role to a running agent
A platform team defines agent types. Teams launch agents from them without a ticket.
The platform team writes a role and merges it.
Teams create agents from approved roles, no ticket.
Each agent runs in its own microVM, held to its role.
Appendix: What a role defines · Where teams use reef
The product
Three controls, enforced outside the agent
None of them depends on the agent's own configuration or good behaviour.
The allowlist is checked outside the guest. A name that is not listed never resolves.
A secret is bound to one domain. The placeholder is swapped for the value on the way out.
Agent ports bind to 127.0.0.1, which no agent can reach, whatever its role allows.
Appendix: Network allowlist · Credentials · Terminals · Browser access
Proof
Clawbits, a team workspace built on reef
Any member launches an agent from the app and it joins their channels. The agents run on the organization's own servers.

They pick a role and a machine in the app. No ticket, and no access to the server.
Agents run on servers the customer owns, not on Clawbits infrastructure.
One private git repository is the whole channel between the two systems.
Appendix: What the integration uses · How the systems communicate
Proof
Built on microsandbox
Isolation comes from microsandbox, an open-source microVM runtime under the Apache-2.0 license. We chose it because it combines the four properties agents need in one runtime.
| Containers | Traditional VMs | microsandbox | |
|---|---|---|---|
| Own kernel per agent | Shared host kernel | Yes | Yes |
| Runs standard container images | Yes | Not directly | Yes |
| Blocks unapproved domains outside the agent | Needs extra tooling | Needs extra tooling | Built in |
| Keeps API keys out of the agent | Needs extra tooling | Needs extra tooling | Built in |
Several runtimes advertise similar features. In our August 2026 review, each alternative fell short on something reef needs. reef adds the layer above: role files, reviewed versions, fleets, durable agent records and one console across hosts.
Appendix: Architecture · Status and limits
Summary
What organizations get
- Containment
- Each agent is isolated in its own microVM and reaches only approved services.
- Governance
- Roles are reviewable files, and every agent maps to a role version.
- Self-service
- Teams launch agents from approved roles without waiting on tickets.
- Ownership
- Agents run on your servers. reef is open source under the MIT license.
Appendix: Works with what you already run · Status and limits
Appendix
Detail on anything above. Every line jumps straight to its slide, in the PDF as well as the browser.
- Questions before an agent goes live
- What a role defines
- Network access is an allowlist
- Credentials stay on the host
- Terminals through your SSH CA
- Browser access through single sign-on
- Updates and secret rotation
- Architecture
- What each change affects
- The terminal console
- Where teams use reef
- Works with what you already run
- Clawbits: what the integration uses
- Clawbits: how the systems communicate
- Status and limits
- Documentation
Appendix
Questions before an agent goes live
Security and platform teams need clear answers. reef turns each one into a setting you can review.
- What can it reach?
- Only the domains in its role. Opening the whole internet is an explicit setting.
- Which credentials can it use?
- Keys named in the role stay on the host and work toward one service.
- Who approved its setup?
- Roles are files in git. Protect the branch and every change is reviewed.
- Who can use it?
- A sign-on proxy decides who reaches it. A terminal needs a certificate from your SSH CA.
Appendix
What a role defines
A reviewer reads it once. Every agent created from it inherits it.
- Coding agent
- roles/openclaw-coding.toml
- Software
- OpenClaw, pinned to an exact image digest
- Resources
- 4 vCPU · 8 GB memory · 20 GB disk
- Network
- openrouter.ai · github.com · api.github.com · registry.npmjs.org
- Credentials
- An OpenRouter key, usable only toward openrouter.ai
- Storage
- 10 GB that survives restarts and upgrades
Checked outside the agent, so it holds even when the agent ignores its own settings.
The agent holds a placeholder. The real value is added on the way out.
A new role version flags every agent still running the old one.
Appendix
Network access is an allowlist
A role lists the domains an agent may reach. Everything else is refused at DNS, outside the guest, so the rule holds even if the agent ignores its own settings.
egress = ["openrouter.ai"]Opening the whole public internet takes an explicit *, and role apply warns when a role asks for it.
Appendix
Credentials stay on the host
A secret is a reference bound to one domain. The agent holds a placeholder; the runtime swaps in the value on the way out.
# inside a real agent VM
$ echo [$FAKE_KEY]
[$MSB_FAKE_KEY]reef secret rotate pushes a changed value into every running agent that binds it. Each agent records the key and the reference, never the value.
Declaring a secret turns on TLS interception for the whole VM, and the shipped roles then skip browser certificate checks. What an egress allowlist costs
Appendix
Terminals through your SSH CA
reef adds no accounts, keys or auth of its own. Your certificate authority says who someone is, and reef decides which agents that identity may open.
Certificates come from the SSO flow your people already use. Nobody registers a key with reef.
sshd always runs reef agent serve, which opens an agent only when a certificate principal matches its owner.
Appendix
Browser access through single sign-on
reef publishes agent ports on loopback only. Cloudflare Access handles sign-in and cloudflared dials out from the host, so nothing connects in.
- The browser opens the agent's hostname, which resolves to Cloudflare.
- Access signs the person in with your identity provider, and nothing else.
- cloudflared checks the signed token on the tunnel it dialled out from the host.
- It forwards to 127.0.0.1, and the agent opens a session under that email.
Cloudflare is one option. Any sign-on proxy that is the only path to the port works.Setup guide
Appendix
Updates and secret rotation
A role change builds the new VM and swaps only when it is ready. Secret values come from the store you already run.
reef://vault/api-key. The host resolves them through 1Password, OpenBao or AWS.Appendix
Architecture
reef is a command-line tool with no daemon. Each command updates the agent record, compares it with the running VM and applies the difference.
Every mutating command runs one reconcile pass, then returns.
A pure function turns 18 cases into five actions: create, modify, start, stop, remove.
A single module names a microsandbox type, pinned to an exact release.
Agent records outlive their VMs. A VM is rebuilt from its record.
Appendix
What each change affects
Volumes are the durable part. Everything else is rebuilt from the record.
| Change | What reef does | System disk | Volumes | Host port |
|---|---|---|---|---|
| Stop and start | Stops and starts the VM | Kept | Kept | Kept |
| Environment change | Restarts the VM in place | Kept | Kept | Kept |
| New role version | Replaces the VM | Replaced | Kept | Kept |
| Remove agent | Removes the VM | Removed | Kept | Released |
| Remove with volumes | Removes the VM and its volumes | Removed | Deleted | Released |
Appendix
The terminal console
reef ui shows every agent across your hosts: role version, resources, network policy, ports and history.

One console merges agents from independent hosts, reached over your own ssh.
Role version, image, owner, resources, volumes, egress policy and ports.
Start, stop, update, remove and open a terminal into the agent.
Appendix
Where teams use reef
Each example matches a role that ships in the repo.
Works in code repositories and installs packages.
model providerGitHubnpm
Works in the marketing stack and nowhere else.
model providerHubSpotLinkedIn
A private Hermes agent per person, each in its own microVM.
model provider
Launched from Clawbits, joining your channels as a member.
public internet
Appendix
Works with what you already run
- Identity
- Cloudflare Access, or any sign-on proxy such as oauth2-proxy or Tailscale
- Change control
- Git and pull request review, with GitHub for the Clawbits integration
- Secrets
- 1Password, OpenBao or AWS Secrets Manager, read when the VM is created
- Terminals
- Your existing SSH certificate authority
- Agents
- OpenClaw and Hermes, with roles that ship in the repo
- Servers
- Linux with KVM and glibc 2.39 or newer, x86_64 or ARM, and Apple Silicon Macs
Appendix
Clawbits: what the integration uses
Each thing the product needed maps onto a primitive reef already had.
- What Clawbits needed
- What it uses
- Launch an agent without touching the server
- One fleet file per agent, committed to a branch every host pulls
- One definition for every agent in the org
- The clawbits-openclaw role, reviewed once and pinned to an exact image
- An agent that survives a rebuild
- Named volumes: it keeps its own key and comes back as the same agent
- A terminal only for the person who owns it
- owner in the fleet file, checked by agent serve against the certificate
- No way in to a customer machine
- The host pulls and pushes through its own deploy key; nothing connects in
Identity is a one-time signup token, valid for seven days. The agent spends it at first boot and keeps its own key on its state volume, so the file is dead weight afterwards and a recreate returns as the same agent.
Appendix
Clawbits: how the systems communicate
Clawbits writes agent files to your private repository. Each host pulls every 30 seconds and pushes its status back.
One private repository, through a token you scope to it
The same repository, through its own deploy key
Outbound only, to the domains its role allows
Nothing connects in to the host
Appendix
Status and limits
- Open source under the MIT license
- Linux with KVM and glibc 2.39 or newer, and Apple Silicon Macs
- Roles for OpenClaw and Hermes that ship in the repo
- The Clawbits integration, over git
- Terminals through the microsandbox SSH server, no per-person enrollment
- reef reconcile brings agents back after a reboot or a crash
- reef secret rotate pushes a changed key into running agents
- reef migrate moves a 0.14 host onto the current runtime, volumes kept
- Secret values sit unencrypted on the host, in two places; reef doctor warns
- No HTTP API yet, and it will not ship without auth
- A role upgrade replaces the system disk; volumes carry over
- microsandbox is pre-1.0, pinned exactly, with no support for older releases
Appendix
Documentation
Everything in this deck is documented, and the source is public.
Start
reef.clawbits.aiArchitectureEgress allowlists in practiceSetup
Prepare a hostAgents
OpenClawHermesEnterprise
Set up a teamBrowser access with CloudflareScopes inside an agentTerminal accessreef on GitHub · microsandbox on GitHub · MIT license