Hydrogen Desktop Bootstrap for Windows (apps + skills)
Public Made by Adomby adom
The Windows (WSL2) platform layer for Hydrogen Desktop.
name: hd-setup-steps-windows
description: >
Windows/WSL2-specific details for what HD's setup did — the concrete 16-step
setup_steps_wsl.rs cascade, the wsl --import Adom-Workspace provisioning
step, the wsl --unregister virgin-reset mechanics, setup-steps-wsl.json,
and the golden adom-golden.tar.gz tarball. READ alongside the generic
hd-setup-steps skill when you need the exact WSL2 steps or file paths.
Trigger words — setup_steps_wsl, 16 steps wsl, wsl import, wsl unregister,
Adom-Workspace, setup-steps-wsl.json, adom-golden.tar.gz, golden distro,
ensure-workspace.
HD Setup Steps (Windows / WSL2 specifics)
This is the Windows companion to the generic hd-setup-steps skill. Read that first for the user-facing Q&A ("what did setup do", "why is X installed", re-running steps, the virgin reset, and the setup-panel APIs). This page carries only the concrete WSL2 cascade, commands, and file paths.
HD runs on Windows (WSL2), Mac, and Ubuntu; on Windows the workspace is the
Adom-Workspace WSL2 distro. The legacy 24-step Docker cascade
(HD_RUNTIME=docker) is in the docker/ bucket.
The cascade is executed by setup_steps_wsl.rs (step_defs_wsl() /
run_all_wsl()). run_all_wsl is halt-on-failure, resume-not-restart, with
per-step 3x auto-retry. In-distro work runs via
wsl -d Adom-Workspace -u adom -- <cmd> (the distro's DEFAULT user is adom
per wsl.conf default=adom, home /home/adom; root via -u root). There is
NO docker exec and NO Docker image anywhere in this flow.
The 16 steps (in order)
| # | Step | Purpose |
|---|---|---|
| 1 | ensure-workspace | Install WSL2 if needed (one auto-reboot), wsl --import Adom-Workspace from the golden image adom-golden.tar.gz (full pre-baked image from the adom-inc/hd-wsl2-image GitHub release), create the adom user, start code-server, verify host loopback on 7380. SUBSUMES the old Docker pull-image / create-container / start-container steps. |
| 2 | wait-codeserver | Host TCP probe of the code-server port (default 7380), 120s |
| 3 | install-adom-vscode | "Activate editor extensions" — installs NOTHING (binary + extension are baked); waits for Adom sign-in, reloads the editor iframe, and proves the :8821 editor-control API answers |
| 4 | set-env-vars | Set ADOM_CARBON_URL, ADOM_HYDROGEN_URL, ADOM_HD_CONTROL_URL, VSCODE_PROXY_URI, ADOM_DESKTOP_MODE |
| 5 | inject-api-key | Write the Adom session token into the distro at /var/run/adom/api-key (mode 644) so adom-cli works |
| 6 | configure-vscode | settings.json / trusted-domains / activity-bar are BAKED; re-asserts theme + workbench backstops idempotently, and applies the per-session layout via :8821 |
| 7 | ensure-adom-desktop | Verify the Adom Desktop companion app is running on Windows (the relay's desktop bridge) |
| 8 | start-relay | Start the adom-desktop relay inside the workspace (ports 8765 WS / 8766 HTTP) |
| 9 | test-direct-connect | Prove the fast container→desktop command path |
| 10 | test-relay | Register the relay with Adom Desktop for file streaming (file transfer + shell exec) |
| 11 | test-adom-cli | GATE: carbon path + hydrogen-proxy reachability via adom-cli (6 retries) |
| 12 | claude-auth | The single human gate — restore Claude creds or drive the in-editor Claude.ai sign-in via the native browser Browser Picker; runs LAST before the payoff steps |
| 13 | ensure-sse | GATE: confirm the editor browser SSE session is connected so Welcome's webview-open doesn't 409 |
| 14 | verify-workspace | GATE: battery confirming the proxy holds a real layout |
| 15 | welcome | Open Claude Code, authenticate if needed, send the first prompt |
| 16 | open-welcome | GATE (final): open welcome.html in HD's right pane; hard-fails if the Welcome tab doesn't appear |
The WSL import step (step 1)
ensure-workspace installs WSL2 if needed (one auto-reboot), then
wsl --import Adom-Workspace from the full pre-baked golden image
adom-golden.tar.gz (pulled from the adom-inc/hd-wsl2-image GitHub release).
It creates the adom user, starts code-server, and verifies host loopback on
port 7380. This single step replaces the old Docker pull-image /
create-container / start-container trio.
Platform-specific failure causes
Most common WSL2 failures:
- Step 1 — WSL2 unavailable / the Virtual Machine Platform feature is off,
or the
adom-golden.tar.gzdownload failed. - Step 11 (test-adom-cli) — carbon / hydrogen-proxy not reachable yet.
- Step 12 (claude-auth) — Claude credentials expired.
Virgin reset — WSL distro wipe
The container toggle does a PRISTINE wsl --unregister Adom-Workspace +
reimport — it deletes the distro AND everything in it, including
/home/adom/project. It backs up Claude creds first UNLESS claude_token is
checked.
CRITICAL: the WSL reset ONLY ever runs wsl --unregister Adom-Workspace
(+ reimport). It never runs global wsl --shutdown or wsl --uninstall
(those would kill the user's other distros, including any Docker Desktop WSL
integration), and it performs NO Docker actions and NO reboot for the wipe.
The tarball toggle (legacy key image) deletes the cached
adom-golden.tar.gz (full-image re-download). The webview_storage /
vscode_state wipes are queued and flushed at the next HD launch
(restart_required), not immediate.
Setup state file
Setup writes its state to
%APPDATA%\hydrogen-desktop\setup-steps-wsl.json (one entry per step with
status: pending|running|done|failed, output text, percent complete). HD reads
this on launch to decide whether the setup panel auto-opens. (The legacy Docker
runtime uses setup-steps.json.)
Related skills
- hd-setup-steps — the generic user-facing setup-steps Q&A and APIs
hd-golden-image— what's baked intoadom-golden.tar.gzvs. what setup doeshd-workspace-lifecycle— import/export/unregister/terminate, the never-touch-global-WSL rulehd-networking— port 7380 code-server, how the distro reaches the host, port forwardinghd-volume— where files live in the distro and what survives a virgin reset
---
name: hd-setup-steps-windows
description: >
Windows/WSL2-specific details for what HD's setup did — the concrete 16-step
`setup_steps_wsl.rs` cascade, the `wsl --import Adom-Workspace` provisioning
step, the `wsl --unregister` virgin-reset mechanics, `setup-steps-wsl.json`,
and the golden `adom-golden.tar.gz` tarball. READ alongside the generic
[[hd-setup-steps]] skill when you need the exact WSL2 steps or file paths.
Trigger words — setup_steps_wsl, 16 steps wsl, wsl import, wsl unregister,
Adom-Workspace, setup-steps-wsl.json, adom-golden.tar.gz, golden distro,
ensure-workspace.
---
# HD Setup Steps (Windows / WSL2 specifics)
This is the Windows companion to the generic [[hd-setup-steps]] skill. Read
that first for the user-facing Q&A ("what did setup do", "why is X installed",
re-running steps, the virgin reset, and the setup-panel APIs). This page
carries only the concrete WSL2 cascade, commands, and file paths.
HD runs on Windows (WSL2), Mac, and Ubuntu; on Windows the workspace is the
`Adom-Workspace` WSL2 distro. The legacy 24-step Docker cascade
(`HD_RUNTIME=docker`) is in the docker/ bucket.
The cascade is executed by `setup_steps_wsl.rs` (`step_defs_wsl()` /
`run_all_wsl()`). `run_all_wsl` is halt-on-failure, resume-not-restart, with
per-step 3x auto-retry. In-distro work runs via
`wsl -d Adom-Workspace -u adom -- <cmd>` (the distro's DEFAULT user is `adom`
per `wsl.conf default=adom`, home `/home/adom`; root via `-u root`). There is
NO `docker exec` and NO Docker image anywhere in this flow.
## The 16 steps (in order)
| # | Step | Purpose |
|---|---|---|
| 1 | ensure-workspace | Install WSL2 if needed (one auto-reboot), `wsl --import Adom-Workspace` from the golden image `adom-golden.tar.gz` (full pre-baked image from the `adom-inc/hd-wsl2-image` GitHub release), create the `adom` user, start code-server, verify host loopback on 7380. SUBSUMES the old Docker pull-image / create-container / start-container steps. |
| 2 | wait-codeserver | Host TCP probe of the code-server port (default 7380), 120s |
| 3 | install-adom-vscode | "Activate editor extensions" — installs NOTHING (binary + extension are baked); waits for Adom sign-in, reloads the editor iframe, and proves the :8821 editor-control API answers |
| 4 | set-env-vars | Set `ADOM_CARBON_URL`, `ADOM_HYDROGEN_URL`, `ADOM_HD_CONTROL_URL`, `VSCODE_PROXY_URI`, `ADOM_DESKTOP_MODE` |
| 5 | inject-api-key | Write the Adom session token into the distro at `/var/run/adom/api-key` (mode 644) so adom-cli works |
| 6 | configure-vscode | settings.json / trusted-domains / activity-bar are BAKED; re-asserts theme + workbench backstops idempotently, and applies the per-session layout via :8821 |
| 7 | ensure-adom-desktop | Verify the Adom Desktop companion app is running on Windows (the relay's desktop bridge) |
| 8 | start-relay | Start the adom-desktop relay inside the workspace (ports 8765 WS / 8766 HTTP) |
| 9 | test-direct-connect | Prove the fast container→desktop command path |
| 10 | test-relay | Register the relay with Adom Desktop for file streaming (file transfer + shell exec) |
| 11 | test-adom-cli | GATE: carbon path + hydrogen-proxy reachability via adom-cli (6 retries) |
| 12 | claude-auth | The single human gate — restore Claude creds or drive the in-editor Claude.ai sign-in via the native browser Browser Picker; runs LAST before the payoff steps |
| 13 | ensure-sse | GATE: confirm the editor browser SSE session is connected so Welcome's webview-open doesn't 409 |
| 14 | verify-workspace | GATE: battery confirming the proxy holds a real layout |
| 15 | welcome | Open Claude Code, authenticate if needed, send the first prompt |
| 16 | open-welcome | GATE (final): open welcome.html in HD's right pane; hard-fails if the Welcome tab doesn't appear |
## The WSL import step (step 1)
`ensure-workspace` installs WSL2 if needed (one auto-reboot), then
`wsl --import Adom-Workspace` from the full pre-baked golden image
`adom-golden.tar.gz` (pulled from the `adom-inc/hd-wsl2-image` GitHub release).
It creates the `adom` user, starts code-server, and verifies host loopback on
port 7380. This single step replaces the old Docker pull-image /
create-container / start-container trio.
## Platform-specific failure causes
Most common WSL2 failures:
- **Step 1** — WSL2 unavailable / the Virtual Machine Platform feature is off,
or the `adom-golden.tar.gz` download failed.
- **Step 11** (test-adom-cli) — carbon / hydrogen-proxy not reachable yet.
- **Step 12** (claude-auth) — Claude credentials expired.
## Virgin reset — WSL distro wipe
The `container` toggle does a PRISTINE `wsl --unregister Adom-Workspace` +
reimport — it deletes the distro AND everything in it, including
`/home/adom/project`. It backs up Claude creds first UNLESS `claude_token` is
checked.
CRITICAL: the WSL reset ONLY ever runs `wsl --unregister Adom-Workspace`
(+ reimport). It never runs global `wsl --shutdown` or `wsl --uninstall`
(those would kill the user's other distros, including any Docker Desktop WSL
integration), and it performs NO Docker actions and NO reboot for the wipe.
The `tarball` toggle (legacy key `image`) deletes the cached
`adom-golden.tar.gz` (full-image re-download). The `webview_storage` /
`vscode_state` wipes are queued and flushed at the next HD launch
(restart_required), not immediate.
## Setup state file
Setup writes its state to
`%APPDATA%\hydrogen-desktop\setup-steps-wsl.json` (one entry per step with
`status: pending|running|done|failed`, output text, percent complete). HD reads
this on launch to decide whether the setup panel auto-opens. (The legacy Docker
runtime uses `setup-steps.json`.)
## Related skills
- [[hd-setup-steps]] — the generic user-facing setup-steps Q&A and APIs
- `hd-golden-image` — what's baked into `adom-golden.tar.gz` vs. what setup does
- `hd-workspace-lifecycle` — import/export/unregister/terminate, the never-touch-global-WSL rule
- `hd-networking` — port 7380 code-server, how the distro reaches the host, port forwarding
- `hd-volume` — where files live in the distro and what survives a virgin reset