Adom Library

Install?

adom-lbr — the EDA library translator. Bring a component in from any supported EDA tool and convert it to any other (KiCad ⇄ Altium ⇄ EAGLE/Fusion) through one canonical adom-lbr JSON — symbol + footprint + 3D + pin↔pad map. Altium is written natively (no Altium needed). Includes the adom-lbr Manager: browse wiki components and view symbol/footprint/3D + the per-EDA layer stackup.

adom-wiki pkg install adom/adom-lbr

Latest: v2.38.0, published

Contents

README

markdown

adom-lbr

adom-lbr: the EDA library translator. Bring a component in from any supported EDA tool and convert it to any other (KiCad ⇄ Altium ⇄ EAGLE/Fusion) through one canonical part format, with native Altium output and no local EDA software.

The adom-lbr JSON is Adom's own canonical part: one document carrying the symbol, footprint, 3D reference, and the pin↔pad map. adom-lbr is the translator around it: import a component from KiCad or Altium, then convert the adom-lbr JSON to any other tool: native Altium (.SchLib / .PcbLib / .IntLib), a KiCad .kicad_sym + .kicad_mod, or an EAGLE/Fusion .lbr. Any EDA tool in, any EDA tool out. The canonical JSON is the hub, so every source pairs with every target. The Altium libraries are written natively (the exact OLE2/CFBF binary) so no copy of Altium is needed at conversion time. Standalone Rust, no Node, no gallia.

