Documentation menu

hostwright.yaml

The manifest format — the fields shown in the example, what they mean, and what is still under design.

A stack is declared in a single hostwright.yaml file. This page documents the fields used in the example below. Anything not listed here is still under design and should not be relied on.

Annotated hostwright.yaml showing project, services, image, ports, env, health, and restart fields.
The fields documented on this page, called out on a sample manifest.

Example

project: api-local

services:
  api:
    image: ghcr.io/example/api:latest
    ports:
      - "8080:8080"
    env:
      APP_ENV: development
    health:
      command: ["curl", "-f", "http://localhost:8080/health"]
      interval: 10s
    restart:
      policy: on-failure

  redis:
    image: redis:7
    ports:
      - "6379:6379"

Fields

FieldTypeMeaning
projectstringName of the project. Scopes ownership and the resources in this stack.
servicesmapOne entry per service, keyed by service name.
services.<name>.imagestringThe container image reference to run.
services.<name>.portslist of stringsPort mappings in "host:container" form.
services.<name>.envmapEnvironment variables passed to the service.
services.<name>.health.commandlist of stringsCommand run to check health (argv form).
services.<name>.health.intervaldurationHow often the health command runs, e.g. 10s.
services.<name>.restart.policystringRestart behavior. on-failure is shown above.

Notes

  • Images should provide linux/arm64. On Apple silicon, an image that only resolves to amd64 runs under Rosetta and is allowed only by explicit policy.
  • Health checks are honest about the runtime: a check can only report what Apple container can observe.

Open questions

  • The canonical duration format and which fields accept durations.
  • Whether the manifest gains an explicit schema version field before the first release.
  • How secret and config references are expressed without ever putting secrets in the file. See the safety model.