Adom Hydrogen (macOS / Lima)
Public Made by Adomby adom
The macOS platform layer for Adom Hydrogen — converges a Lima/nspawn workspace to the HD-on-Mac runtime.
name: hydrogen-api-mac description: > macOS platform companion to hydrogen-api — the Apple/Lima-specific half of reaching Hydrogen's control API. The full endpoint catalog lives in hydrogen-api (adom/hd-bootstrap); THIS skill carries only what differs on macOS: the adom-host gateway (vz doesn't mirror loopback), the ~/.adom/hd-control-url discovery file, Hydrogen binding 0.0.0.0, and the nspawn machine-runtime endpoints (the /workspace/* routes, legacy /wsl/* route names kept for wire-compat). Trigger words — hydrogen control api macos, adom-host, hd-control-url, reach Hydrogen from the workspace, machine runtime endpoints, vz loopback, workspace health macos.
hydrogen-api (macOS) — reaching the control API across the Lima boundary
This is the macOS half of hydrogen-api. The endpoint catalog, _manifest, auth, and
every route table live in the generic hydrogen-api skill — read that first. This skill
only covers how the Lima/nspawn boundary changes reachability and discovery on
a Mac.
Base URL + the adom-host gateway
- On the macOS host, Hydrogen's control API is
http://127.0.0.1:<dynamic>. - From inside the workspace machine, the Apple
vzVM does NOT mirror host loopback, so127.0.0.1won't reach Hydrogen. Hydrogen binds its host services to0.0.0.0and the workspace reaches them through theadom-hostgateway:http://adom-host:<dynamic>.
⭐ Finding the control port — ~/.adom/hd-control-url
The port is dynamic. From the workspace, read the discovery file Hydrogen writes every
launch (already pointed at the adom-host gateway):
CTRL="$(cat ~/.adom/hd-control-url)" # e.g. http://adom-host:<control>
curl -sf "$CTRL/health"
Never hard-code the port or assume 127.0.0.1 from inside the machine — the vz VM
does not mirror host loopback, so a loopback-based playbook fails here. The discovery
file is the only supported path.
Machine-runtime endpoints
The default macOS runtime is the nspawn machine (not Docker). Hydrogen exposes the
workspace-runtime routes under /workspace/* — and keeps the legacy /wsl/* route
names as wire-compat aliases, so a caller written against the older route names still
resolves:
| Method | Path | Notes |
|---|---|---|
| GET | /workspace/status |
machine registered / running / code-server reachable |
| GET | /workspace/health |
deep health: machine + code-server + host reachability |
| GET | /container-status |
runtime available, image/machine present, workspace running |
/test/probe-dialogs classifies macOS permission prompts (Screen Recording /
Accessibility / installer pkg) as blockers.
On macOS reachability is the adom-host gateway + ~/.adom/hd-control-url, full stop.
---
name: hydrogen-api-mac
description: >
macOS platform companion to hydrogen-api — the Apple/Lima-specific half of reaching Hydrogen's
control API. The full endpoint catalog lives in hydrogen-api (adom/hd-bootstrap); THIS
skill carries only what differs on macOS: the adom-host gateway (vz doesn't mirror
loopback), the ~/.adom/hd-control-url discovery file, Hydrogen binding 0.0.0.0, and the
nspawn machine-runtime endpoints (the /workspace/* routes, legacy /wsl/* route names
kept for wire-compat). Trigger
words — hydrogen control api macos, adom-host, hd-control-url, reach Hydrogen from the workspace,
machine runtime endpoints, vz loopback, workspace health macos.
---
# hydrogen-api (macOS) — reaching the control API across the Lima boundary
This is the **macOS half** of `hydrogen-api`. The endpoint catalog, `_manifest`, auth, and
every route table live in the generic **hydrogen-api** skill — read that first. This skill
only covers how the **Lima/nspawn boundary** changes *reachability* and *discovery* on
a Mac.
## Base URL + the adom-host gateway
- On the **macOS host**, Hydrogen's control API is `http://127.0.0.1:<dynamic>`.
- From **inside the workspace machine**, the Apple `vz` VM does **NOT** mirror host
loopback, so `127.0.0.1` won't reach Hydrogen. Hydrogen binds its host services to `0.0.0.0` and
the workspace reaches them through the **`adom-host` gateway**:
`http://adom-host:<dynamic>`.
## ⭐ Finding the control port — `~/.adom/hd-control-url`
The port is dynamic. **From the workspace, read the discovery file** Hydrogen writes every
launch (already pointed at the `adom-host` gateway):
```bash
CTRL="$(cat ~/.adom/hd-control-url)" # e.g. http://adom-host:<control>
curl -sf "$CTRL/health"
```
Never hard-code the port or assume `127.0.0.1` from inside the machine — the `vz` VM
does not mirror host loopback, so a loopback-based playbook fails here. The discovery
file is the only supported path.
## Machine-runtime endpoints
The default macOS runtime is the **nspawn machine** (not Docker). Hydrogen exposes the
workspace-runtime routes under `/workspace/*` — and **keeps the legacy `/wsl/*` route
names as wire-compat aliases**, so a caller written against the older route names still
resolves:
| Method | Path | Notes |
|---|---|---|
| GET | `/workspace/status` | machine registered / running / code-server reachable |
| GET | `/workspace/health` | deep health: machine + code-server + host reachability |
| GET | `/container-status` | runtime available, image/machine present, workspace running |
`/test/probe-dialogs` classifies **macOS permission prompts** (Screen Recording /
Accessibility / installer pkg) as blockers.
On macOS reachability is the `adom-host` gateway + `~/.adom/hd-control-url`, full stop.