MenuClose
One Compose project per team
The control plane turns your files into a Docker Compose project and has no part in the traffic after that. The processes that talk to your chain are the upstream binaries as published.
Inside a stack
| Process | Image | Role |
|---|---|---|
| Monitor | openzeppelin/openzeppelin-monitor:v1.6.0 | Watches blocks on your networks, evaluates your monitors/, fires your triggers/. |
| Relayer | openzeppelin/openzeppelin-relayer:v1.8.0 | Takes transaction requests on its API, prices them, signs through your KMS, submits, tracks status, and posts webhooks. |
| Redis | redis:bookworm | The relayer's transaction store and nonce counter, with append-only persistence, so a restart keeps pending transactions. One per team. |
| Receiver | none | Webhooks go to your endpoint, signed with your WEBHOOK_SIGNING_KEY. Nonceworks is not in that path. |
The control plane
- Unpacks your export, checks that every file parses and that every monitor references a network and triggers that exist, and lists every secret reference it finds (
environmentfor the Monitor,envfor the relayer). - Writes the secret values you send, encrypted to the age key, into two environment files, one per container (mode 0600). The Monitor gets only what its configuration references; provider credentials go to the Relayer alone. Credentials and tokens never land in
config/; RPC URLs do, because Relayer 1.8.0 takes them only as plain strings. The relayer config it accepts refuseslocalsigners and any plain-text key field; onlyaws_kms,google_cloud_kmsandturnkeypass. - Recreates only the containers whose inputs changed, so a Monitor config change restarts the Monitor alone (it has no hot reload), and exposes status and logs for that project only, behind an admin token.
Boundaries
Each team has its own containers, network, Redis, environment and logs. The host and the Docker daemon are shared, and we have access to all of it. Your key is never on the host.
Network
A stack only needs to reach your RPC URLs, your KMS endpoint, and your webhook and chat endpoints. Other outbound traffic is not blocked today.
Validator report
The validator page shows the control plane's report on a sample export.