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.86
8 files changed
+68−30
README.md+62−28@@ -1,28 +1,28 @@ # Adom Desktop -**The bridge between a cloud AI and your real Windows desktop.** A Claude agent in an Adom container โ or Hydrogen Desktop running locally โ connects to Adom Desktop over an encrypted relay and drives your *actual* machine: your signed-in browser, KiCad, Fusion 360, the shell, files, window automation, screenshots. **Bridges** extend that reach to any app. You stay in control โ every command is visible in the Activity Log, side-effecting commands can be gated behind a one-click approval, and it binds to `127.0.0.1` only, so nothing off your machine can reach it.+**The bridge between a cloud AI and your real Windows desktop.** A Claude agent in an Adom container, or Hydrogen Desktop running locally, connects to Adom Desktop over an encrypted relay and drives your *actual* machine: your signed-in browser, KiCad, Fusion 360, the shell, files, window automation, screenshots. **Bridges** extend that reach to any app. You stay in control: every command is visible in the Activity Log, side-effecting commands can be gated behind a one-click approval, and it binds to `127.0.0.1` only, so nothing off your machine can reach it.  -- ๐ฅ๏ธ **Full desktop control** โ windows, input, screenshots, UI Automation, the shell, files, the registry, WSL.-- ๐ **Bridges** โ first-class mini-apps: Puppeteer (browser), KiCad, Fusion 360, your real signed-in browser, Blender, or your own.-- ๐ **You're in control** โ localhost-only, an install-consent trust model, a visible activity log, and an approval gate for the remote cloud-AI path.-- ๐ **Multi-machine** โ one relay can hold many desktops; address any of them by name, or fan a command out to all.-- ๐ **Self-updating & signed** โ every release is Azure code-signed and auto-updates from this page.+- **Full desktop control:** windows, input, screenshots, UI Automation, the shell, files, the registry, WSL.+- **Bridges:** first-class mini-apps. Puppeteer (browser), KiCad, Fusion 360, your real signed-in browser, Blender, or your own.+- **You are in control:** localhost-only, an install-consent trust model, a visible activity log, and an approval gate for the remote cloud-AI path.+- **Multi-machine:** one relay can hold many desktops. Address any of them by name, or fan a command out to all.+- **Self-updating and signed:** every release is Azure code-signed and auto-updates from this page. ## How it works  -The cloud AI never touches your machine directly. It sends a verb to the **relay**; Adom Desktop โ connected out to that relay from your desktop โ executes it against Windows or forwards it to a bridge, and streams the result back. A co-resident sibling app (Hydrogen Desktop) can skip the relay and POST straight to the **loopback HTTP API** at `127.0.0.1`.+The cloud AI never touches your machine directly. It sends a verb to the **relay**; Adom Desktop, connected out to that relay from your desktop, executes it against Windows or forwards it to a bridge, and streams the result back. A co-resident sibling app (Hydrogen Desktop) can skip the relay and POST straight to the **loopback HTTP API** at `127.0.0.1`. ``` Adom container (this package) User's laptop-โโโโโโโโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโโโโโ-โ adom-desktop CLI + skillsโ โ relay โ โ Adom Desktop GUI (Tauri) โ-โ (Claude drives verbs) โ โ KiCad ยท Fusion ยท Chrome โ-โโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ shell ยท files ยท screens โ- โโโโโโโโโโโโโโโโโโโโโโโโโโโโ++--------------------------+ +--------------------------++| adom-desktop CLI + skills| <-relay-> | Adom Desktop GUI (Tauri) |+| (Claude drives verbs) | | KiCad, Fusion, Chrome |++--------------------------+ | shell, files, screens |+ +--------------------------+ ``` ## Install (in an Adom container)@@ -31,26 +31,48 @@ Adom container (this package) User's laptop adom-wiki pkg install adom/adom-desktop ``` -That installs the **container-side** pieces โ the `adom-desktop` CLI (SHA256-verified against this page's `version.json`) and the Claude skill bundle into `~/.claude/skills/`:+That installs the **container-side** pieces: the `adom-desktop` CLI (SHA256-verified against this page's `version.json`) and the Claude skill bundle into `~/.claude/skills/`: | Skill | What Claude learns | |---|---|-| `adom-desktop` | the main verb catalog โ screenshots, files, shell, windows, notifications |+| `adom-desktop` | the main verb catalog: screenshots, files, shell, windows, notifications | | `adom-desktop-pup` | real-Chrome (Puppeteer) automation: sessions, tabs, eval, recording |-| `adom-desktop-notify` | native Windows toasts โ progress bars, sticky reminders, buttons that round-trip |+| `adom-desktop-notify` | native Windows toasts: progress bars, sticky reminders, buttons that round-trip | | `adom-desktop-bridge-sdk` | author your own bridge: `bridge.json`, health/describe/rich-hint contracts, lifecycle |-| `adom-desktop-bridge-ownership` | the boundary โ what AD core owns vs what a bridge author owns |+| `adom-desktop-bridge-ownership` | the boundary: what AD core owns versus what a bridge author owns | | `adom-desktop-multi-ad` | address multiple Adom Desktops on one relay (`--target`, fan-out) | | `adom-desktop-direct-api` | the loopback HTTP API for sibling apps |-| `adom-desktop-installer` ยท `adom-desktop-windows-host` ยท `adom-desktop-discovery` | install/host/discovery details |+| `adom-desktop-installer`, `adom-desktop-windows-host`, `adom-desktop-discovery` | install, host, and discovery details | `adom-wiki pkg update` keeps it current. The **KiCad** and **Fusion 360** bridge skills install from their own cloud-owned bridge pages. ## The laptop GUI -The **Windows GUI** installs separately โ a signed NSIS installer served from this page (*Download for your machine* above; Hydrogen Desktop installs it automatically). It installs to `%LOCALAPPDATA%\Adom Desktop\`, adds a tray icon, starts on login, and **auto-updates itself** from this page's `version.json` (prompt by default; every 4h + on launch).+The **Windows GUI** installs separately: a signed NSIS installer served from this page (*Download for your machine* above; Hydrogen Desktop installs it automatically). It installs to `%LOCALAPPDATA%\Adom Desktop\`, adds a tray icon, starts on login, and **auto-updates itself** from this page's `version.json` (prompt by default; every 4h and on launch). -The main window (top) puts everything on one surface โ **Connections** (each relay + the other Adom Desktops on it as peers), the **Activity Log** (every command, badged by source + type, filterable), the **Bridges sidebar** (installed bridges as mini-app cards), the provisioned **Runtimes**, and the footer approval bar.+The main window (top) puts everything on one surface: **Connections** (each relay plus the other Adom Desktops on it as peers), the **Activity Log** (every command, badged by source and type, filterable), the **Bridges sidebar** (installed bridges as mini-app cards), the provisioned **Runtimes**, and the footer approval bar.++## Downloads++Everything a real user installs comes from this page.++| Artifact | Platform | What it is | How to get it |+|---|---|---|---|+| Signed installer (NSIS) | Windows x64 | The GUI desktop app. Azure Trusted Signing. Installs to `%LOCALAPPDATA%\Adom Desktop\` and auto-updates. | The *Download for your machine* box at the top of this page. This is the one promoted Windows download. |+| CLI + skills package | Linux (container) | The `adom-desktop` CLI a cloud container runs, plus the Claude skill set. SHA256-verified on install. | `adom-wiki pkg install adom/adom-desktop` |+| `version.json` | manifest | The auto-update manifest the GUI polls: per-platform installer URL, SHA256, and size. | Read automatically by the app; you never fetch it by hand. |++The Windows GUI installer is the only promoted Windows download. There is intentionally no standalone Windows CLI download. macOS is planned; the manifest reserves a slot for it.++## Screenshots++Anything AD can see, it can screenshot, losslessly, with **no focus steal** (`PrintWindow` or full-screen DXGI, never a foreground grab). *Every image on this page was produced by these verbs.* `desktop_screenshot_window` returns a **`screenshots[]` array**: the window plus each owned popup or child dialog as its own image (so a confirm bubble hovering over an app comes back alongside the parent, never missed); `desktop_screenshot_screen` grabs the full virtual screen including borderless popups; `browser_screenshot` grabs the pup viewport. Every shot carries a **`coordMap`** so the AI clicks *what it sees* (`{space:"image", shotId, x, y}` to real screen px, no DPI math). It stays generic: AD returns the rich array, the AI decides. `ad_scroll` even lets the AI page AD's own window to capture content below the fold.++## Recording++++AD records the desktop or a browser session to video. The recorder HUD (above) **requires a `reason`** shown to the user up front, so a recording never starts silently, with live Screen/Microphone toggles and a Start/Stop control. `desktop_recorder_open {reason}` and `desktop_recorder_close` for the desktop; `browser_record_start` and `browser_record_stop` for the pup browser. Built for smooth, high-frame-rate video, not a choppy screenshot loop. ## Bridges @@ -60,22 +82,34 @@ Each bridge is a small, independently-versioned process the app spawns, supervis | Bridge | What it drives | |---|---|-| **Puppeteer** (`browser_*`) | A dedicated Chrome-for-Testing (or Edge) โ open, drive, screenshot, record. |-| **Native Browser** (`nbrowser_*`) | Your *real* signed-in Chrome/Edge profile, for logins & forms. |-| **KiCad** (`kicad_*`) | Schematic + PCB automation, DRC/ERC, gerber/STEP export, 3D render. |-| **Fusion 360** (`fusion_*`) + **APS** (`aps_*`) | Modeling scripts, exports, indexed cloud-file search. |-| **Blender** (`blender_*`) | Headless Python scripting + renders. |+| **Puppeteer** (`browser_*`) | A dedicated Chrome-for-Testing (or Edge): open, drive, screenshot, record. |+| **Native Browser** (`nbrowser_*`) | Your *real* signed-in Chrome/Edge profile, for logins and forms. |+| **KiCad** (`kicad_*`) | Schematic and PCB automation, DRC/ERC, gerber/STEP export, 3D render. |+| **Fusion 360** (`fusion_*`) plus **APS** (`aps_*`) | Modeling scripts, exports, indexed cloud-file search. |+| **Blender** (`blender_*`) | Headless Python scripting and renders. | | **Hydrogen Desktop** (`hd_*`) | The local dev-environment app AD can embed into. | -Install a third-party bridge by pasting its manifest URL, or `bridge_install {"manifestUrl":"โฆ"}`. Build one with the [Bridge SDK](https://wiki.adom.inc/adom/adom-desktop-bridges).+Install a third-party bridge by pasting its manifest URL, or `bridge_install {"manifestUrl":"..."}`. Build one with the [Bridge SDK](https://wiki.adom.inc/adom/adom-desktop-bridges).++## Settings++++Auto-connect behavior, the update channel (**prompt** / auto / off), the shell-approval preference, Hydrogen Desktop integration (including *exit when HD exits*), and runtime prewarming. While embedded in HD, HD-owned preferences show as *managed by Hydrogen Desktop*. -## Security & the approval gate+## Security and the approval gate  -**The trust boundary is install-consent + the localhost bind.** Installing the app (and each bridge) is you granting permission for the AI to drive your machine โ if you don't want that, uninstall. And the app plus every bridge binds `127.0.0.1` **only, never `0.0.0.0`**, so a caller must already be a program you installed on your own machine to reach it. No network attack surface by construction.+**The trust boundary is install-consent plus the localhost bind.** Installing the app (and each bridge) is you granting permission for the AI to drive your machine; if you do not want that, uninstall. And the app plus every bridge binds `127.0.0.1` **only, never `0.0.0.0`**, so a caller must already be a program you installed on your own machine to reach it. No network attack surface by construction.++On top of that, the **remote cloud-AI path is approval-gated.** Verbs that run code or change the machine (`shell_execute`, `run_script`, `launch_process`, `write_file`, `registry_*`, `process_kill`, and so on) require a human grant when they arrive over the *relay*: **+1hr / +24hr** (time-boxed), **Bypass** (indefinite), or **Revoke**. The grant is human-only; local callers (your CLI, HD, bridges) are trusted by transport and never prompt; read-only verbs are never gated.++## Notifications++ -On top of that, the **remote cloud-AI path is approval-gated.** Verbs that run code or change the machine (`shell_execute`, `run_script`, `launch_process`, `write_file`, `registry_*`, `process_kill`, โฆ) require a human grant when they arrive over the *relay* โ **+1hr / +24hr** (time-boxed), **Bypass** (indefinite), or **Revoke**. The grant is human-only; local callers (your CLI, HD, bridges) are trusted by transport and never prompt; read-only verbs are never gated.+AD speaks to you through native Windows toasts via `notify_user`: plain alerts, sticky reminders, progress bars, and interactive toasts with buttons whose click round-trips back to the caller. The shell-approval toast carries *Approve 1 hr / 24 hr / Bypass Permissions* so you can grant from the toast without opening the window. A bridge, even one on a different machine, can `notify_user` with a `target` to reach you wherever you are. ## Verbs
SKILL.md+2@@ -1608,6 +1608,8 @@ Take screenshots of the user's desktop or individual windows. All screenshots us - Example: `adom-desktop desktop_activity_filter '{"bridge":"kicad"}'` then `adom-desktop desktop_activity_filter '{"clear":true}'` - `desktop_screenshot_window` -- Capture a specific window by HWND - `desktop_screenshot_screen` -- Capture the entire desktop (all monitors)+- `desktop_ad_scroll` (v1.9.86+) -- **Scroll AD's OWN window panels.** AD is a fully AI-controllable app, so you can drive its own scrollbars โ most usefully to page the **bridges sidebar** and screenshot cards that are below the fold. Args: `panel` (`bridges` default | `activity` | `connections`), `to` (`top`|`bottom`, absolute โ wins over `dy`), `dy` (relative px, default 400; negative = up). Returns `{ok, panel, scrolled, state:{scrollTop,scrollHeight,clientHeight,atTop,atBottom,found}|null, _hint}` โ round-tripped from the live window so you can **loop until `state.atBottom==true`**. A collapsed bridges sidebar is auto-expanded first; `state==null` means the panel didn't report (collapsed/empty).+ - Capture-all-cards workflow: `desktop_ad_scroll '{"panel":"bridges","to":"top"}'` โ `desktop_screenshot_window` (AD hwnd) โ `desktop_ad_scroll '{"panel":"bridges"}'` โ screenshot โ repeat until `atBottom`. ### Browser Automation (Puppeteer)
dist/linux/adom-desktop⋯ 1 unchanged line ⋯
docs/recorder.pngadded⋯ 1 unchanged line ⋯
docs/toast.pngadded⋯ 1 unchanged line ⋯
package.json+1−1@@ -1,6 +1,6 @@ { "slug": "adom-desktop", - "version": "1.9.84", + "version": "1.9.86", "type": "app", "hero": { "path": "docs/hero.png" }, "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.",
page.json+1−1@@ -1,6 +1,6 @@ { "slug": "adom-desktop",- "version": "1.9.85",+ "version": "1.9.86", "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+2@@ -1608,6 +1608,8 @@ Take screenshots of the user's desktop or individual windows. All screenshots us - Example: `adom-desktop desktop_activity_filter '{"bridge":"kicad"}'` then `adom-desktop desktop_activity_filter '{"clear":true}'` - `desktop_screenshot_window` -- Capture a specific window by HWND - `desktop_screenshot_screen` -- Capture the entire desktop (all monitors)+- `desktop_ad_scroll` (v1.9.86+) -- **Scroll AD's OWN window panels.** AD is a fully AI-controllable app, so you can drive its own scrollbars โ most usefully to page the **bridges sidebar** and screenshot cards that are below the fold. Args: `panel` (`bridges` default | `activity` | `connections`), `to` (`top`|`bottom`, absolute โ wins over `dy`), `dy` (relative px, default 400; negative = up). Returns `{ok, panel, scrolled, state:{scrollTop,scrollHeight,clientHeight,atTop,atBottom,found}|null, _hint}` โ round-tripped from the live window so you can **loop until `state.atBottom==true`**. A collapsed bridges sidebar is auto-expanded first; `state==null` means the panel didn't report (collapsed/empty).+ - Capture-all-cards workflow: `desktop_ad_scroll '{"panel":"bridges","to":"top"}'` โ `desktop_screenshot_window` (AD hwnd) โ `desktop_ad_scroll '{"panel":"bridges"}'` โ screenshot โ repeat until `atBottom`. ### Browser Automation (Puppeteer)