Glossary
Glossary
The four words that carry the most weight in bench.yaml, the CLI, and the
docs. Read this first if a command’s --help assumes a term you haven’t met.
| Term | Unit of | Meaning |
|---|---|---|
| bench | source | Your workspace, typically one Git repository, described by a single bench.yaml. Holds one or more assemblies. Nothing ships called “the bench”. |
| assembly | deployment | One independently deployable OCI image, running as one process. Composes one or more same-language domains. Its name becomes the Runway service name and image sub-repository. |
| domain | reuse | A group of endpoints in an assembly sharing one code unit and one set of backends: inbound (endpoints) → handler (your code) → outbound (backends). The unit that can be sourced into several assemblies via a Git source. |
| service | — | A deployment target registered with the Release Platform and delivered by Runway. An assembly produces one; bench register creates the entry. Deliberately not a bench.yaml entity. |
Notes
- An assembly is a build-time composition, not a source location: the same domain can belong to several assemblies. That’s why the assembly is the unit of deployment and the bench the unit of source.
- Most assemblies have exactly one domain, so you rarely name it explicitly. Declare a second only when one process bundles two independent parts, like a read and a write side sharing a port.
- A domain isn’t a source directory. The handler’s declared location (
pkgfor Go,cratefor Rust) is what maps to disk, so two domains can share one handler crate. See LB-D20. - “Service” used to name what is now a domain, so it meant both the deployed
unit and a piece of one. Reserving it for the deployed unit is why
bench registerregisters a service whilebench domain createadds a domain. See #52. - “Domain” is chosen to fit where the boundary is headed: the intended unit for an enforceable I/O policy (its own identity, allowed egress, privileged ops). That enforcement isn’t built yet.
How they nest
bench (one repo, one bench.yaml)
└── assembly (one OCI image, one process) → deployed as a service
└── domain (inbound → handler → outbound)
└── handler (your code; keyed by pkg/crate)Related
- ARCHITECTURE.md — why the assembly is the deployment unit and the bench the source unit
- proto.md — the generated schema reference
- LB-D5 — one runtime per assembly
Last updated on