Neurocad Link companion app

The desktop integration lets recipes deliver assets directly into a CAD application running on a real desktop — pop a Library result open in Altium, drop a Model into Fusion, hand a Schematic to Cadence. There's no file download, no manual import, no "save then reopen" step: the recipe finishes and the CAD app is already showing the result.

This page is the overview. Each supported application has its own setup page under Connections → Desktop.

How a desktop becomes "connected"

A desktop is connected to Neurocad via the Neurocad Link desktop companion — a small local agent installed on your workstation that connects to Neurocad's session-manager service and registers the CAD applications it detects.

Once the companion is running:

  • It opens a long-lived socket to session-manager and reports the machine it's running on.
  • It scans for supported CAD applications and reports them as packages with a domain label (Mechanical or Electronics).
  • It keeps reporting heartbeat and running state for each app, so Neurocad knows whether each CAD is currently up.

Neurocad doesn't push to your desktop directly — your desktop pulls from session-manager over its own socket. That's why we talk about the desktop being online (the socket is connected) versus offline (it isn't), and why the recipe-side Send to desktop node will refuse to dispatch when the target socket is down.

Per-application installation steps — how to install the companion and pair it with a specific CAD app — live in each application's own doc. The flow always looks the same:

  1. Install the Neurocad desktop companion.
  2. Sign in on the companion with the same Neurocad account you use in the browser.
  3. Open the CAD app you want to receive recipes (or just leave it installed — running is reported but isn't required to dispatch).
  4. The companion registers the machine and apps with session-manager.

From Neurocad's side, the rest is automatic.

Seeing what's connected: Settings → Desktop applications

Open /settings → Desktop applications to see the live picture of every machine and CAD app session-manager has reported for your account.

Each entry shows:

  • Machine name — The workstation hostname / display name the companion reported.
  • Online / Offline — Whether the session socket is currently connected. A green dot means the companion is running and reachable.
  • Apps — Every CAD application detected on that machine. A green dot next to the app means the app is currently running on the desktop (the companion reports this).
  • Tag as local / This device — A one-click marker that binds this Neurocad session in the browser to this machine. Useful when you want recipe behaviour to default to "open on the device I'm sitting at." Clicking it again removes the tag.
  • Refresh — Re-fetches the inventory from session-manager. Useful right after you install the companion or open a new CAD app and don't want to wait for the next heartbeat.

The web client itself appears in the underlying session list as neurocad-web and is intentionally hidden from this panel — it's not a desktop you can dispatch to.

If a machine appears Offline, the recipe-side node won't be able to dispatch to it. Common causes: the companion process isn't running, the workstation is asleep, or the user signed out of the companion.

The Send to desktop node

Send to desktop is the action node that dispatches to a connected desktop. It lives in the Connect palette category. Three things make it specific:

  • It runs server-side, but targets a real desktop. It's not a Local node — recipes containing it are deployable. Which desktop receives the dispatch is decided by the node's parameters, not by which browser is open.
  • It runs as a specific Neurocad user. The credential is Neurocad Passport (neurocadUserIdentityApi) — the recipe acts on behalf of the Passport's owner, and only that owner's connected desktops are visible to it. There's no "send to anyone in the org" mode.
  • It dispatches by reference, not by upload. What gets sent is an asset id that already lives in Neurocad's asset service. The desktop companion fetches the asset using the user's identity, so nothing leaves Neurocad except the asset id.

Inputs

  • Asset ID — The asset to open. Defaults to ={{ $json.assetId || $json.remoteAssetId || $json.sharedAsset?.assetId }}, so wiring this from a Library, Schematic, or Create-share-link upstream is one click. If empty, the node walks the input item looking for an asset id at assetId, remoteAssetId, sharedAsset.assetId, asset.id, rendering.primary.assetId, provenance.assetId, provenance.remoteAssetId, provenance.parameters.assetId, or provenance.parameters.remoteAssetId. If none of those exist, it errors.
  • Machine — Pick from the list of your connected, online machines, or paste a machine name. The list only shows machines that report at least one CAD package and have a unique name.
  • Application — Options depend on the machine selection. Lists the CAD apps detected on the chosen machine; each option shows Running if the companion reports the app as up, otherwise its domain labels (e.g. Mechanical, Electronics).

The node has one Input handle (generic, accepts any upstream) and one Output handle (generic / asset). The output passes the input item through, decorated with a desktopOpen field describing what was dispatched (status, assetId, machineName, appKey, sessionId, packageId, dispatchedAt).

What happens at execute time

  1. The node loads the Passport-delegated session-manager credential (managed; your org gets it automatically) and lists current sessions.
  2. It resolves the chosen Machine to a specific session: there must be exactly one online session with that name reporting at least one CAD package. If two machines report the same name, the dispatch is refused with DESKTOP_MACHINE_AMBIGUOUS and the node tells you to rename one.
  3. It resolves the chosen Application to a specific package id on that session. If the app isn't installed on the chosen machine, you get DESKTOP_APP_NOT_INSTALLED.
  4. It POSTs /open-file to session-manager with { session_id, asset_id, software_id }. The companion receives the message over its socket and calls into the CAD app to open the asset.
  5. The output item is emitted with the dispatch metadata.

The node returns as soon as session-manager accepts the dispatch — it does not wait for the CAD app to finish opening the file. So a successful run means "the dispatch was delivered to the desktop," not "the user is now staring at the file in Fusion." The companion handles the rest.

Errors you'll see and what to do

  • DESKTOP_IDENTITY_MISSING — The execution didn't carry a resolved Passport identity. Fix: Reconnect your Neurocad Passport from /connect; the node needs a fresh identity token.
  • DESKTOP_MACHINE_NOT_FOUND — The chosen machine name has no online session reporting CAD packages. Fix: Check the machine is online in /settings → Desktop applications. Refresh, then retry.
  • DESKTOP_MACHINE_AMBIGUOUS — Two sessions report the same machine name. Fix: Rename one machine in the companion settings, then retry.
  • DESKTOP_SOCKET_NOT_CONNECTED — The matching session exists but its socket isn't currently connected. Fix: Ensure the companion is running and signed in, then retry.
  • DESKTOP_APP_NOT_INSTALLED — The selected app isn't reported on the selected machine. Fix: Pick a different app, or install / register it on the chosen workstation.
  • DESKTOP_SESSION_NOT_FOUND — session-manager couldn't find the session id at dispatch time (HTTP 404). Fix: The desktop disconnected between picker load and dispatch. Refresh and retry.
  • DESKTOP_OPEN_FILE_FAILED — session-manager accepted the request but reported a failure (or any other 5xx / unexpected status). Fix: Check the run data panel for the body; usually a transient session-manager / companion issue, retry first.

Supported applications

Five CAD applications are recognised today — three mechanical, two electronic. The app keys below are what the Application picker stores in your recipe; the per-app docs cover installation and pairing.

Electronics

  • Altium Designer (altium) — Receives EDA artifacts: Library symbols / footprints, Schematics.
  • Cadence (OrCAD / Allegro) (cadence) — Same shape as Altium.
  • KiCad — Receives schematic symbols and PCB footprints.

Mechanical

  • Autodesk Fusion (fusion) — Receives 3D model assets (model-3d) and assembly assets when the companion can hand them off.
  • SolidWorks (solidworks) — Same shape as Fusion: model and assembly delivery.
  • Autodesk Inventor (inventor) — Same shape as Fusion / SolidWorks.

Each application's per-app doc covers:

  • The installation and pairing steps for that CAD's flavour of the companion.
  • Which Neurocad artifact / asset types route there cleanly.
  • Any application-specific quirks (license requirements, version compatibility, what "open" means in that app's UI).
  • What to check first when dispatch silently doesn't open the file even though the recipe succeeded.

How desktop integration fits with everything else

A few framings to head off confusion:

  • Send to desktop is a Connect node, not a Local node. Local nodes (Local file, Extract image, Local preview) need a browser session to do their work and are therefore non-deployable. Send to desktop runs server-side and only targets a desktop — recipes that use it as their final step are perfectly fine to deploy from a remote trigger like Slack or GitHub.
  • It replaces the older "Live design" output node. If you have older recipes that referred to Live design as a terminal output, the new shape is: replace it with Send to desktop in the Connect group and pick a machine + application. Same intent, different node, properly deployable.
  • It uses two credentials but the picker only shows one. You select a Passport in the property panel; the platform-managed Neurocad Desktop Service credential is resolved automatically through delegation. There's no separate field for it.
  • Asset id, not file content. The dispatch payload is just an asset id. The desktop companion is what fetches and renders, using the user's identity. This is why the integration works without any of the Local-node browser plumbing — nothing about the recipe execution touches your machine until the companion picks up the message.
  • Per-user, not per-org. Two engineers in the same org each have their own connected desktops. A recipe owned by Alice that uses Alice's Passport will dispatch to Alice's machines; the same recipe duplicated by Bob with Bob's Passport will dispatch to Bob's. There is currently no "send to a shared workstation" mode.

Quick checklist when dispatch isn't landing

If a recipe says it dispatched to your desktop but nothing opened, walk this list in order — almost every report is one of these:

  • The companion is running on the target workstation and signed in to the right Neurocad account.
  • /settings → Desktop applications shows the machine as Online and the app's dot as green (or at least the machine green; Running is informational, not required to dispatch).
  • The recipe is referencing your Passport (not someone else's, and not needs_reauth).
  • The asset id flowing into Send to desktop actually exists — look at the previous node's output in the run data panel and confirm there's an assetId (or one of the fallback fields).
  • The chosen Machine + Application still match a live session — if the workstation slept or the companion was restarted, the picker may be stale; click Refresh in /settings, then re-test.
  • If you're dispatching to a machine that recently changed name, the recipe still has the old name baked in — open the node and re-pick from the list.
  • If two workstations have the same hostname (laptop + desktop named the same), one of them must be renamed.

If all of those pass and the recipe still says it dispatched but nothing opens, the failure is on the desktop side — companion running, app not actually launching the asset. That's where the per-application docs come in.

Last updated May 7, 2026