Reference bridge: Fusion 360
Source code + contributing (2026-05)
The Fusion 360 bridge moved out of adom-inc/adom-desktop's monorepo into its own dedicated repo so the community can extend it without coordinating with Adom Desktop's release cycle.
Where the source lives
The canonical repo is adom-inc/adom-bridge-fusion on GitHub. It's private today and will go public after a review pass.
In the meantime, the full source โ code, history, contributing guide, license โ is mirrored on this wiki page:
| Download | What it is | How to use |
|---|---|---|
adom-bridge-fusion-source.tar.gz | Clean source tree, no .git directory. ~115 KB. | tar xzf adom-bridge-fusion-source.tar.gz && cd adom-bridge-fusion/ |
adom-bridge-fusion.bundle | Git bundle with full commit history. ~222 KB. | git clone https://wiki-ufypy5dpx93o.adom.cloud/static/apps/adom-desktop-fusion-bridge/adom-bridge-fusion.bundle adom-bridge-fusion && cd adom-bridge-fusion && git log |
No GitHub account needed to download either โ both URLs are public.
How to contribute
We accept community improvements. Most useful targets right now:
- Newer Fusion versions โ when Autodesk ships a major Fusion update, the add-in manifest + API call shapes may need tweaking. Fork-friendly.
- Additional export formats โ Fusion supports more than what the bridge currently wraps.
- Linux support โ Fusion 360 runs on macOS; Linux is a non-starter (Autodesk doesn't ship for Linux), but macOS coverage could expand.
Two contribution paths, depending on your access:
With a GitHub account (preferred): wait until we make the repo public, then fork on GitHub and open a PR. We're aiming to flip the repo public in the next maintenance pass.
Without GitHub access (patch-by-email-style, available right now): Clone the bundle, make your changes, generate a patch with git format-patch origin/main..HEAD --stdout > my-changes.patch, and email it to [email protected]. Adom maintainers will review and apply.
See CONTRIBUTING.md inside the tarball/bundle for the full PR + ship workflow.
How shipping works after merge
- Maintainer merges your PR into
main - Maintainer tags
v<X.Y.Z>+ runsbash scripts/release-bridge.sh fusion360on their box - New zip + manifest published to this wiki page (replaces current version)
- Every Adom Desktop install running v1.7.19+ auto-picks up your change within 4 hours OR immediately via
adom-desktop refresh_bridges
No NSIS installer rebuild required. Your code reaches real users in ~30s after merge.
License
MIT โ see the LICENSE file in the tarball.
The Fusion 360 bridge is one of three reference implementations bundled with Adom Desktop. It's the simplest of the three โ a Python HTTP server that passes commands through to a Fusion 360 add-in via a local socket. The add-in does the actual Fusion API work in-process.
If you're authoring a new third-party bridge, see the bridge SDK guide first. Use this page if you're building a bridge to any app that exposes a plugin API the bridge can talk to (Altium, Eagle, SolidWorks add-ins all fit this pattern).
Quick facts
| Name | fusion360 |
| Display | Autodesk Fusion 360 |
| Spawn kind | Python (server.py) |
| Port | 8773 |
| Verb prefix | fusion_* (16 verbs) |
| Source zip | fusion360-bridge-v1.0.0.zip |
| Manifest | fusion360-bridge-manifest.json |
| User-facing skill | fusion-SKILL.md |
What it does
- Launch + window control โ
fusion_start(handles the webdeploy glob + waits for the add-in handshake + dismisses the startup picker),fusion_close_window,fusion_dismiss_blocking_dialogs. - Design rules + parameters โ
fusion_apply_instapcb_rules,fusion_load_design_rules. - Exports โ
fusion_export_step/iges/stl/3mf/usdz/obj/dxf/dwg/gerbers. Each accepts a{cloudFile, output}or{localFile, output}pair. - Cloud tree walk โ
fusion_walk_cloud_tree(lists hubs/projects/folders/files),fusion_search_cloud_files(text search within a hub).
bridge.json
{
"manifest_version": 1,
"name": "fusion360",
"displayName": "Autodesk Fusion 360",
"version": "1.0.0",
"description": "Fusion 360 add-in bridge: design rules, exports (STEP/IGES/STL/3MF/USDZ/OBJ/DXF/DWG/Gerbers), cloud tree walk, search.",
"homepage": "https://github.com/adom-inc/adom-desktop",
"author": "Adom Inc.",
"license": "MIT",
"spawn": {
"kind": "python",
"entrypoint": "server.py",
"port": 8773,
"healthEndpoint": "http://127.0.0.1:8773/status",
"stopMethod": "kill",
"killImageName": "python.exe"
},
"verbPrefixes": ["fusion_"],
"verbs": [
"fusion_start", "fusion_close_window",
"fusion_apply_instapcb_rules", "fusion_load_design_rules",
"fusion_export_step", "fusion_export_iges", "fusion_export_stl", "fusion_export_3mf",
"fusion_export_usdz", "fusion_export_obj", "fusion_export_dxf", "fusion_export_dwg",
"fusion_export_gerbers",
"fusion_walk_cloud_tree", "fusion_search_cloud_files",
"fusion_dismiss_blocking_dialogs"
],
"dependencies": { "python": ">=3.11", "fusion360": ">=2.0.0" },
"category": "CAD",
"tags": ["fusion360", "autodesk", "cad", "exports"]
}
Architecture: passthrough-to-add-in
This is the cleanest pattern for any host app that runs Python (or any other language) in-process via a plugin API:
Docker Claude โโHTTPโโโ adom-desktop CLI โโWSโโโ Adom Desktop GUI
โ
โ spawn fusion bridge process
โผ
fusion360/server.py (port 8773)
โ
โ socket to add-in
โผ
Fusion 360 GUI exe + adom-fusion-addin (loaded)
โ
โผ
Fusion 360 Python API
(in-process)
The bridge is thin โ it accepts JSON commands over HTTP, validates args, forwards to the add-in via a local socket, awaits the response, returns to the caller. The add-in (running inside Fusion's own Python interpreter) does the actual adsk.fusion.* API work and serializes the result back.
This decoupling means:
- The bridge has zero Fusion-SDK dependencies โ it's stdlib Python.
- The add-in can be updated independently of the bridge (different version cadences).
- A Fusion crash takes down the add-in only; the bridge stays up and reports "add-in disconnected" until Fusion restarts.
Directory layout
fusion360/
โโโ server.py โ HTTP entry + JSON dispatch
โโโ bridge.json
โโโ BRIDGE_VERSION
โโโ fusion_detect.py โ Find FusionLauncher.exe via webdeploy glob
โโโ fusion_helper.py โ Win32 helpers: launch, wait, dismiss-startup-picker
โโโ eagle_lbr.py โ .lbr file format support for the Eagle import verbs
โโโ handlers/ โ One module per verb group
โ โโโ exports.py โ All fusion_export_* โ POSTs to the add-in
โ โโโ cloud_tree.py
โ โโโ design_rules.py
โ โโโ โฆ
โโโ addin/ โ The Fusion add-in itself (loaded into Fusion's Python)
โ โโโ AdomFusionAddin.py
โ โโโ AdomFusionAddin.manifest
โ โโโ commands/ โ One file per command the add-in implements
โโโ install_addin.py โ Copies addin/ to %APPDATA%\Autodesk\... where Fusion finds it
โโโ start.bat โ Local dev launcher
โโโ README.md
install_addin.py is the deployment glue โ Fusion only loads add-ins from %APPDATA%\Autodesk\Autodesk Fusion 360\API\AddIns\<name>\. After the bridge is installed (or updated), the next fusion_start re-runs install_addin.py to keep the add-in in sync with whatever version of the bridge shipped.
Example: export a Fusion design as STEP
# Open Fusion (handles webdeploy + login + startup picker)
adom-desktop fusion_start
# Walk the cloud tree to find the design
adom-desktop fusion_walk_cloud_tree '{"hub":"YourHub","project":"YourProject"}'
# Export โ bridge โ add-in โ adsk.fusion.ExportManager โ file on disk
adom-desktop fusion_export_step '{"cloudFile":"/YourHub/YourProject/MyDesign.f3d","output":"C:/tmp/MyDesign.step"}'
# Pull the file back to Docker
adom-desktop pull_file '{"filePaths":["C:/tmp/MyDesign.step"],"saveTo":"/tmp"}'
Reference: install the source locally to read
curl -L https://wiki-ufypy5dpx93o.adom.cloud/static/apps/adom-desktop/fusion360-bridge-v1.0.0.zip -o /tmp/fusion-bridge.zip
mkdir -p /tmp/fusion-bridge && cd /tmp/fusion-bridge && python3 -c "import zipfile; zipfile.ZipFile('/tmp/fusion-bridge.zip').extractall()"
ls -la
Read server.py for the dispatch pattern (similar to hello sample but with handler dirs), then handlers/exports.py for an example of how a bridge passes a request through to a separate process. The addin/ dir is the OTHER half โ what the add-in does in-process inside Fusion.
Related
- Bridge SDK guide โ
bridge.jsonschema, packaging recipe, lifecycle - KiCad bridge reference โ most complex of the three; multi-instance, reverse-bridge
- Puppeteer bridge reference โ single-instance, Node + Chrome for Testing
- adom-desktop main page โ install the parent app first
