What Hydrogen Desktop runs
curl -fsSL https://wiki-ufypy5dpx93o.adom.cloud/static/apps/gallia-bundle/gallia-bundle.tar.gz \
-o /tmp/gallia-bundle.tar.gz
tar xzf /tmp/gallia-bundle.tar.gz -C ~/
cd ~/gallia && npm install --no-audit --no-fund
node ~/gallia/install.mjs --project ~/project
This bundle is trimmed for fresh Hydrogen Desktop containers โ all the legacy-container uninstall logic in install.mjs has been stripped (no old MCP servers to remove, no retired kel/adom-rc/skill-pilot/ds-queue/conduit/AV residue to scrub). The full installer with cleanup lives in adom-inc/gallia for cloud containers.
bootstrap.sh is not in this bundle either โ Hydrogen Desktop handles its own Claude-Code-extension install, VS Code settings, auth, and pre-reqs.
What install.mjs actually installs
All work is done in a single pass with a /tmp/gallia-install.pid mutex (prevents concurrent runs that race on ~/.claude/skills/).
| ยง | Step | What it does |
|---|---|---|
| 0 | PATH | Adds ~/.local/bin and ~/.claude/bin to ~/.bashrc |
| 1 | Skills | Copies all SKILL.mds into ~/.claude/skills/adom/guides/<skill>.md under a single adom umbrella skill (so only /adom appears in the slash-command list); skills with user-invocable: true also get a standalone ~/.claude/skills/<skill>/SKILL.md so they get their own slash command. Also prunes orphan guides โ if a skill was previously deployed but no longer exists in source (e.g. retired skills), its guides/<skill>.md is deleted so the umbrella adom skill stops referencing it |
| 1a / 1b6 | Codex sync | Mirrors ~/.claude/skills/* into ~/.codex/skills/ |
| 1b | adom-cli | Downloads adom-cli from GitHub Releases (fallback: wiki), installs to /usr/local/bin/adom-cli, runs adom-cli skills install |
| 1b2 | adom-wiki | Downloads adom-wiki from GitHub Releases (fallback: wiki), installs binary + SKILL.md, seeds the wiki CLI token from /var/run/adom/api-key |
| 1b3 | adom-vscode | Downloads adom-vscode from GitHub Releases (fallback: wiki), disables the built-in github-authentication VS Code extension (and the github.gitAuthentication / git.autofetch settings), runs adom-vscode install to deploy the VSIX + SKILL.md + bash completions + screenshot bridge |
| 1c | Tier A apps | Downloads + installs these binaries from the wiki: adom-mouser, adom-digikey, adom-jlcpcb, adom-parts-search, adom-gchat. Each binary's own install subcommand deploys its SKILL.md + bash completions |
| 1d | Default agents | Reads default-agents.json, fetches each agent's skill_source from the wiki API, writes to ~/.claude/agents/<slug>.md |
| 1b4 | Wiki catalog | Runs hooks/refresh-wiki-catalog.mjs to pull the auto-discovery catalog snippet |
| 1c | MEMORY.md | Injects the managed block from memory-rules.md (between <!-- ADOM-BEGIN --> markers) into ~/.claude/projects/<encoded-projectRoot>/memory/MEMORY.md |
| 2 | Claude Code settings | Writes ~/.claude/settings.json โ merges permissions.allow/ask, pins model: claude-opus-4-7[1m], marks trustedDirectories, registers hooks/check-updates.sh as a UserPromptSubmit hook, sets hooks/statusline.sh as the statusline. Also updates ~/.claude.json onboarding flags and forces python.interpreter.infoVisibility: never in code-server settings |
| 3 | Identity cache | Calls adom-cli carbon user get + carbon containers current + carbon user orgs, writes safe identifiers (user name, display name, repo name, org names โ never slug/hostname) to ~/.config/adom-identity.json |
| 5 | Shared services | Prints info banner: service-kicad, JLCPCB, and Mouser run on shared service containers โ nothing local needed. Honors KICAD_SERVICE_API override |
| 7 | Project dirs | Creates <projectRoot>/project-content/screenshots and .../schematics (sudo + chown fallback on EACCES) |
| 8 | Background services | Runs services/adom-start.sh (which discovers any services/*/service.json whose service tag matches $GALLIA_SERVICE, default local); runs each matching services/*/setup.sh; patches /usr/local/bin/code-server-entrypoint.sh to re-run adom-start.sh on reboot; installs a */2 * * * * cron calling services/adom-watchdog.sh only on service containers (where /etc/environment sets GALLIA_SERVICE to something other than local) |
| 10 | Summary | Prints "Open Claude Code and try your first prompt!" |
| extra | Org bootstraps | For each org in the cached identity that has a customer entry in CUSTOMER_BOOTSTRAPS (currently only ntx-embedded), clones or wiki-downloads the customer repo to ~/<org>/ and runs its install.sh |
| extra | Hash stamp | Writes sha256(install.mjs) to ~/.adom/last-install-hash so hooks/check-updates.sh can detect upstream changes |
Not installed by this bundle: MCP servers (none โ they were all retired); bootstrap.sh (HD handles bootstrap itself); kel, adom-rc, skill-pilot, ds-queue (all retired). On a fresh HD container, the installer logs are linear and clean โ every line is a positive "โ installed X", no scrubs or removals.
Skill inventory (117)
Skills below are deployed as guides under the single adom umbrella; ones marked user-invocable: true in their frontmatter also get their own slash command.
Adom platform โ core
adom, adom-api, adom-app-header, adom-app-model, adom-auth, adom-cli-design, adom-cloud, adom-footprint, adom-inventory, adom-layouts, adom-lbr, adom-panels, adom-pin-mapping, adom-plan, adom-port-hints, adom-publish, adom-repo-management, adom-schematics, adom-screenshot, adom-security, adom-symbol, adom-tts, adom-ui-linter, adom-update, adom-viewer, adom-workspace-control
Adom Desktop bridge
adom-desktop, adom-desktop-bridge-author, adom-desktop-demo, adom-desktop-direct-api, adom-desktop-discovery, desktop-setup, desktop-ssh, ssh-connection, remote-bootstrap, oauth
Wiki + sharing
adom-wiki, adom-wiki-v2, wiki-backup, wiki-first-lookup, wiki-split, app-creator, readme-creator, library-creator, tool-publisher, skill-catalog, skill-creator, standalone-service
KiCad, PCB, electrical engineering
service-kicad, service-kicad-admin, kicad-donut-pad, kicad-to-markdown, kicad-to-molecule, pcb-design, footprint-creator, schematic-creator, altium-pcblib, gerber-viewer, fp3d-viewer, pin1-indicator, electrical-engineering, solder-jet-sizer, solder-jetting, up-axis-conventions
Fusion 360
fusion-360, fusion-export-for-hydrogen, fusion-update-libraries
3D models + viewers
3d-component-creator, 3d-viewer-design, basic-3d-viewer, instrument-viewer, measure-tool-design, mosfet-visualizer, molecule-breakout-board-creator, board-creator
tscircuit
adom-tscircuit-skill, board-building-pipeline, instapcb
Parts search + sourcing
adom-parts-search, digikey
Chipsmith
adom-chipsmith, adom-chipsmith-build
Datasheets
datasheet-parser, datasheet-parser-interactive, process-datasheets
Test instruments
pyvisa-testscript, red-pitaya
Process, demos, ops
brand, bug-filing, container-bootstrap, debug, definitions, demo-recording, tour, tts-pronunciation, use-cases
Other tools + references
curium, neon-mirror, pup, pup-vs-webview, claude-api, claude-code-1m-context, ai-hints-in-clis, relay-hint-pattern, avatar, movie-maker, carbon-preferences, human-ui-patterns
Differences from the upstream gallia repo
| Item | Upstream adom-inc/gallia | This HD bundle |
|---|---|---|
bootstrap.sh | present (legacy cloud-container bootstrap) | removed โ HD does its own bootstrap |
install.mjs oldSkillDirs cleanup loop | present | removed |
install.mjs nested-adom-skill cleanup | present | removed |
install.mjs ~/.claude/commands/ scrub | present | removed |
install.mjs ยง1b3 broken-extension removal | present | removed |
install.mjs ยง1b5 ds-queue retirement | present | removed |
install.mjs ยง3 + ยง4 MCP cleanup | present | removed โ no MCP servers anywhere |
install.mjs ยง4b gchat / kel legacy cleanup | present | removed |
install.mjs ยง4c desktop-conduit / AV retirement | present | removed |
install.mjs ยง4d2 jst / neon-mirror / piper-tts retirement | present | removed |
install.mjs ยง4d skill-pilot retirement | present | removed |
install.mjs ยง4e adom-rc retirement | present | removed |
install.mjs ยง8 legacy check-kicad-update.sh cron scrub + stale-watchdog else-branch | present | removed |
install.mjs shrinks from 1434 โ 976 lines (-32%). The bundle tarball ships at 4.9 MB (641 files) vs ~16 MB stale.
Bundle contents
gallia/
โโโ install.mjs # cleaned installer (no legacy uninstall code)
โโโ package.json # npm deps for installer + MCP servers
โโโ default-agents.json # which agents to install from the wiki
โโโ memory-rules.md # global memory hygiene rules
โโโ PORT-REGISTRY.md # platform port allocations
โโโ skills/ # 117 SKILL.md packages
โโโ services/ # service skeletons (kicad-cli, ds-extract, oauth-gateway)
โโโ hooks/ # statusline.sh, check-updates.sh, refresh-wiki-catalog.mjs
โโโ scripts/ # bootstrap-guest, publish-to-wiki, claude-auth, etc.
โโโ dns/, jst/ # MCP servers (source โ not auto-registered by installer)
โโโ symbol-creator/ # KiCad/EAGLE symbol creator MCP server + UI
โโโ footprint-creator/ # KiCad footprint creator MCP server + UI
โโโ youtube/ # YouTube OAuth + API tooling
โโโ brand/, docs/, plans/, demo/
โโโ .claude/ # per-project Claude Code config baseline
Source + build process
- Skill source: adom-inc/gallia. This bundle never touches that repo โ it snapshots
HEAD, applies HD-specific transforms in a sandbox, ships. - Build pipeline: adom-inc/gallia-hd-bundle is the HD layer. It owns the build script, the strip policy (
strip-install-mjs.py, 12 exact-match excisions, fails loud on any upstream drift), and a.gallia-pinrecording which gallia commit each bundle was built from.
Rebuild flow:
cd ~/project/gallia && git pull
cd ~/project/gallia-hd-bundle && bash build.sh
git add .gallia-pin && git commit -m "Build bundle from gallia $(cat .gallia-pin | cut -c1-7)" && git push
Every build uploads two assets to this page: gallia-bundle.tar.gz and bundle-meta.json. The meta sidecar pins the exact gallia commit, build timestamp, tarball SHA256, skill count, and the strip list applied โ so for any deployed bundle you can answer "which gallia SHA was this built from?" with a single curl:
curl -s https://wiki-ufypy5dpx93o.adom.cloud/static/apps/gallia-bundle/bundle-meta.json | jq .
The page's asset upload history (visible via adom-wiki page log app/gallia-bundle) is the canonical build log.
