Skip to content

Quick start

Hostwright is an unsupported development prerelease. The accepted release scope is one Apple silicon Mac running macOS 26, local capacity admission, narrow Compose import, and confirmed native desktop lifecycle. Current-source release qualification is pending; see compatibility.

This page describes the current command contract. Its CPU/memory lifecycle example has not yet passed the current-source live qualification transcript; it is not a tested quickstart or a supported release claim.

The authenticated CLI requires an explicitly bootstrapped signed daemon, including read-only validation and planning. Follow the daemon setup before running these commands. Read-only means no runtime changes, not anonymous access.

Install from source or the vendor tap. Runtime commands require a declared supported provider and Linux ARM64 image. hostwright doctor --output json performs safe local checks, including provider version probes. hostwright paths --json reports the secure selected state layout. The default database is under Application Support; --state-db explicitly overrides it.

hostwright init creates a starter manifest without overwriting an existing file. Alternatively save the canonical single-service example below to a new file; first check that its project and host port do not conflict with an existing workload.

version: 3
project: phase04-single
imagePolicy: require-digest
services:
web:
image: docker.io/library/python@sha256:26730869004e2b9c4b9ad09cab8625e81d256d1ce97e72df5520e806b1709f92
resources:
requests: {cpus: 1, memory: 512MiB}
limits: {cpus: 1, memory: 512MiB}
command: ["python3", "-m", "http.server", "8080", "--bind", "0.0.0.0"]
ports:
- "18080:8080"
probes:
startup:
exec: ["python3", "-c", "raise SystemExit(0)"]
readiness:
tcp:
port: 8080
liveness:
http:
port: 8080
path: /
restart:
policy: unless-stopped
update:
strategy: recreate
maxSurge: 0
maxUnavailable: 1
progressDeadline: 60s
Terminal window
hostwright validate hostwright.yaml
hostwright plan hostwright.yaml --output json
hostwright runtime providers --json
hostwright up hostwright.yaml --dry-run --runtime-provider apple-cli --output json

validate and plan do not change the runtime. plan is a manifest-level plan; the lifecycle confirmation hash comes from the observed-runtime up --dry-run. Review its exact image, resource requests/limits, ownership, provider, and actions.

Confirmed execution requires the signed payload and an authenticated local daemon identity. Follow the installation guide and daemon reference. An absent or stale authority fails closed.

Terminal window
hostwright up hostwright.yaml --confirm-plan <planSHA256> --runtime-provider apple-cli
hostwright status hostwright.yaml --runtime-provider apple-cli --output json

Use the exact hash from the fresh dry run, with the same manifest, provider, and selected state path. If anything changes, review another dry run. Stopping and removing resources each require their own fresh dry-run hash:

Terminal window
hostwright down hostwright.yaml --dry-run --runtime-provider apple-cli
hostwright down hostwright.yaml --confirm-plan <down-planSHA256> --runtime-provider apple-cli
hostwright rm hostwright.yaml --dry-run --runtime-provider apple-cli
hostwright rm hostwright.yaml --confirm-plan <rm-planSHA256> --runtime-provider apple-cli

Only proven Hostwright-owned resources are eligible for removal. Preserve unmanaged workloads and inspect recovery after interruption.