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.42
14 files changed
+38−26
._README.mdadded⋯ 1 unchanged line ⋯
._SKILL.mdadded⋯ 1 unchanged line ⋯
._install.shadded⋯ 1 unchanged line ⋯
._package.jsonadded⋯ 1 unchanged line ⋯
._uninstall.shadded⋯ 1 unchanged line ⋯
._version.jsonadded⋯ 1 unchanged line ⋯
dist/linux/._adom-desktopadded⋯ 1 unchanged line ⋯
docs/._hero.pngadded⋯ 1 unchanged line ⋯
docs/._screenshot-fusion.pngadded⋯ 1 unchanged line ⋯
docs/._screenshot-gui.pngadded⋯ 1 unchanged line ⋯
docs/._screenshot-kicad.pngadded⋯ 1 unchanged line ⋯
docs/._screenshot-pup.pngadded⋯ 1 unchanged line ⋯
install.sh+37−25@@ -1,28 +1,44 @@ #!/usr/bin/env bash-# adom-desktop installer — runs in the Adom container via `adompkg install`.+# adom-desktop installer — installs cleanly under adom-wiki (the official wiki CLI; adompkg retired). #-# Bundled-artifact model (v1.8.147+): the Linux CLI companion + the Claude skill-# bundle ship INSIDE this package's tarball (dist/linux/, skills/). We SYMLINK-# them onto PATH / into ~/.claude/skills via the adompkg sh-helpers — the-# lint-sanctioned convention (no copy-into-standard-targets). No download, no-# version.json dependency: the binary is right here, SHA-fixed by the published-# tarball.+# Bundled-artifact model: the Linux CLI companion + the Claude skill bundle ship INSIDE this+# package's tarball (dist/linux/, skills/). We SYMLINK them onto PATH / into ~/.claude/skills.+# SELF-CONTAINED: no dependency on any package-manager's shell helpers (formerly+# `source "$(adompkg sh-helpers)"`), so it works under adom-wiki, adompkg, or a bare run. #-# What it does NOT do: install the Windows/macOS GUI. That runs on the user's-# laptop; the signed Windows installer is bundled at dist/win/ for Hydrogen-# Desktop to pull + run there. The skills tell Claude how to get the GUI onto-# the laptop.+# What it does NOT do: install the Windows/macOS GUI. That runs on the user's laptop; the signed+# Windows installer is bundled at dist/win/ for Hydrogen Desktop to pull + run there. set -euo pipefail HERE="$(cd "$(dirname "$0")" && pwd)"-cd "$HERE" # sh-helpers symlink FROM $PWD; `adompkg install` sets cwd here too.+cd "$HERE" # install runs with cwd = the extracted module dir (adom-wiki/adompkg both set it). -# adompkg shell helpers: adompkg-link-bin / adompkg-link-skill (ln -sfn ...).-if ! command -v adompkg >/dev/null 2>&1; then- echo "[adom-desktop] FATAL: adompkg not on PATH — install via 'adompkg install adom-desktop'." >&2- exit 1-fi-# shellcheck disable=SC1090-source "$(adompkg sh-helpers)"+# Self-contained symlink helpers (replacing adompkg-link-bin / adompkg-link-skill). Convention:+# every install target is a symlink back into the module dir, so edits propagate and reinstalls+# don't clobber. Portable (no GNU-only `ln -T`): a real-dir squatter is replaced first.+link_bin() { # <name> [relative-path, default bin/<name>]+ local name="$1" rel="${2:-bin/$1}" target="${ADOM_BIN_DIR:-$HOME/.local/bin}"+ mkdir -p "$target"+ if [ -L "$target/$name" ]; then+ local existing; existing="$(readlink "$target/$name" 2>/dev/null || true)"+ [ -n "$existing" ] && [ "$existing" != "$PWD/$rel" ] && \+ echo "WARNING: $target/$name already points to $existing — overwriting (two packages claim '$name')." >&2+ fi+ ln -sfn "$PWD/$rel" "$target/$name"+ chmod +x "$PWD/$rel" 2>/dev/null || true+ echo "Linked $target/$name -> $PWD/$rel"+}+link_skill() { # <slug> [relative-path, default skills/<slug>]+ local slug="$1"+ [ -n "$slug" ] || { echo "ERROR: link_skill: empty slug — refusing." >&2; return 1; }+ local rel="${2:-skills/$slug}" target="$HOME/.claude/skills" dest+ dest="$target/$slug"; mkdir -p "$target"+ [ -e "$PWD/$rel" ] || { echo "ERROR: link_skill: source '$PWD/$rel' missing — refusing (dest untouched)." >&2; return 1; }+ # A NON-symlink real dir (e.g. from another installer) squatting the slug would make ln nest+ # inside it as <slug>/<slug>; replace it instead.+ [ -e "$dest" ] && [ ! -L "$dest" ] && { echo "WARNING: '$slug' was a real dir — replacing with symlink." >&2; rm -rf "$dest"; }+ ln -sfn "$PWD/$rel" "$dest"+ echo "Linked $dest -> $PWD/$rel"+} OS="$(uname -s | tr '[:upper:]' '[:lower:]')" case "$OS" in@@ -33,8 +49,7 @@ case "$OS" in exit 1 fi chmod +x "$CLI"- # Symlink ~/.local/bin/adom-desktop -> $PWD/dist/linux/adom-desktop.- adompkg-link-bin adom-desktop "$CLI"+ link_bin adom-desktop "$CLI" # ~/.local/bin/adom-desktop -> $PWD/dist/linux/adom-desktop case ":$PATH:" in *":$HOME/.local/bin:"*) ;; *) echo "[adom-desktop] NOTE: $HOME/.local/bin is not on PATH — add it to your shell rc." ;;@@ -54,14 +69,11 @@ case "$OS" in esac # Claude skill bundle — symlink each skills/<slug>/ into ~/.claude/skills/<slug>.-# Slugs staged at publish time: adom-desktop, adom-desktop-pup, adom-desktop-kicad,-# adom-desktop-fusion, adom-desktop-direct-api, adom-desktop-installer,-# adom-desktop-discovery. if [ -d "skills" ]; then for d in skills/*/; do [ -f "$d/SKILL.md" ] || continue slug="$(basename "$d")"- adompkg-link-skill "$slug" "skills/$slug"+ link_skill "$slug" "skills/$slug" done fi
page.json+1−1@@ -1,6 +1,6 @@ { "slug": "adom-desktop",- "version": "1.9.41",+ "version": "1.9.42", "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": [