hull-workspace.yaml
Groups several hull packages from one directory tree into a workspace that
installs, upgrades, diffs, or uninstalls in dependency order with a single
command. The hull workspace commands read it. Each member stays a separate
release — use a workspace for a repo of related packages, and use layers in
hull.yaml when pieces should merge into one release.
Minimal example
apiVersion: hull/v1
members:
- name: postgres
path: ./postgres
- name: api
path: ./api
dependsOn: [postgres]
hull workspace install then installs postgres before api.
Fields
The file lives at the workspace root; member paths resolve against that root.
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
apiVersion |
string | no | — | Format identifier. Use hull/v1. Parsed but not enforced. |
members |
list | yes | — | The packages in the workspace; must be non-empty. See below. |
defaults |
object | no | — | Values applied to any member that leaves the field unset. See defaults. |
Member fields
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
name |
string | yes | — | Identifier used in CLI output and dependsOn references, unique within the workspace. |
path |
string | yes | — | Path to the member package, relative to the workspace root (or absolute). The directory must contain a hull.yaml. |
namespace |
string | no | defaults.namespace |
Namespace this member’s release installs into. |
profile |
string | no | defaults.profile |
Profile to activate when rendering this member. |
dependsOn |
string list | no | — | Names of other members that must be applied before this one. Hull computes the topological order; cycles are reported as errors. |
atomic |
bool | no | defaults.atomic, else true |
Roll back this member’s install if it fails. Set false to leave a failed install in place for inspection. |
wait |
bool | no | defaults.wait, else true |
Wait for this member’s resources to become Ready before moving on. |
defaults fields
defaults fills any member field the member itself omits.
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
namespace |
string | no | — | Default namespace for members without one. |
profile |
string | no | — | Default profile for members without one. |
atomic |
bool | no | — | Default atomic setting for members without one. |
wait |
bool | no | — | Default wait setting for members without one. |
Full example
apiVersion: hull/v1
# Applied to every member unless the member overrides the field.
defaults:
namespace: platform
atomic: true
wait: true
members:
- name: postgres
path: ./postgres
- name: redis
path: ./redis
- name: api
path: ./services/api
profile: production
dependsOn: [postgres, redis] # both must be Ready first
- name: worker
path: ./services/worker
namespace: platform-jobs # overrides defaults.namespace
dependsOn: [postgres]
wait: false # long-running; don't block on Ready
hull workspace plan prints the order (members with no dependency between them
keep declared order):
1. postgres (path=./postgres, ns=platform, profile=)
2. redis (path=./redis, ns=platform, profile=)
3. api (path=./services/api, ns=platform, profile=production)
4. worker (path=./services/worker, ns=platform-jobs, profile=)
hull workspace install applies them in that order; uninstall reverses it.
See also
hull workspace plan— preview the order.hull workspace install/upgrade/uninstall/diff.hull workspace status.- hull-releases.yaml — releases of unrelated packages.
- Workspaces guide.