Reference / component
A reusable, versioned definition of one graph node: a workload this platform runs (its source, lifecycle, endpoints, storage and health) or an external node it does not, and the configuration contract either consumes and publishes.
JSON Schema · Specification · Examples · Source
This reference is generated from the schema bundle and is informative. Where it differs from the specification, the specification governs. A documented default is an annotation: no validator inserts it.
Structural and type validation only — cross-document reference resolution, slug/directory agreement, and platform capability checks are separate validation layers. See spec.md.
A reusable, versioned definition of one graph node: a workload this platform runs (its source, lifecycle, endpoints, storage and health) or an external node it does not, and the configuration contract either consumes and publishes.
Structural and type validation only — cross-document reference resolution, slug/directory agreement, and platform capability checks are separate validation layers. See spec.md.
Document kind discriminator. Must be COMPONENT.
Version of the Musher specification this document is written against.
spec.md §5.1. Exactly one of dockerfile and buildpacks says how the source is built; arguments apply to either.
Exactly one of dockerfile or buildpacks is present. The key present selects the form.
Build arguments keyed by argument name, injected into the image build context (Docker ARG). Build-time configuration only; runtime configuration rides on the workload's envVars and inputs.
Build with Cloud Native Buildpacks.
Build with a Dockerfile, at this path relative to the repository root.
Buildpacks builder image.
Existing input receiving the connection apiKey role.
Existing input receiving the connection baseURL role.
Existing input receiving the connection model role.
Required protocol features. Omission requires no optional capabilities.
Required client protocol, independent of upstream vendor.
Atomic connection requirements; each member input has exactly one owner. See spec.md §6.4.
Typed input declarations keyed by input name.
Typed output declarations keyed by output name.
Protocol served on the port: HTTP, HTTPS, WS, GRPC, TCP, or UDP.
Port the workload listens on, where traffic for this endpoint is forwarded. Never the public port, which the platform allocates. A port below 1024 is structurally valid; admission may reject it as a capability check.
spec.md §5.1. Exactly one of branch and commit.
Exactly one of branch or commit is present. The key present selects the form.
Branch to build from. A request, not a pin: the branch moves.
Commit to build from. Identifies source, not every build input.
How the repository is built into an image. Required: a Git source has no image until something builds one, and leaving the strategy implicit makes the resulting image depend on the builder rather than on this document.
Branch or commit to build from. Omitted, the repository default branch.
Git repository URL the platform builds into an image.
Staged health probes: startup, readiness, liveness.
Aliveness gate; failure restarts the workload. Optional.
Traffic gate; failure pulls the replica from routing without a restart. Required for a SERVICE exposing a public endpoint.
Initialization gate; failure means not-yet-started. Optional.
An HTTP request the platform sends; a 200 to 399 status succeeds.
Named endpoint serving HTTP or HTTPS.
Absolute HTTP path the platform requests.
OCI image reference the workload runs from. Must carry a tag or an @sha256 digest; a bare name is an implicit :latest and shifts under the registry.
Lookahead-free so it compiles under RE2 as well as ECMA-262. The tag colon is the one after the final slash, which is what keeps a registry port (localhost:5000/nginx) from reading as a tag. Only the grammar is here: the floating-tag blocklist stays a semantic rule. See spec.md §5.1.
Logical fallback used only when no binding is declared.
What this input means.
spec.md §6 COMP-DESC-001. REQUIRED, and the component is its only home: a blueprint parameter carries no description of its own and shows this one, so a value is described once, by the document that needs it.
Optional presentation annotation, not a value constraint.
Whether absence is forbidden; defaults to true.
Logical JSON value contract.
True when the value is secret material: handled as a secret reference, masked in UIs, never echoed back.
Environment destination; required on workload inputs.
Environment variable the resolved value is bound into at runtime materialisation (e.g. ADMIN_EMAIL). Uppercase letters, digits, and underscores; must not start with a digit.
Identity and description of a component document. The name is the file stem.
What this component is, in one or two plain-text sentences.
spec.md §4. Plain text, never rendered as Markdown, and bounded like a listing summary: it is one or two sentences a composer reads beside a node, not documentation.
Lineage revision of this component. Required (never defaulted) so the component's content is a pure function of this file, and it is the revision the item's blueprint nodes pin.
What this output means.
Optional presentation annotation.
Logical JSON value contract.
True when the value is secret material: handled as a secret reference, masked in UIs, never echoed back.
Where the output value comes from.
Exactly one of value, input, endpoint with property, or template is present. The key present selects the form.
endpoint requires property.
property requires endpoint.
Own endpoint whose allocated address property is read.
Own input forwarded as this output, keeping its sensitivity.
Address property of the named endpoint.
String with ${{ self.endpoints.
Logical non-secret literal value.
spec.md §5.4. The mechanism is the key that is present, as in a Kubernetes probe. HTTP is the only mechanism in v1; another is added as a sibling key.
Consecutive failures required to consider the probe failing.
Seconds to wait after start before the first probe.
Seconds between consecutive probe attempts.
Consecutive successes required to consider the probe passing.
Seconds to wait for a probe response.
Five-field cron expression, evaluated in UTC, on which the JOB recurs.
spec.md §5.7. Five fields (minute, hour, day of month, month, day of week) separated by one or more spaces or tabs, evaluated in UTC. The field count is structural so a seconds field or an @-macro is rejected rather than read two ways. The grammar and range of each field are a semantic rule of spec.md §5.7 (ERR_INVALID_SCHEDULE).
Exactly one of image or git is present. The key present selects the form.
A Git repository the platform builds into an image.
When type is EXTERNAL, contract is required and is constrained by properties, required.
When type is EXTERNAL, workload must not be present.
Otherwise, contract is constrained by properties.
Otherwise, workload is required.
When type is SERVICE, workload is constrained by properties, required.
When type is JOB, workload is constrained by properties, required.
Otherwise, workload is constrained by properties.
The composition contract: typed inputs the component needs and outputs it publishes.
Category of the node: SERVICE (long-running, request-driven, at least one endpoint), WORKER (long-running, not request-driven; endpoints optional and never public), JOB (runs to completion, once per rollout or on a schedule), or EXTERNAL (not run by this platform).
How the platform runs the component: source, command, endpoints, environment, storage and health. Required unless type is EXTERNAL, and forbidden when it is.
When type is array, items is required.
When type is object, additionalProperties is required.
When type is object, properties is required.
When type is string, additionalProperties must not be present.
When type is string, exclusiveMaximum must not be present.
When type is string, exclusiveMinimum must not be present.
When type is string, items must not be present.
When type is string, maxItems must not be present.
When type is string, maximum must not be present.
When type is string, minItems must not be present.
When type is string, minimum must not be present.
When type is string, properties must not be present.
When type is string, required must not be present.
When type is string, uniqueItems must not be present.
When type is number, additionalProperties must not be present.
When type is number, items must not be present.
When type is number, maxItems must not be present.
When type is number, maxLength must not be present.
When type is number, minItems must not be present.
When type is number, minLength must not be present.
When type is number, pattern must not be present.
When type is number, properties must not be present.
When type is number, required must not be present.
When type is number, uniqueItems must not be present.
When type is integer, additionalProperties must not be present.
When type is integer, items must not be present.
When type is integer, maxItems must not be present.
When type is integer, maxLength must not be present.
When type is integer, minItems must not be present.
When type is integer, minLength must not be present.
When type is integer, pattern must not be present.
When type is integer, properties must not be present.
When type is integer, required must not be present.
When type is integer, uniqueItems must not be present.
When type is boolean, additionalProperties must not be present.
When type is boolean, exclusiveMaximum must not be present.
When type is boolean, exclusiveMinimum must not be present.
When type is boolean, items must not be present.
When type is boolean, maxItems must not be present.
When type is boolean, maxLength must not be present.
When type is boolean, maximum must not be present.
When type is boolean, minItems must not be present.
When type is boolean, minLength must not be present.
When type is boolean, minimum must not be present.
When type is boolean, pattern must not be present.
When type is boolean, properties must not be present.
When type is boolean, required must not be present.
When type is boolean, uniqueItems must not be present.
When type is null, additionalProperties must not be present.
When type is null, exclusiveMaximum must not be present.
When type is null, exclusiveMinimum must not be present.
When type is null, items must not be present.
When type is null, maxItems must not be present.
When type is null, maxLength must not be present.
When type is null, maximum must not be present.
When type is null, minItems must not be present.
When type is null, minLength must not be present.
When type is null, minimum must not be present.
When type is null, pattern must not be present.
When type is null, properties must not be present.
When type is null, required must not be present.
When type is null, uniqueItems must not be present.
When type is array, additionalProperties must not be present.
When type is array, exclusiveMaximum must not be present.
When type is array, exclusiveMinimum must not be present.
When type is array, maxLength must not be present.
When type is array, maximum must not be present.
When type is array, minLength must not be present.
When type is array, minimum must not be present.
When type is array, pattern must not be present.
When type is array, properties must not be present.
When type is array, required must not be present.
When type is object, exclusiveMaximum must not be present.
When type is object, exclusiveMinimum must not be present.
When type is object, items must not be present.
When type is object, maxItems must not be present.
When type is object, maxLength must not be present.
When type is object, maximum must not be present.
When type is object, minItems must not be present.
When type is object, minLength must not be present.
When type is object, minimum must not be present.
When type is object, pattern must not be present.
When type is object, uniqueItems must not be present.
Smallest allocation the component can run with. The blueprint allocates at least this.
Absolute path where the volume is mounted in the workload.
True when the volume is mounted read-only.
Arguments the workload runs, as a list, with no shell. Replaces the image CMD and keeps its ENTRYPOINT. Required for a JOB.
spec.md §5. Exec form: each item is one argument and no shell parses them. It replaces the image CMD and keeps its ENTRYPOINT, which is what command means in Docker and Compose.
Named ports the workload listens on. Required on a SERVICE, optional on a WORKER (never exposed publicly), forbidden on a JOB.
Intrinsic non-secret environment constants, keyed by variable name. Configurable values are inputs with a target, supplied by the blueprint.
Staged health probes (startup, readiness, liveness). Omitted when none are defined; forbidden on a JOB.
Makes a JOB recur. Omitted, the job runs once per rollout. Forbidden on every other type.
Where the workload image comes from: a pinned image, or a Git repository the platform builds.
Persistent storage the workload mounts, with the minimum size each needs.