app
Fusion - the Fusion 360 Bridge
Public Made by Adomby adom
Drive Autodesk Fusion 360 from the cloud via Adom Bridge: component libraries, IPC package generation, board layout, exports (STEP/Gerbers/BOM/CPL), fast APS cloud search, and parametric modeling.
← Commit history
Publish 1.9.194
37 files changed
+221−10
dashboard/src/demo_audio.rs+24demo/audio/2d-board.json+8demo/audio/2d-board.mp3demo/audio/3d-board.json+8demo/audio/3d-board.mp3demo/audio/3d-package.json+8demo/audio/3d-package.mp3demo/audio/aps.json+8demo/audio/aps.mp3demo/audio/datahub.json+8demo/audio/datahub.mp3demo/audio/device.json+8demo/audio/device.mp3demo/audio/exports.json+8demo/audio/exports.mp3demo/audio/footprint.json+8demo/audio/footprint.mp3demo/audio/launch.json+8demo/audio/launch.mp3demo/audio/library.json+8demo/audio/library.mp3demo/audio/make-project.json+8demo/audio/make-project.mp3demo/audio/mcp.json+8demo/audio/mcp.mp3demo/audio/open-design.json+8demo/audio/open-design.mp3demo/audio/schematic.json+8demo/audio/schematic.mp3demo/audio/stage.json+8demo/audio/stage.mp3demo/audio/symbol.json+8demo/audio/symbol.mp3demo/captions.json+18page.json+7−10tests/reports/daily-cron-2026-08-24.logtools/release.sh+44dashboard/src/demo_audio.rsadded+24@@ -0,0 +1,24 @@+// GENERATED by the release flow from demo/captions.json + demo/audio/*.mp3+// (dash-demo contract: pre-created adom-tts narration shipped IN the package,+// never synthesized at demo time). Regenerate: tools/gen-demo-audio.+pub fn demo_audio(step: &str) -> Option<&'static [u8]> {+ match step {+ "2d-board" => Some(include_bytes!("../../demo/audio/2d-board.mp3")),+ "3d-board" => Some(include_bytes!("../../demo/audio/3d-board.mp3")),+ "3d-package" => Some(include_bytes!("../../demo/audio/3d-package.mp3")),+ "aps" => Some(include_bytes!("../../demo/audio/aps.mp3")),+ "datahub" => Some(include_bytes!("../../demo/audio/datahub.mp3")),+ "device" => Some(include_bytes!("../../demo/audio/device.mp3")),+ "exports" => Some(include_bytes!("../../demo/audio/exports.mp3")),+ "footprint" => Some(include_bytes!("../../demo/audio/footprint.mp3")),+ "launch" => Some(include_bytes!("../../demo/audio/launch.mp3")),+ "library" => Some(include_bytes!("../../demo/audio/library.mp3")),+ "make-project" => Some(include_bytes!("../../demo/audio/make-project.mp3")),+ "mcp" => Some(include_bytes!("../../demo/audio/mcp.mp3")),+ "open-design" => Some(include_bytes!("../../demo/audio/open-design.mp3")),+ "schematic" => Some(include_bytes!("../../demo/audio/schematic.mp3")),+ "stage" => Some(include_bytes!("../../demo/audio/stage.mp3")),+ "symbol" => Some(include_bytes!("../../demo/audio/symbol.mp3")),+ _ => None,+ }+}
demo/audio/2d-board.jsonadded+8@@ -0,0 +1,8 @@+{+ "desc": "",+ "label": "",+ "rate": "+0%",+ "text": "The 2D board layout - the same footprint you saw in the library, now placed on copper.",+ "tts_hash": "99ca7a755e08370f88a2d76a0e1eb9993ec5f7a2770a05372e9dfafecc302a83",+ "voice": "en-US-AndrewNeural"+}
demo/audio/2d-board.mp3added⋯ 1 unchanged line ⋯
demo/audio/3d-board.jsonadded+8@@ -0,0 +1,8 @@+{+ "desc": "",+ "label": "",+ "rate": "+0%",+ "text": "The 3D board - and the chip body on it is the exact cloud model the bridge minted and bound earlier in this tour.",+ "tts_hash": "b9396022fead2cab410f224b26a9b17786103175cf8077a104b2653c3646973e",+ "voice": "en-US-AndrewNeural"+}
demo/audio/3d-board.mp3added⋯ 1 unchanged line ⋯
demo/audio/3d-package.jsonadded+8@@ -0,0 +1,8 @@+{+ "desc": "",+ "label": "",+ "rate": "+0%",+ "text": "The 3D chip - the showpiece. The bridge imports the part's STEP model onto the footprint in Fusion's 3D package generator, orients it flat automatically, saves it into your Autodesk cloud hub, and binds the resulting cloud model into the library, so every future board carries the real body.",+ "tts_hash": "10d63452d620e2ea1e3a84d2cf0a89c0ac54a467ad7f5e44bb8512179c2cf426",+ "voice": "en-US-AndrewNeural"+}
demo/audio/3d-package.mp3added⋯ 1 unchanged line ⋯
demo/audio/aps.jsonadded+8@@ -0,0 +1,8 @@+{+ "desc": "",+ "label": "",+ "rate": "+0%",+ "text": "APS cloud search: the bridge's own server-indexed search over your Fusion cloud files, about two seconds per query after a single sign-in, and never charged.",+ "tts_hash": "15a430b6b1abb6375e90ae2a5ddbe8b2fc35aaecf7f336e1c74242f41ac1a578",+ "voice": "en-US-AndrewNeural"+}
demo/audio/aps.mp3added⋯ 1 unchanged line ⋯
demo/audio/datahub.jsonadded+8@@ -0,0 +1,8 @@+{+ "desc": "",+ "label": "",+ "rate": "+0%",+ "text": "Your Fusion Data Hub, through the add-in: hubs, projects and folders listed over Fusion's own cloud API - the same storage the 3D chip was just saved into.",+ "tts_hash": "e2f3221f02269c9de567088453f16f9ada5c45ba10b85148b007b480d7e25b8b",+ "voice": "en-US-AndrewNeural"+}
demo/audio/datahub.mp3added⋯ 1 unchanged line ⋯
demo/audio/device.jsonadded+8@@ -0,0 +1,8 @@+{+ "desc": "",+ "label": "",+ "rate": "+0%",+ "text": "The component view: every symbol pin mapped to its footprint pad. The bridge verifies this mapping offline before Fusion ever opens the file, so dead wiring cannot photograph well.",+ "tts_hash": "ae7fa91d8453ebfcd32beae2deb437cbc77beeb7391f24ca16e59932d86d3593",+ "voice": "en-US-AndrewNeural"+}
demo/audio/device.mp3added⋯ 1 unchanged line ⋯
demo/audio/exports.jsonadded+8@@ -0,0 +1,8 @@+{+ "desc": "",+ "label": "",+ "rate": "+0%",+ "text": "Exports: STEP and STL written straight from the add-in. The same pipeline covers F 3 D, G L B, 3 M F, IGES, SAT, D X F, gerbers and BOM - every format a downstream tool could ask for.",+ "tts_hash": "f4b7ee659f17085a9ac0531019a81928c1743b6fe7a1d3f7778081653cd3fb99",+ "voice": "en-US-AndrewNeural"+}
demo/audio/exports.mp3added⋯ 1 unchanged line ⋯
demo/audio/footprint.jsonadded+8@@ -0,0 +1,8 @@+{+ "desc": "",+ "label": "",+ "rate": "+0%",+ "text": "The footprint editor: real pads and layers, exactly the copper a board would get - never a placeholder.",+ "tts_hash": "673361d4a9e502ad5a1bef825934001c7c91e3929bf5a912a13e88434653d937",+ "voice": "en-US-AndrewNeural"+}
demo/audio/footprint.mp3added⋯ 1 unchanged line ⋯
demo/audio/launch.jsonadded+8@@ -0,0 +1,8 @@+{+ "desc": "",+ "label": "",+ "rate": "+0%",+ "text": "Starting Fusion in the background. The bridge launches it detached and minimized, takes the one Autodesk seat if another machine holds it, and never steals your focus - and the AdomBridge add-in loads itself inside Fusion and opens a local command port the bridge drives everything through.",+ "tts_hash": "e57ca70dd285bb1f156315bce1f9fe22238991f2da1c626a51258c67d795ab18",+ "voice": "en-US-AndrewNeural"+}
demo/audio/launch.mp3added⋯ 1 unchanged line ⋯
demo/audio/library.jsonadded+8@@ -0,0 +1,8 @@+{+ "desc": "",+ "label": "",+ "rate": "+0%",+ "text": "Opening the electronics library. The bridge drives Fusion's own Electronics Library editor through the add-in - no clicks, no foreground, the same path a human would take.",+ "tts_hash": "80600ef3e7151546632e3252820b57c12a032745fb1e77d37df60dcbc204afde",+ "voice": "en-US-AndrewNeural"+}
demo/audio/library.mp3added⋯ 1 unchanged line ⋯
demo/audio/make-project.jsonadded+8@@ -0,0 +1,8 @@+{+ "desc": "",+ "label": "",+ "rate": "+0%",+ "text": "Generating a complete test project around the part: schematic and board authored from EAGLE source and instantiated by Fusion, entirely in the background.",+ "tts_hash": "83ab4d1b6ee9e528c842bf7de1c21d8d8a6935c0dca130a0032fbc61140324fd",+ "voice": "en-US-AndrewNeural"+}
demo/audio/make-project.mp3added⋯ 1 unchanged line ⋯
demo/audio/mcp.jsonadded+8@@ -0,0 +1,8 @@+{+ "desc": "",+ "label": "",+ "rate": "+0%",+ "text": "Autodesk's official MCP server, answering over the bridge. Useful - but its toolset is small and read-mostly. The bridge's one hundred plus fusion verbs go far beyond it: electronics editors, text commands, cloud files, evidence captures and a dozen export formats.",+ "tts_hash": "03190286eb7e52ffda7e06f8f02bd45f4514a733218fc74611eda4851dbfb657",+ "voice": "en-US-AndrewNeural"+}
demo/audio/mcp.mp3added⋯ 1 unchanged line ⋯
demo/audio/open-design.jsonadded+8@@ -0,0 +1,8 @@+{+ "desc": "",+ "label": "",+ "rate": "+0%",+ "text": "Opening the cloud electronics design from your hub - the bridge resolves it by name and opens the parent design, never a child view.",+ "tts_hash": "c7b6575eff218f9f00c7d9286b4ef1d45c3501d1a4f6c03fefd77d3485918c07",+ "voice": "en-US-AndrewNeural"+}
demo/audio/open-design.mp3added⋯ 1 unchanged line ⋯
demo/audio/schematic.jsonadded+8@@ -0,0 +1,8 @@+{+ "desc": "",+ "label": "",+ "rate": "+0%",+ "text": "The schematic view of the generated project - the part wired into a real sheet.",+ "tts_hash": "9485637951d0b7e36136386f26c46b38a6d10a1dbcbf07d3180d2f9f5f2d4f93",+ "voice": "en-US-AndrewNeural"+}
demo/audio/schematic.mp3added⋯ 1 unchanged line ⋯
demo/audio/stage.jsonadded+8@@ -0,0 +1,8 @@+{+ "desc": "",+ "label": "",+ "rate": "+0%",+ "text": "Staging the sample part. This library was built from open KiCad source by adom dash l b r and lands on disk as a real EAGLE library file Fusion can open natively.",+ "tts_hash": "e7e20c7e757cdbb8d5d99f3e528a3182f63258162d8468ce4ed9c8bf7338a8ac",+ "voice": "en-US-AndrewNeural"+}
demo/audio/stage.mp3added⋯ 1 unchanged line ⋯
demo/audio/symbol.jsonadded+8@@ -0,0 +1,8 @@+{+ "desc": "",+ "label": "",+ "rate": "+0%",+ "text": "The symbol editor: the part's full pinout, converted pin for pin from KiCad source. The add-in switches views with Fusion's own edit commands.",+ "tts_hash": "fbee31517888608b142b38a0ec18ff76fb870595a001352efb058cd5a18f43df",+ "voice": "en-US-AndrewNeural"+}
demo/audio/symbol.mp3added⋯ 1 unchanged line ⋯
demo/captions.jsonadded+18@@ -0,0 +1,18 @@+{+ "launch": "Starting Fusion in the background. The bridge launches it detached and minimized, takes the one Autodesk seat if another machine holds it, and never steals your focus - and the AdomBridge add-in loads itself inside Fusion and opens a local command port the bridge drives everything through.",+ "stage": "Staging the sample part. This library was built from open KiCad source by adom dash l b r and lands on disk as a real EAGLE library file Fusion can open natively.",+ "library": "Opening the electronics library. The bridge drives Fusion's own Electronics Library editor through the add-in - no clicks, no foreground, the same path a human would take.",+ "symbol": "The symbol editor: the part's full pinout, converted pin for pin from KiCad source. The add-in switches views with Fusion's own edit commands.",+ "footprint": "The footprint editor: real pads and layers, exactly the copper a board would get - never a placeholder.",+ "device": "The component view: every symbol pin mapped to its footprint pad. The bridge verifies this mapping offline before Fusion ever opens the file, so dead wiring cannot photograph well.",+ "3d-package": "The 3D chip - the showpiece. The bridge imports the part's STEP model onto the footprint in Fusion's 3D package generator, orients it flat automatically, saves it into your Autodesk cloud hub, and binds the resulting cloud model into the library, so every future board carries the real body.",+ "datahub": "Your Fusion Data Hub, through the add-in: hubs, projects and folders listed over Fusion's own cloud API - the same storage the 3D chip was just saved into.",+ "aps": "APS cloud search: the bridge's own server-indexed search over your Fusion cloud files, about two seconds per query after a single sign-in, and never charged.",+ "mcp": "Autodesk's official MCP server, answering over the bridge. Useful - but its toolset is small and read-mostly. The bridge's one hundred plus fusion verbs go far beyond it: electronics editors, text commands, cloud files, evidence captures and a dozen export formats.",+ "make-project": "Generating a complete test project around the part: schematic and board authored from EAGLE source and instantiated by Fusion, entirely in the background.",+ "open-design": "Opening the cloud electronics design from your hub - the bridge resolves it by name and opens the parent design, never a child view.",+ "schematic": "The schematic view of the generated project - the part wired into a real sheet.",+ "2d-board": "The 2D board layout - the same footprint you saw in the library, now placed on copper.",+ "3d-board": "The 3D board - and the chip body on it is the exact cloud model the bridge minted and bound earlier in this tour.",+ "exports": "Exports: STEP and STL written straight from the add-in. The same pipeline covers F 3 D, G L B, 3 M F, IGES, SAT, D X F, gerbers and BOM - every format a downstream tool could ask for."+}
page.json+7−10@@ -11,10 +11,6 @@ "uninstall": "./uninstall.sh" }, "tags": [- "ab",- "bridge",- "fusion",- "desktop-app", "fusion360", "autodesk", "cad",@@ -79,10 +75,7 @@ "build a basic parts library", "add a 3d model to a component", "make a fusion 360 library with 3d",- "set up the fusion bridge",- "fusion dashboard",- "fusion status page",- "open the fusion launch page"+ "set up the fusion bridge" ], "discovery_pitch": "Use the Adom Bridge Fusion 360 bridge when the user wants to DRIVE Autodesk Fusion 360 from the cloud: open/search their team's Fusion cloud designs, lay out a PCB or do electronics, export STEP/IGES/STL/Gerbers/BOM, or build a component library with real rendering 3D. It runs Fusion on the user's own machine via Adom Bridge. NOT for web/browser/login/form-filling (that's the native-browser extension) and NOT for KiCad (that's the kicad bridge).", "brief": "Drive Autodesk Fusion 360 from the cloud via Adom Bridge: component libraries, IPC package generation, board layout, exports (STEP/Gerbers/BOM/CPL), fast APS cloud search, and parametric modeling.",@@ -111,5 +104,9 @@ "label": "Part volume", "prompt": "How much material does each printed part in this assembly use?" }- ]-}+ ],+ "author": {+ "name": "John Lauer",+ "email": "[email protected]"+ }+}
tests/reports/daily-cron-2026-08-24.logaddedtools/release.sh+44@@ -86,8 +86,52 @@ print('idle' if r is False else ('busy' if r is True else 'unknown'))") sleep 5 # respawn window - re-probe, never guess done STAGE=$(_probe fusion_prove_result | python3 -c "import sys,json; print(json.load(sys.stdin).get('stage') or '')")+ # A RUNNING Fusion is not automatically unsafe (2026-08-24): bridge_install reaps the+ # BRIDGE process, and since 1.9.183 Fusion is launched DETACHED, so a Fusion whose+ # process tree does not contain the bridge python cannot be killed by an install. Ask+ # the box the precise question instead of refusing on the proxy - John's own Fusion+ # sitting open all day must not block every release.+ if [ "$VERDICT" = "busy" ] || [ "$VERDICT" = "unknown" ]; then+ PROBE=$(python3 - <<'PYP'+import json, subprocess, base64+script = r"""+$all = Get-CimInstance Win32_Process | Select-Object ProcessId,ParentProcessId,Name,CommandLine+$f = $all | Where-Object { $_.Name -like "Fusion360*" } | Select-Object -First 1+$bridgeAlive = [bool]($all | Where-Object { $_.CommandLine -like "*server.py*fusion*" })+$parented = $false+if ($f) {+ $p = $f+ for ($i=0; $i -lt 8 -and $p; $i++) {+ if ($p.CommandLine -like "*server.py*fusion*") { $parented = $true; break }+ $p = $all | Where-Object { $_.ProcessId -eq $p.ParentProcessId }+ }+}+"bridgeAlive=$bridgeAlive parented=$parented"+"""+b64 = base64.b64encode(script.encode()).decode()+r = subprocess.run(["adom-bridge","--target","AdomLapper","run_script",+ json.dumps({"interpreter":"powershell","scriptB64":b64,"timeoutSec":40,+ "reason":"Release safety probe: is Fusion a CHILD of the bridge process (would an install kill it)?"})],+ capture_output=True, text=True, timeout=120)+try:+ d=json.loads(r.stdout); x=d.get('data') or d+ print((x.get('stdout') or '').strip().splitlines()[-1])+except Exception:+ print("bridgeAlive=unknown parented=unknown")+PYP+)+ echo " probe: $PROBE"+ case "$PROBE" in+ *parented=True*) die "Fusion is RUNNING on $BRIDGE_TARGET AS A CHILD of the bridge process - installing would kill it. Wait until it is closed (or restart it on 1.9.183+ so it launches detached)." ;;+ *parented=False*) VERDICT="detached"+ echo " Fusion is DETACHED from the bridge tree (or not running) - an install reaps only the bridge process, so this is safe."+ case "$PROBE" in *bridgeAlive=False*) echo " (the bridge process is not even running - nothing to reap)";; esac ;;+ *) die "could not determine whether Fusion is parented by the bridge - refusing to install blind. Retry, or RELEASE_FORCE=1." ;;+ esac+ fi case "$VERDICT" in busy) die "Fusion is RUNNING on $BRIDGE_TARGET - someone is using it (chain stage: '${STAGE:-none}'). bridge_install reaps the bridge and kills in-flight work. Wait until Fusion is closed, or RELEASE_FORCE=1 once you have CONFIRMED nobody is driving it." ;;+ detached) echo " guard OK: Fusion running but detached; chain stage: '${STAGE:-none}'" ;; unknown) die "could not determine Fusion state on $BRIDGE_TARGET after 3 probes (bridge respawning or unreachable) - refusing to install blind. Retry shortly, or RELEASE_FORCE=1." ;; idle) echo " guard OK: Fusion not running on $BRIDGE_TARGET (chain stage: '${STAGE:-none}')" ;; esac