Documentation menu

Getting started

What Hostwright can run today, and the intended workflow toward declare, validate, plan, and apply.

This page separates the current Phase 2 command surface from the intended first supported release workflow.

Requirements

Hostwright targets one environment deeply rather than many shallowly:

  • An Apple silicon Mac (arm64).
  • macOS 26 or later. Earlier macOS versions are out of scope for the first release because of Apple container networking limitations.
  • Apple container installed and working, with its system services available.
  • Container images that provide a linux/arm64 variant. amd64/Rosetta is allowed only by explicit manifest policy.

The current hostwright doctor checks OS, architecture, Swift version, whether a container executable is on PATH, and whether hostwright.yaml exists. It does not call Apple container runtime commands.

The core loop

The current local workflow is small and non-mutating:

# 1. Create a starter manifest in the current directory.
hostwright init

# 2. Check the manifest against the schema and semantic rules.
hostwright validate

# 3. See the manifest-level plan. Runtime observation is not available yet.
hostwright plan

# 4. Show manifest-level status only.
hostwright status

# 5. Run safe local diagnostics.
hostwright doctor

The intended first-release workflow adds runtime convergence later:

hostwright apply        # converge runtime state to the manifest
hostwright status       # desired vs actual, health, drift, restarts
hostwright down --dry-run   # preview teardown before removing anything

apply, runtime status, and cleanup are not implemented today. plan before apply, and --dry-run before any destructive command, are release requirements Hostwright is built around. See the safety model.

A minimal manifest

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"

Every field here is described in the hostwright.yaml reference.

Next