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-open-url-mac
description: >
macOS platform companion to hydrogen-open-url — the Apple-specific half of "open a URL
in a native browser". The six ways to open a URL (Hydrogen webview tab, Hydrogen window,
Pup, native browser, the Browser Picker, headless curl), the decide-for-the-user
rule, the /open-url + /open-in-profile + prefs API all live in hydrogen-open-url
(adom/hd-bootstrap); THIS skill carries only the macOS native-browser mechanics:
launching via LaunchServices (open / open -a "<App Name>" / --new-window
fresh windows), macOS browser-profile dirs, and the control-URL discovery file
(~/.adom/hd-control-url). Trigger words — open url macos, open -a, native browser mac, Safari Chrome
Arc Edge, fresh window mac, browser profiles mac, hd-control-url.
hydrogen-open-url (macOS) — opening URLs in native macOS browsers
This is the macOS half of hydrogen-open-url. The decision framework — the six ways to
open a URL, "decide for the user — DON'T hand them the picker", the
/open-url · /open-in-profile · /browser-picker/prefs API, the fresh-window
rationale for auth flows — is host-agnostic and lives in the generic hydrogen-open-url
skill. Read that first; this skill only covers how the native-browser path (#4)
launches on a Mac.
Control-URL discovery — ~/.adom/hd-control-url
Same as the generic skill: read the live base URL from ~/.adom/hd-control-url
(BASE="$(cat ~/.adom/hd-control-url)") — never hard-code the port. On macOS that file
resolves to the adom-host gateway from inside the workspace machine, because the
Apple vz VM does NOT mirror host loopback (127.0.0.1 inside the machine is NOT the
Mac, and Hydrogen's host services bind 0.0.0.0). See hydrogen-api-mac for the gateway detail.
Native browsers launch via LaunchServices (open / open -a)
The /open-in-profile and direct native-browser paths drive macOS browsers through
LaunchServices, not by resolving an .exe:
- Default / shell-open:
open <url>(LaunchServices picks the user's default browser) —open_in_browser_profile/screenshot.rs. - Named browser:
open -a "<App Name>" <url>.screenshot.rsmapschrome→"Google Chrome",edge→"Microsoft Edge",firefox→"Firefox",brave→"Brave Browser"; Safari and Arc are likewise app-name targets. Using the app name (not a path) handles user-relocated installs uniformly. - Fresh window (
fresh:true): to force a brand-new window/process Hydrogen resolves a concrete browser binary and passes--new-window(Chromium) /-new-window(Firefox) before the URL —open -a … <url>alone opens a tab, not a window (lib.rsfresh-window branch). A freshly-launched window auto-foregrounds, so this is the path for Claude/Adom auth pages the user must complete (the generic skill defaults the fresh toggle ON for those).
macOS browser-profile dirs
GET /browser-profiles enumerates the user's installed browsers + profiles so
/open-in-profile {browser, profileDir} can target the work profile (where saved
logins live). On macOS those profiles live under the app's Application Support dir
(e.g. ~/Library/Application Support/Google/Chrome/<Profile>,
…/Microsoft Edge/<Profile>). Discover them via the endpoint rather than assuming a
path or browser — don't hard-code chrome/edge.
On macOS the native-browser path is LaunchServices (open / open -a) with app-name
targets, never a resolved executable path.
---
name: hydrogen-open-url-mac
description: >
macOS platform companion to hydrogen-open-url — the Apple-specific half of "open a URL
in a native browser". The six ways to open a URL (Hydrogen webview tab, Hydrogen window,
Pup, native browser, the Browser Picker, headless curl), the decide-for-the-user
rule, the /open-url + /open-in-profile + prefs API all live in hydrogen-open-url
(adom/hd-bootstrap); THIS skill carries only the macOS native-browser mechanics:
launching via LaunchServices (`open` / `open -a "<App Name>"` / `--new-window`
fresh windows), macOS browser-profile dirs, and the control-URL discovery file
(~/.adom/hd-control-url). Trigger words — open url macos, open -a, native browser mac, Safari Chrome
Arc Edge, fresh window mac, browser profiles mac, hd-control-url.
---
# hydrogen-open-url (macOS) — opening URLs in native macOS browsers
This is the **macOS half** of `hydrogen-open-url`. The decision framework — the six ways to
open a URL, "decide for the user — DON'T hand them the picker", the
`/open-url` · `/open-in-profile` · `/browser-picker/prefs` API, the fresh-window
rationale for auth flows — is host-agnostic and lives in the generic **hydrogen-open-url**
skill. Read that first; this skill only covers how the **native-browser path (#4)**
launches on a Mac.
## Control-URL discovery — `~/.adom/hd-control-url`
Same as the generic skill: read the live base URL from `~/.adom/hd-control-url`
(`BASE="$(cat ~/.adom/hd-control-url)"`) — never hard-code the port. On macOS that file
resolves to the **`adom-host` gateway** from inside the workspace machine, because the
Apple `vz` VM does NOT mirror host loopback (`127.0.0.1` inside the machine is NOT the
Mac, and Hydrogen's host services bind `0.0.0.0`). See `hydrogen-api-mac` for the gateway detail.
## Native browsers launch via LaunchServices (`open` / `open -a`)
The `/open-in-profile` and direct native-browser paths drive macOS browsers through
LaunchServices, not by resolving an `.exe`:
- **Default / shell-open:** `open <url>` (LaunchServices picks the user's default
browser) — `open_in_browser_profile` / `screenshot.rs`.
- **Named browser:** `open -a "<App Name>" <url>`. `screenshot.rs` maps
`chrome→"Google Chrome"`, `edge→"Microsoft Edge"`, `firefox→"Firefox"`,
`brave→"Brave Browser"`; **Safari** and **Arc** are likewise app-name targets. Using
the app *name* (not a path) handles user-relocated installs uniformly.
- **Fresh window (`fresh:true`):** to force a brand-new window/process Hydrogen resolves a
concrete browser binary and passes `--new-window` (Chromium) / `-new-window` (Firefox)
before the URL — `open -a … <url>` alone opens a tab, not a window (`lib.rs`
fresh-window branch). A freshly-launched window auto-foregrounds, so this is the path
for **Claude/Adom auth pages the user must complete** (the generic skill defaults the
fresh toggle ON for those).
## macOS browser-profile dirs
`GET /browser-profiles` enumerates the user's installed browsers + profiles so
`/open-in-profile {browser, profileDir}` can target the **work** profile (where saved
logins live). On macOS those profiles live under the app's Application Support dir
(e.g. `~/Library/Application Support/Google/Chrome/<Profile>`,
`…/Microsoft Edge/<Profile>`). Discover them via the endpoint rather than assuming a
path or browser — don't hard-code `chrome`/`edge`.
On macOS the native-browser path is LaunchServices (`open` / `open -a`) with app-name
targets, never a resolved executable path.