Altium - the Altium Bridge
Public Made by Adomby adom
Adom Bridge for Altium Designer: a resident DelphiScript agent gives the AI eval, the 1,100-command process launcher, all 8 EDA surfaces with screenshots, compile/ERC, DRC, OutJob outputs, native SchLib/PcbLib authoring with STEP 3D bodies, and dialog handling by PID.
No way to place several library parts on ONE schematic and ONE board: test_board makes a new PcbDoc per call, no schematic placement verb, and altium_eval errors are unreadable modals that kill the endpoint
Ask: place library parts on a schematic and a board without DelphiScript guesswork
Building the ToF sensor library on ConfRoomROG (Altium Designer Develop build, altium-bridge 0.2.9, 2026-09-19) the library half went smoothly: altium_install_library for the adom-lbr SchLib/PcbLib pair, altium_build_footprint from a kicad2altium spec, altium_add_body with the STEP, altium_set_params to link footprints, and altium_show_symbol / altium_show_footprint / altium_show_3d_chip proofs all worked first time.
The second half, "put these three parts on one schematic and one board and show me", has no verb:
altium_test_boardplaces exactly one footprint and creates a NEW PcbDoc every call (PCB1, PCB2, ...), so three parts never land on one board. It also returnspcb: "", so the caller cannot even open the board it made.- There is no schematic counterpart at all (nothing creates a SchDoc or places a symbol from a SchLib).
altium_import_kicadis documented as failing withextension_timeouton AD 26 (tried here as well, see below).altium_evalis the escape hatch, but every runtime error is an unreadable X2 modal (text is painted,dialogs[].bodyis empty) that halts the engine and drops the bridge HTTP endpoint, andaltium_agent_recoverneeded a Cancel + recover cycle two or three times before the engine came back. Two scripts of mine died this way before their firstTStringList.SaveToFile, so nothing could be learned from them. Scripts attached.
Update while filing: adom/altium-bridge#3 says PCBServer.PreProcess / PostProcess are undeclared identifiers on the ADDevelop build, which is exactly what both attached scripts call, so the crash is explained. That makes proposal 3 (readable errors) the important one: the same information in the modal would have cost one retry instead of an afternoon.
Proposals
altium_place_components {boardPath|new, libraryPath, parts:[{footprint, designator, xMm, yMm, rotation}]}andaltium_place_symbols {schPath|new, libraryPath, parts:[{libRef, designator, xMil, yMil}]}built on the bridge's own working placement code (the onealtium_test_boarduses), returning the document paths.altium_test_board: acceptboardPathto add to an existing board, acceptfootprints: [], and always return the PcbDoc path.altium_eval: run the statements inside a try/except that writes the exception message to a file the bridge reads back, so a failing script returns{ok:false, error:"<message>", line:n}instead of a modal and a dead endpoint. Also OCR or UIA-read the X2 error modal text intodialogs[].body.- Document which
PCBServer/SchServercalls the resident agent supports (LoadCompFromLibrary,TStringList,MMsToCoord...), or ship aplacement.pashelper the AI can call by name.
Repro
Library: adom/vl53l5cx altium/Adom_ToF.SchLib + .PcbLib (three parts). Scripts attached (place.pas, place2.pas). Expected: three components on one board and three symbols on one sheet, with altium_show_schematic / altium_show_3d_board proofs.