Adom Hydrogen (platform base)
Public Made by Adomby adom
Layer Hydrogen's workspace onto a standard Adom workstation.
name: hydrogen-container description: Context for Claude Code running inside a Hydrogen workspace. Documents the exact OS (Ubuntu 24.04, code-server, the local workspace), explains how setup differs from Adom cloud containers (Hydrogen setup-steps NOT bootstrap.sh), what bridges are available, and how to use the relay. Trigger on startup, adom-cli errors, bridge commands, screenshot requests, container-platform questions, code-server / VS Code extension issues, or when the AI needs concrete facts about its environment instead of guessing.
Hydrogen Workspace
You are running inside the local workspace managed by Hydrogen (ah). Hydrogen is the flagship Adom desktop app — it manages your workspace, bridges to desktop apps, and provides VS Code + Claude Code. Hydrogen runs on Windows, macOS, and Ubuntu; the platform-specific mechanics of how the workspace is hosted are abstracted away from inside the workspace — the facts below hold regardless of host OS.
The platform bootstraps override this skill with the host-specific spine — how the
Adom-Workspaceworkspace is hosted and imported, code-server port forwarding, the runtime source, and the Cloud-vs-local comparison table.
The workspace — exact facts (don't guess)
| Field | Value |
|---|---|
| Provisioned from | a pre-baked golden image (full image, not bootstrapped from scratch) |
| Base | Ubuntu 24.04 |
| Architecture | matches host (dpkg --print-architecture) — linux-x64 or linux-arm64 |
| code-server | pinned via the golden image |
| code-server binary | /usr/lib/code-server/bin/code-server |
| Extensions dir | ~/.local/share/code-server/extensions/ |
| Settings | ~/.local/share/code-server/User/settings.json |
| Work user | adom (passwordless sudo, home /home/adom) |
| Workspace | /home/adom/project |
| Pre-installed | Node 18 + npm, Python 3.12, git, gh, curl, wget, jq, build-essential, cmake, pkg-config, libssl-dev |
| Code-server runs as | code-server --bind-addr 0.0.0.0:7380 --auth none --disable-telemetry /home/adom/project |
If you ever need to confirm: cat /etc/os-release, uname -m, /usr/lib/code-server/bin/code-server --version. Don't speculate about alpine/arm64 — Ubuntu 24.04 matches the cloud container.
Setup is via Hydrogen's setup-steps, NOT gallia bootstrap.sh
Hydrogen provisions this workspace through its own setup-steps flow, shown as the "Install Tools" panel in the Hydrogen UI. It is a different code path than cloud containers, which run gallia/scripts/bootstrap.sh.
Most tooling is NOT installed by a step — it's BAKED into the golden image at image-build time (gallia, the Adom CLIs, the claude CLI + Code extension, code-server, VS Code settings, and all hd-* skills). The provisioning step imports the golden image if the workspace isn't already registered, and the relay is started by the start-relay step. See [[hydrogen-setup-steps]].
When debugging install issues here, the source of truth is Hydrogen's setup-steps code — its step IDs (ensure-workspace, install-adom-vscode, set-env-vars, inject-api-key, start-relay, claude-auth, etc.) map 1:1 to what ran on this workspace. There is NO install-claude-ext / install-claude-cli / install-gallia / write-vscode-settings step — those are baked. Do NOT chase bugs into bootstrap.sh — that script lives in the baked image but Hydrogen itself never invokes it.
VS Code extension caveats
- The Claude Code extension and
code-serversettings (includingextensions.autoUpdate: true/extensions.autoCheckUpdates: true) are BAKED into the golden image — there is nowrite-vscode-settingsorinstall-claude-extsetup step. Auto-update must stay on so every installed extension auto-updates from the marketplace; the image bakes it on. Do not regress this. - Bare
code-server --install-extension <id>(no version pin) historically resolves to the universal target-platform build. For some extensions (notablyanthropic.claude-codeafter 2.1.89), Anthropic stopped shipping universal builds — so bare install permanently sticks at 2.1.89 even when newer per-arch builds exist. The golden-image bake installs the latest per-arch build pinned, so the workspace ships current. It also heals orphanextensions.jsonentries (entries pointing to deleted dirs cause a permanent "Invalid extensions detected" banner). - Marketplace: code-server uses Open VSX (open-vsx.org), not Microsoft Marketplace. No
EXTENSIONS_GALLERYenv override is set;product.jsonhas no gallery URL — it falls through to Open VSX defaults.
adom-cli is authenticated
Hydrogen auto-injects the user's session token on every launch. To verify:
adom-cli carbon user get
If this returns user data, all adom-cli commands work (containers, repos, orgs, wiki, etc.). If it fails, the user needs to log in via Hydrogen's login page.
Relay server is running
The adom-bridge-cli relay runs on ports 8765 (WebSocket) / 8766 (HTTP) inside this workspace. The start-relay setup step launches it.
Check health: curl -sf http://127.0.0.1:8766/health
Check desktop connection: adom-bridge-cli ping
The host control API is reachable from inside the workspace at 127.0.0.1. The port is dynamic per launch, so read the live URL from ~/.adom/hydrogen-control-url (http://127.0.0.1:<dynamic>): BASE="$(cat ~/.adom/hydrogen-control-url)"; curl "$BASE/health".
Available bridge commands (when desktop is connected)
Screenshots (zero dialogs, instant)
adom-bridge-cli desktop_screenshot_screen # full screen capture
adom-bridge-cli desktop_screenshot_screen '{"maxWidth":1500}' # resized for Claude vision
adom-bridge-cli desktop_screenshot_window '{"hwnd": N}' # capture specific window
adom-bridge-cli desktop_list_windows # list all windows with handles
Default to maxWidth: 1500, format: "png" for UI screenshots. Use "jpeg" for natural photos, "webp" for smaller files.
Browser automation (Puppeteer)
adom-bridge-cli browser_open_window '{"url": "https://..."}'
adom-bridge-cli browser_screenshot '{"sessionId": "default"}'
adom-bridge-cli browser_eval '{"js": "document.title"}'
adom-bridge-cli browser_navigate '{"url": "..."}'
KiCad bridge
adom-bridge-cli kicad_open_board '{"path": "/path/to/board.kicad_pcb"}'
adom-bridge-cli kicad_screenshot_all
adom-bridge-cli kicad_run_drc '{"path": "..."}'
adom-bridge-cli kicad_window_info
(Paths to host files use the host's native path convention.)
Fusion 360 bridge
adom-bridge-cli fusion_start
adom-bridge-cli fusion_import_step '{"path": "..."}'
adom-bridge-cli fusion_export_step '{"path": "..."}'
File transfer
adom-bridge-cli send_files '{"files": [{"path": "/home/adom/file.txt"}]}'
adom-bridge-cli pull_file '{"remotePath": "<host path>", "localPath": "/tmp/file.txt"}'
Desktop interaction
adom-bridge-cli notify_user '{"message": "Build complete", "duration_ms": 3000}'
adom-bridge-cli desktop_open_url '{"url": "https://..."}'
adom-bridge-cli desktop_open_folder '{"path": "<host folder path>"}'
What's different from Adom cloud containers
| Feature | Adom Cloud | Hydrogen Local |
|---|---|---|
| Workspace provisioning | Adom platform API | golden image imported on the user's machine |
| Relay connection | wss:// through Cloudflare | ws://localhost:8765 (direct, no TLS) |
| Bridge latency | ~50-100ms (internet round-trip) | <1ms (localhost) |
| VSCODE_PROXY_URI | Coder proxy URL | http://localhost:7380/proxy/{{port}}/ |
| Socket.IO (collab) | Connected to iron.adom.inc | Disabled (single-user) |
| Service containers | Adjacent containers | Remote via Adom cloud |
Environment variables
ADOM_DESKTOP_MODE=local— indicates Hydrogen local modeGALLIA_SERVICE=local— tells gallia this is a local workspaceVSCODE_PROXY_URI=http://localhost:7380/proxy/{{port}}/— code-server's proxy
(Platform layers may set additional host-specific env vars — see your platform bootstrap's version of this skill.)
Related skills
[[hydrogen-container-stats]]— the title-bar CPU/RAM indicator for this workspace[[hydrogen-setup-steps]]— what each setup step did to prepare your workspace
---
name: hydrogen-container
description: Context for Claude Code running inside a Hydrogen workspace. Documents the exact OS (Ubuntu 24.04, code-server, the local workspace), explains how setup differs from Adom cloud containers (Hydrogen setup-steps NOT bootstrap.sh), what bridges are available, and how to use the relay. Trigger on startup, adom-cli errors, bridge commands, screenshot requests, container-platform questions, code-server / VS Code extension issues, or when the AI needs concrete facts about its environment instead of guessing.
---
# Hydrogen Workspace
You are running inside the **local workspace** managed by Hydrogen (ah). Hydrogen is the flagship Adom desktop app — it manages your workspace, bridges to desktop apps, and provides VS Code + Claude Code. Hydrogen runs on Windows, macOS, and Ubuntu; the platform-specific mechanics of how the workspace is hosted are abstracted away from inside the workspace — the facts below hold regardless of host OS.
> The platform bootstraps override this skill with the host-specific spine — how the `Adom-Workspace` workspace is hosted and imported, code-server port forwarding, the runtime source, and the Cloud-vs-local comparison table.
## The workspace — exact facts (don't guess)
| Field | Value |
|-------|-------|
| Provisioned from | a pre-baked golden image (full image, not bootstrapped from scratch) |
| Base | Ubuntu 24.04 |
| Architecture | matches host (`dpkg --print-architecture`) — `linux-x64` or `linux-arm64` |
| code-server | pinned via the golden image |
| code-server binary | `/usr/lib/code-server/bin/code-server` |
| Extensions dir | `~/.local/share/code-server/extensions/` |
| Settings | `~/.local/share/code-server/User/settings.json` |
| Work user | `adom` (passwordless sudo, home `/home/adom`) |
| Workspace | `/home/adom/project` |
| Pre-installed | Node 18 + npm, Python 3.12, git, gh, curl, wget, jq, build-essential, cmake, pkg-config, libssl-dev |
| Code-server runs as | `code-server --bind-addr 0.0.0.0:7380 --auth none --disable-telemetry /home/adom/project` |
If you ever need to confirm: `cat /etc/os-release`, `uname -m`, `/usr/lib/code-server/bin/code-server --version`. Don't speculate about alpine/arm64 — Ubuntu 24.04 matches the cloud container.
## Setup is via Hydrogen's setup-steps, NOT gallia bootstrap.sh
Hydrogen provisions this workspace through its own **setup-steps** flow, shown as the "Install Tools" panel in the Hydrogen UI. It is a **different code path** than cloud containers, which run `gallia/scripts/bootstrap.sh`.
Most tooling is NOT installed by a step — it's BAKED into the golden image at image-build time (gallia, the Adom CLIs, the claude CLI + Code extension, code-server, VS Code settings, and all `hd-*` skills). The provisioning step imports the golden image if the workspace isn't already registered, and the relay is started by the `start-relay` step. See `[[hydrogen-setup-steps]]`.
When debugging install issues here, the source of truth is Hydrogen's setup-steps code — its step IDs (`ensure-workspace`, `install-adom-vscode`, `set-env-vars`, `inject-api-key`, `start-relay`, `claude-auth`, etc.) map 1:1 to what ran on this workspace. There is NO `install-claude-ext` / `install-claude-cli` / `install-gallia` / `write-vscode-settings` step — those are baked. Do NOT chase bugs into `bootstrap.sh` — that script lives in the baked image but Hydrogen itself never invokes it.
## VS Code extension caveats
- The Claude Code extension and `code-server` settings (including `extensions.autoUpdate: true` / `extensions.autoCheckUpdates: true`) are BAKED into the golden image — there is no `write-vscode-settings` or `install-claude-ext` setup step. Auto-update **must** stay on so every installed extension auto-updates from the marketplace; the image bakes it on. Do not regress this.
- Bare `code-server --install-extension <id>` (no version pin) historically resolves to the **universal** target-platform build. For some extensions (notably `anthropic.claude-code` after 2.1.89), Anthropic stopped shipping universal builds — so bare install permanently sticks at 2.1.89 even when newer per-arch builds exist. The golden-image bake installs the latest per-arch build pinned, so the workspace ships current. It also heals orphan `extensions.json` entries (entries pointing to deleted dirs cause a permanent "Invalid extensions detected" banner).
- Marketplace: code-server uses **Open VSX** (open-vsx.org), not Microsoft Marketplace. No `EXTENSIONS_GALLERY` env override is set; `product.json` has no gallery URL — it falls through to Open VSX defaults.
## adom-cli is authenticated
Hydrogen auto-injects the user's session token on every launch. To verify:
```bash
adom-cli carbon user get
```
If this returns user data, all adom-cli commands work (containers, repos, orgs, wiki, etc.). If it fails, the user needs to log in via Hydrogen's login page.
## Relay server is running
The adom-bridge-cli relay runs on ports 8765 (WebSocket) / 8766 (HTTP) inside this workspace. The `start-relay` setup step launches it.
Check health: `curl -sf http://127.0.0.1:8766/health`
Check desktop connection: `adom-bridge-cli ping`
The host control API is reachable from inside the workspace at `127.0.0.1`. The port is dynamic per launch, so read the live URL from `~/.adom/hydrogen-control-url` (`http://127.0.0.1:<dynamic>`): `BASE="$(cat ~/.adom/hydrogen-control-url)"; curl "$BASE/health"`.
## Available bridge commands (when desktop is connected)
### Screenshots (zero dialogs, instant)
```bash
adom-bridge-cli desktop_screenshot_screen # full screen capture
adom-bridge-cli desktop_screenshot_screen '{"maxWidth":1500}' # resized for Claude vision
adom-bridge-cli desktop_screenshot_window '{"hwnd": N}' # capture specific window
adom-bridge-cli desktop_list_windows # list all windows with handles
```
Default to `maxWidth: 1500, format: "png"` for UI screenshots. Use `"jpeg"` for natural photos, `"webp"` for smaller files.
### Browser automation (Puppeteer)
```bash
adom-bridge-cli browser_open_window '{"url": "https://..."}'
adom-bridge-cli browser_screenshot '{"sessionId": "default"}'
adom-bridge-cli browser_eval '{"js": "document.title"}'
adom-bridge-cli browser_navigate '{"url": "..."}'
```
### KiCad bridge
```bash
adom-bridge-cli kicad_open_board '{"path": "/path/to/board.kicad_pcb"}'
adom-bridge-cli kicad_screenshot_all
adom-bridge-cli kicad_run_drc '{"path": "..."}'
adom-bridge-cli kicad_window_info
```
(Paths to host files use the host's native path convention.)
### Fusion 360 bridge
```bash
adom-bridge-cli fusion_start
adom-bridge-cli fusion_import_step '{"path": "..."}'
adom-bridge-cli fusion_export_step '{"path": "..."}'
```
### File transfer
```bash
adom-bridge-cli send_files '{"files": [{"path": "/home/adom/file.txt"}]}'
adom-bridge-cli pull_file '{"remotePath": "<host path>", "localPath": "/tmp/file.txt"}'
```
### Desktop interaction
```bash
adom-bridge-cli notify_user '{"message": "Build complete", "duration_ms": 3000}'
adom-bridge-cli desktop_open_url '{"url": "https://..."}'
adom-bridge-cli desktop_open_folder '{"path": "<host folder path>"}'
```
## What's different from Adom cloud containers
| Feature | Adom Cloud | Hydrogen Local |
|---------|-----------|----------|
| Workspace provisioning | Adom platform API | golden image imported on the user's machine |
| Relay connection | wss:// through Cloudflare | ws://localhost:8765 (direct, no TLS) |
| Bridge latency | ~50-100ms (internet round-trip) | <1ms (localhost) |
| VSCODE_PROXY_URI | Coder proxy URL | http://localhost:7380/proxy/{{port}}/ |
| Socket.IO (collab) | Connected to iron.adom.inc | Disabled (single-user) |
| Service containers | Adjacent containers | Remote via Adom cloud |
## Environment variables
- `ADOM_DESKTOP_MODE=local` — indicates Hydrogen local mode
- `GALLIA_SERVICE=local` — tells gallia this is a local workspace
- `VSCODE_PROXY_URI=http://localhost:7380/proxy/{{port}}/` — code-server's proxy
(Platform layers may set additional host-specific env vars — see your platform bootstrap's version of this skill.)
## Related skills
- `[[hydrogen-container-stats]]` — the title-bar CPU/RAM indicator for this workspace
- `[[hydrogen-setup-steps]]` — what each setup step did to prepare your workspace