app
Adom Bridge
Public Made by Adomby adom
Adom Bridge unleashes your AI onto your full PC: full power, full safety. The AI breaks out of the container it runs in and onto your real machine, managing and running your entire laptop as you: launch apps, move files, drive any window, control KiCad, Fusion 360 or your real signed-in browser. Works with any AI, cloud or local (Claude Desktop, Claude Code, Codex), no Hydrogen required. Bridge and its bridges are an operating system for AI, with managed Node and Python runtimes, and a human-onl
← Commit history
Publish 1.9.106
6 files changed
+32−16
SKILL.md+13−4@@ -290,11 +290,18 @@ adom-desktop pull_file '{"filePaths":["C:\\Users\\john\\Downloads\\image.png"]," ## Available Commands -**Get full structured command list with descriptions, args, and prerequisites:**+**Get the full structured command list with descriptions, args, and prerequisites:** ```bash-adom-desktop list_commands+adom-desktop commands # aliases: list_commands, help+adom-desktop --target <name> commands # + THAT box's installed bridges (installed_bridges_on_target) ```-Returns categorized JSON with every command, its required/optional args, return values, prerequisites, and workflow notes. Use this when you need to discover available commands or understand what a command expects.+Returns categorized JSON with every command, its required/optional args, return values, prerequisites, and workflow notes. Run this FIRST when you're unsure what a verb is called.++**Two kinds of verbs (v1.9.103 — don't confuse them):**+- **BUILT-IN AD-core verbs** are always available on every Adom Desktop, no install, NOT bridges. This is where screenshots, windows, input, files, registry, shell, tunnel, update, and notify live. A whole-screen shot is `desktop_screenshot_screen`; one window (with chrome) is `desktop_screenshot_window {"hwnd":N}` or `{"titleContains":"..."}` (get hwnds from `desktop_list_windows`).+- **BRIDGE verbs** (`kicad_`/`fusion_`/`browser_`/`blender_`/`nbrowser_`…) need that bridge installed — see `installed_bridges_on_target` in `commands`, or run `bridge_list`.++If a verb returns `errorCode:"unknown_verb"`, **read the error's `_hint`** — it carries a fuzzy "did you mean" (e.g. `desktop_screenshot` → `desktop_screenshot_screen`) and tells you whether the right verb is built-in or a bridge. Don't conclude a capability is "a missing bridge" from a guessed verb name; call `commands` and check. ### Connection Management @@ -1547,6 +1554,8 @@ Two ways to use it: `screenRect` is in the SAME physical-px space as `desktop_list_windows` rects and the `desktop_click` default (`space:"screen"`). +> **Driving a GUI app that pops error boxes / modal dialogs? Read the dedicated [`adom-desktop-window-capture`](WINDOW_CAPTURE.md) skill.** `desktop_screenshot_window {hwnd}` captures ONE window AND the child dialogs / error boxes it owns, even when the window is backgrounded/occluded/minimized (PrintWindow, no focus steal). It is the breakthrough for automating native apps whose dialogs a full-screen grab can't see. The rest of this section is the reference; that skill is the how-and-why.+ **Popups (owned):** As of **v1.8.177**, `desktop_screenshot_window` **also captures the window's OWNED popups** — borderless confirm bubbles (Chromium's "Remove '\<ext\>'?"), owned dropdowns, owned dialogs — that don't enumerate in `desktop_list_windows` and aren't visible in a PrintWindow of the main window. They ride back as a top-level **`screenshots[]`** array (the same generic shape `kicad_screenshot_all` uses; the CLI auto-pulls each entry's `fullPath`→`localPath` and `safePath`→`localSafePath`). `ownedPopupCount` is always present (0 = none). Each entry carries `hwnd`, `title`, `kind:"owned_popup"`, and its own `coordMap`+`shotId`, so you can **click the bubble's buttons** with `{space:"image", shotId, x, y}` or drive them in the background by name via `desktop_ui_click {scope:"popups"}`. This is the generic mechanism — there's no app-specific "Chrome bubble" verb; every window screenshot surfaces any owned popups so you get the data and decide. **Use `desktop_screenshot_screen`** (full virtual-screen grab) only for popups *not owned* by your target window, or to see everything at once. **Screen geometry on every shot (v1.8.178):** every `desktop_screenshot_window` / `_screen` response now carries:@@ -1566,7 +1575,7 @@ Two ways to use it: - `hwnd` (int) OR `titleContains` (string) - `flash`: `"until_focused"` | `"stop"` - `progress`: `{state: "normal"|"paused"|"error"|"indeterminate"|"none", value?: 0..100}` — **state→color**: normal=green, **paused=yellow** (use for human-in-the-loop gates: captcha / 2FA / login), error=red, indeterminate=marquee, none=clear.- - `overlay`: `{badge: "adom"|"none", icon?: "<.ico path or base64>", tooltip?: "<hover>"}` — built-in badges are `adom` (the Adom logo — a "driven by Adom" trust tell) and `none` (clear); 3rd-party bridges pass their own `icon` (`.ico` path or base64; PNG not yet supported). `tooltip` is the overlay's accessible description.+ - `overlay`: `{badge: "adom"|"none", icon?: "<PNG or .ico — file path OR base64>", tooltip?: "<hover>"}` — built-in badges are `adom` (the Adom logo — a "driven by Adom" trust tell) and `none` (clear); 3rd-party bridges pass their **own** `icon` (a **PNG** or `.ico`, given as a file path or base64 — AD magic-sniffs the format and renders it at 32px). AD stays generic here: it paints whatever overlay art you hand it, so a bridge ships its own badge instead of asking for a named variant. `tooltip` is the overlay's accessible description. - Returns `{ok, hwnd, title, applied:[...]}`. Clears: `flash:"stop"`, `progress.state:"none"`, `overlay.badge:"none"` — call these on task-end / window-close to clean up. - Example (long task, human gate, then done): ```bash
dist/linux/adom-desktop⋯ 1 unchanged line ⋯
package.json+1−1@@ -1,6 +1,6 @@ { "slug": "adom-desktop", - "version": "1.9.105", + "version": "1.9.106", "type": "app", "description": "Laptop bridge: file transfer, screenshots, notifications, KiCad + Fusion 360 control, real-Chrome (Puppeteer) automation, and Hydrogen Desktop proxy. One install gives Claude every desktop verb it needs.", "discovery_pitch": "Use when a cloud AI needs to reach a real Windows desktop: run shell commands, capture screenshots, drive native apps and browsers, transfer files, and control KiCad / Fusion 360 / third-party bridges.",
page.json+1−1@@ -1,6 +1,6 @@ { "slug": "adom-desktop",- "version": "1.9.105",+ "version": "1.9.106", "type": "app", "description": "Laptop bridge: file transfer, screenshots, notifications, KiCad + Fusion 360 control, real-Chrome (Puppeteer) automation, and Hydrogen Desktop proxy. One install gives Claude every desktop verb it needs.", "keywords": [
skills/adom-desktop/SKILL.md+11−4@@ -290,11 +290,18 @@ adom-desktop pull_file '{"filePaths":["C:\\Users\\john\\Downloads\\image.png"]," ## Available Commands -**Get full structured command list with descriptions, args, and prerequisites:**+**Get the full structured command list with descriptions, args, and prerequisites:** ```bash-adom-desktop list_commands+adom-desktop commands # aliases: list_commands, help+adom-desktop --target <name> commands # + THAT box's installed bridges (installed_bridges_on_target) ```-Returns categorized JSON with every command, its required/optional args, return values, prerequisites, and workflow notes. Use this when you need to discover available commands or understand what a command expects.+Returns categorized JSON with every command, its required/optional args, return values, prerequisites, and workflow notes. Run this FIRST when you're unsure what a verb is called.++**Two kinds of verbs (v1.9.103 — don't confuse them):**+- **BUILT-IN AD-core verbs** are always available on every Adom Desktop, no install, NOT bridges. This is where screenshots, windows, input, files, registry, shell, tunnel, update, and notify live. A whole-screen shot is `desktop_screenshot_screen`; one window (with chrome) is `desktop_screenshot_window {"hwnd":N}` or `{"titleContains":"..."}` (get hwnds from `desktop_list_windows`).+- **BRIDGE verbs** (`kicad_`/`fusion_`/`browser_`/`blender_`/`nbrowser_`…) need that bridge installed — see `installed_bridges_on_target` in `commands`, or run `bridge_list`.++If a verb returns `errorCode:"unknown_verb"`, **read the error's `_hint`** — it carries a fuzzy "did you mean" (e.g. `desktop_screenshot` → `desktop_screenshot_screen`) and tells you whether the right verb is built-in or a bridge. Don't conclude a capability is "a missing bridge" from a guessed verb name; call `commands` and check. ### Connection Management @@ -1568,7 +1575,7 @@ Two ways to use it: - `hwnd` (int) OR `titleContains` (string) - `flash`: `"until_focused"` | `"stop"` - `progress`: `{state: "normal"|"paused"|"error"|"indeterminate"|"none", value?: 0..100}` — **state→color**: normal=green, **paused=yellow** (use for human-in-the-loop gates: captcha / 2FA / login), error=red, indeterminate=marquee, none=clear.- - `overlay`: `{badge: "adom"|"none", icon?: "<.ico path or base64>", tooltip?: "<hover>"}` — built-in badges are `adom` (the Adom logo — a "driven by Adom" trust tell) and `none` (clear); 3rd-party bridges pass their own `icon` (`.ico` path or base64; PNG not yet supported). `tooltip` is the overlay's accessible description.+ - `overlay`: `{badge: "adom"|"none", icon?: "<PNG or .ico — file path OR base64>", tooltip?: "<hover>"}` — built-in badges are `adom` (the Adom logo — a "driven by Adom" trust tell) and `none` (clear); 3rd-party bridges pass their **own** `icon` (a **PNG** or `.ico`, given as a file path or base64 — AD magic-sniffs the format and renders it at 32px). AD stays generic here: it paints whatever overlay art you hand it, so a bridge ships its own badge instead of asking for a named variant. `tooltip` is the overlay's accessible description. - Returns `{ok, hwnd, title, applied:[...]}`. Clears: `flash:"stop"`, `progress.state:"none"`, `overlay.badge:"none"` — call these on task-end / window-close to clean up. - Example (long task, human gate, then done): ```bash
version.json+6−6@@ -1,14 +1,14 @@ { "manifest_version": 1,- "version": "1.9.105",+ "version": "1.9.106", "released_at": "2026-07-14T00:00:00Z", "windows": {- "installer_url": "https://wiki.adom.inc/download/adom/adom-desktop/1.9.105/Adom.Desktop_1.9.105_windows_x64-setup.exe",- "installer_filename": "Adom.Desktop_1.9.105_windows_x64-setup.exe",- "installer_sha256": "dd7fedb1ab25f529b121ae6c3ce680515dc8b27ea0d4dabfa0495bf86ecc8886",- "installer_size": 10493552+ "installer_url": "https://wiki.adom.inc/download/adom/adom-desktop/1.9.106/Adom.Desktop_1.9.106_windows_x64-setup.exe",+ "installer_filename": "Adom.Desktop_1.9.106_windows_x64-setup.exe",+ "installer_sha256": "a6c488550c4a4020ecac33a073fbbe2f809ef9f14f1aff72f5bb8d1ef8f21a54",+ "installer_size": 10509728 }, "changelog_url": "https://wiki.adom.inc/adom/adom-desktop", "minimum_required": "1.3.30",- "note": "No cmd-window flash on Puppeteer bridge start/redeploy (missing CREATE_NO_WINDOW on a Node probe)."+ "note": "Disk janitor prunes transient temp dirs (screenshots kept 10 days, capped). Custom PNG taskbar overlay: desktop_taskbar overlay.icon accepts a PNG so a bridge can badge any window with its own art." }