("lbr" = Adom Library, the adom-lbr JSON, not EAGLE's .lbr, which is just one of the output formats.)

Formats & targets

Direction Format Used by
Hub adom-lbr JSON (symbol + footprint + graphics + pin↔pad map) the canonical format everything converts to/from
Import → hub KiCad .kicad_sym + .kicad_mod → adom-lbr JSON bring a KiCad part in
Import → hub Altium .SchLib / .PcbLib / .IntLib → adom-lbr JSON bring an Altium part in: pins, pads, and silk/courtyard/fab layers
Export → Altium native .SchLib + .PcbLib, or one bundled .IntLib Altium Designer, written natively, no Altium needed
Export → Fusion/EAGLE EAGLE .lbr (symbol + package + connects) Autodesk Fusion 360 Electronics, EAGLE, OrCAD
Export → KiCad native .kicad_sym + .kicad_mod (layers preserved) KiCad 6+
Merge add a part's symbol into an existing .SchLib install a part into a user's Altium library

Altium footprint graphics keep their layers across the round trip: silk / courtyard / fab decode into neutral roles and re-encode onto the right Altium layers (outline → Mechanical 13 "Assembly Top", courtyard → Mechanical 15 "Courtyard Top"). Verified byte-exact (Altium → JSON → Altium → JSON).

The Send to bar in the live app pushes the loaded library to whichever of those tools you're running (via the Adom Desktop bridge).

adom-lbr Manager: browse the wiki, inspect any part

adom-lbr manage opens a web app that lists every component on the wiki; click one and it renders the schematic symbol, footprint, and 3D model on the fly from the part's adom-lbr JSON (or, if the page has none, from its KiCad files). It surfaces the footprint layer stackup: what layer each silk / courtyard / fab / copper element becomes in KiCad and Altium, side by side, plus a per-layer show/hide filter, drag-to-pan / scroll-to-zoom viewers, and hover-to-highlight on pins & pads showing each one's number and name.

adom-lbr dashboard serve --print-url   # start (or reuse) the dashboard → http://127.0.0.1:8785/
adom-lbr manage --port 8785            # the same server, in the foreground

One click from the Hydrogen Dock Bar

adom-lbr running in Adom Hydrogen: the Adom LBR webview tab with green status LEDs and the Say it strip, launched from the dock rail on the right

adom-lbr is a card on Hydrogen's Dock Bar, the app-launcher rail on the right edge of the workspace. One click installs the CLI into your container (adom-wiki pkg install adom/adom-lbr, skipped when it is already there), starts the dashboard with adom-lbr dashboard serve --print-url, and takes over the pre-opened Adom LBR webview tab. The card's LED is live health, read from the dashboard's own /api/status every 15 seconds: six facets (binary, wiki, identity, library, 3D viewer, dock) plus a rollup the app owns, each carrying a hint that names the fix when it is not green.

The first thing on the page is the Say it strip, because you do not drive this dashboard by hand: you ask your AI, using the word lbr ("validate my lbr for fusion"). Click a phrase to copy it; Try it stages it, unsent, into this app's own AI thread. Click a phrase in the Say it strip to copy it. The cog opens Settings: whose boards count as My projects, the wiki list cache, and package Update/Uninstall with a live console. A Demo button in the header runs a guided tour that drives the whole dashboard for you, and every Send-to run shows a live panel: progress bar, streaming console, and evidence screenshots of what actually opened. The launch contract lives in dockbar.json at the root of this page repo; the bundled adom-lbr-dockbar skill documents every piece of it for your AI.

The 3-column library viewer, with an interactive embed

The embed's 3D column is a REAL interactive viewer, not a picture: when the part's directory holds a .glb, the model rides inline (Draco models are transcoded to quantized at build time, measured ~35% smaller) with the model-viewer runtime inlined beside it, so the finished readme.html renders an orbitable 3D chip even inside the wiki's no-network readme sandbox. No .glb means the static render, unchanged.

The Fusion-style 3-column viewer: symbol, footprint, 3D, and the pin→pad mapping table

Open the live ADS1115 3-column viewer: the exact self-contained file adom-lbr embed produces, served straight from this page (pan/zoom each panel; the pin→pad table is fully populated from the datasheet). It is built to sit in an <iframe> once the wiki enables component-page iframe embedding.

adom-lbr embed exports a Fusion 360-style three-column viewer as one self-contained .html file: symbol in column 1, footprint in column 2, the 3D chip in column 3 (each independently pan/zoomable) with the full pin → pad mapping table below, carrying each pin's type and datasheet description. It's built to drop straight into an <iframe> on a wiki component page: a single portable file, no server, no external assets.

adom-lbr embed --dir <chip-dir>                    # → <mpn>-lbr-embed.html
<iframe src="…/<mpn>-lbr-embed.html" width="100%" height="640" style="border:0"></iframe>

It assembles the three renders, the pin→pad connects, and the datasheet pin descriptions from a chip directory, exactly the part data adom-symbol, adom-footprint, ds2sf and chip-thumbnailer already produce.

The library at a glance

The library viewer: stats and a clean lint pass

Load an .lbr and the viewer breaks it down at a glance (symbols, packages, devicesets, pins, pads) and re-lints it server-side. A green Lint passed badge means the library is ready to import into Fusion 360 Electronics with no surprises. The top bar carries the Send to targets (KiCad / Fusion / Altium / OrCAD).

The linter catches what Fusion rejects

A lint failure: empty pin-to-pad connects

This is the whole point. Fusion will silently show "No Components" or refuse to place a part when a library is subtly broken. adom-lbr catches it first. Here the deviceset has no pin-to-pad connect mappings, so the linter flags empty-connects with a plain-English reason: "Fusion cannot use this component." It also catches missing packages, devices with no package attribute, malformed XML, and invisible symbol bodies, each with a code and a fix.

Generate from the command line

Generating an .lbr from KiCad sources

generate builds the whole library in one shot from a .kicad_sym (+ optional .kicad_mod), lint-checks it, and writes a native .lbr. The same engine powers the Send to → Fusion/Altium/OrCAD flow in adom-symbol and adom-footprint, so whatever you see in those apps is exactly what lands in your library.

What it does

  • generate: .kicad_sym (+ .kicad_mod) → native .lbr, lint-checked for Fusion compatibility.
  • lint / validate: catch the things Fusion rejects: missing connects, incomplete devicesets, bad pad maps.
  • import: EAGLE .lbr → KiCad .kicad_sym.
  • Live app: a viewer that lints the loaded .lbr and shows symbols / packages / devicesets / pins / pads at a glance.

Send to

Fusion 360 (open the .lbr directly), Altium / OrCAD (download the .lbr + import steps; native exporters on the roadmap), KiCad (converted back to .kicad_sym).

Open source: check it out, vibe-code it, send it back

adom-lbr is MIT and fully open. The complete Rust source is in this page's Files tab: browse it, or grab src/ + Cargo.toml.

  1. Build it. cargo build --release drops a standalone binary (no Node, no gallia).
  2. Point your install at your checkout. adompkg link john/adom-lbr ./adom-lbr so the adom-lbr you run is your local copy.
  3. Vibe-code a change. Open the folder in Claude Code and describe what you want: a new lint rule, another export target, a smarter symbol synthesizer. The lint rules live in one readable list, easy to extend.
  4. Send it back. Open a pull request on this page (the wiki reviews and merges per-repo PRs), or start a discussion thread. Good additions get folded into the shipped app.

Part of the Adom EDA family

Used by chip-fetcher and the Send-to flow across adom-symbol and adom-footprint; pairs with ds2sf.

Run it

adom-lbr generate --sym part.kicad_sym --fp part.kicad_mod --name PART --output part.lbr
adom-lbr serve --port 8784          # live linter app (AI-drivable)
adom-lbr embed --dir <chip-dir>     # Fusion-style 3-column viewer as one .html

MIT, contributions welcome.