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
Component wiki repos: the file set web control needs, and why the bridge can never convert KiCad itself
What a component wiki repo must contain for web control to open it in KiCad / Fusion
Report from a ralph test of Adom Bridge's web-control library creation across 11 Adom components, driven exactly the way a wiki page would drive it. The short version: a component page must ship a validated .lbr, or the wiki must generate one, because the bridge can never make one itself.
The constraint that forces this
a bridge runs on Windows or macOS
ALL Adom binaries (adom-lbr, adom-cli, ...) are Linux-container only
a browser runs no binaries at all
So KiCad -> EAGLE conversion cannot happen at runtime on the viewer's machine. fusion-bridge 1.9.120 tried to delegate to adom-lbr and fails with adom_lbr_unavailable on every Windows box, which is not fixable on their side - there will never be a Windows build.
The wiki, by contrast, runs on Linux. So conversion belongs either at authoring time (published files) or in the wiki itself (applet/widget/endpoint) - never in the bridge.
The required file set
For wiki.adom.inc/<owner>/<mpn>:
| file | required | why |
|---|---|---|
<MPN>.kicad_sym |
yes | symbol; the source of truth |
<MPN>.kicad_mod |
yes | footprint; the source of truth |
<MPN>.step |
yes | 3D. Always required - see below |
<MPN>.lbr |
yes | Fusion/EAGLE library, symbol + package + connects |
<MPN>.adom-lbr.json |
recommended | canonical hub (symbol + footprint + 3D ref + pin-pad map) |
pinmap.json |
only when needed | {pinName: padName} when pin numbers differ from pad names |
The .step is never optional, and the .lbr must never contain a 3D binding. A Fusion <package3d> is a wip_urn pointing into the minting user's Autodesk cloud storage - not embedded geometry - so it is not portable. The correct pattern is: publish symbol + footprint, ship the .step, and let each viewer's Fusion mint its own 3D. Measured: a bound .lbr is 7,340 bytes for a 120,696-byte STEP, and contains zero geometry.
Linter rules worth adding
.lbrexists and is complete. Not just present -<packages>non-empty and<connects>non-empty.adom/cr0603-fx-5601elfshipped a.lbrwith an EMPTY<packages>section: no footprint at all, while its.kicad_modhad two perfectly good SMD pads. Everything downstream failed confusingly.- Every
<connect>resolves. Itspinmust exist in the symbol and itspadmust exist in the package.adom-lbr validatedoes NOT check this today (filed as adom-lbr#9).adom/type-c-31-m-12generated<connect pin="SHIELD" pad="S1"/>while the package's pads areA1..B12, SH- a shield connected to nothing. - No
wip_urn/<package3d>in a published.lbr. Account-scoped cloud state must not ship. - Pin coverage.
connectcount should equal symbol pin count. When a symbol pin's number has no same-named pad, the part needs apinmap.json- and quietly dropping it is the dangerous case, because every visual check still passes. .steppresent.
Of 11 components tested, 10 needed no pin map (the KiCad convention that pin NUMBER equals pad NAME held, including a 94-pin BGA). Exactly one - type-c-31-m-12 - genuinely diverges: symbol pin S1 named SHIELD, footprint pad SH. That part is also broken in KiCad itself for the same reason, so rule 4 catches real source defects, not conversion artifacts.
The alternative you raised: let the wiki convert
If you would rather not require authors to publish a .lbr, the wiki can generate one on demand - it runs on Linux, so adom-lbr generate --sym <sym> --fp <fp> is available to it, and a widget or endpoint could produce the .lbr for the page (and the .adom-lbr.json hub alongside).
That is strictly better than the status quo for older pages, and it composes with the linter: the linter reports what is missing, the generator fills it in. What matters is only that the conversion happen somewhere with a Linux userland - the wiki or the authoring container - and never on the viewer's PC.
Current state of the 11 test parts
I regenerated and validated .lbr files for all of them from their own KiCad sources via adom-lbr 2.7.1, and published to the pages I own. All 140 of the basic parts moved from a personal account to the adom org today, so the paths are now stable org paths.
Happy to hand over the generator invocation and the validation checks I used if that is useful for the linter.