Skip to content
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.

TermUnit ofMeaning
benchsourceYour workspace, typically one Git repository, described by a single bench.yaml. Holds one or more assemblies. Nothing ships called “the bench”.
assemblydeploymentOne 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.
domainreuseA 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 (pkg for Go, crate for 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 register registers a service while bench domain create adds 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