adom-circuit — AI-first EDA (aci)
UnreviewedBuild a PCB by prompting an AI, watch every step stream into a Hydrogen webview. Rust-native pipeline (parse, DRC, ERC, gerber, SVG, autorouter) + Babylon.js 8.x 3D scene. Mouser-first BOM. Shares one
adom-circuit (aci)
AI-first EDA. KiCad-native. Babylon-rendered. Mouser-sourced. Renderer-owned.
Build a PCB by prompting an AI, watch every step stream into a Hydrogen webview — BOM resolution → library construction → schematic → 3D board → autoroute → DRC → final GLB. Rust owns parse + geometry + compute; Babylon 8.x owns the 3D scene; they talk scene-IR JSON over WebSocket. GLTF2Export produces the final file from the live scene — what the user watches being built is what ships.
Repo: adom-inc/adom-circuit (private)
Binary name: aci
What the tool does
aci build <prompt>— kicks off a BOM → datasheet → Mouser → library → schematic → 3D board pipeline. Spawns parallel sub-agents (one per component); LibView populates live; autoroute streams into arouting-previewscene node at 30 fps.aci dev— opens the Hydrogen webview with full chrome: Status Bar, Library Rail, Component HUD (refdes / footprint / nets / Mouser PN / price / stock), Timeline Strip, Global Footer with VS Code jump buttons.aci parity— cross-checks aci-drc / aci-erc / aci-svg against thekicad-clioracle (via service-kicad or local install). Baseline gate before a release.aci doctor— health-checks every dep (service-kicad CLI → local kicad-cli → service-aci) before a build. Prints what's missing + what URL aci would hit.aci review <pcb>— quick DRC + ERC fidelity report without spinning up the viewer.aci test --visual --bless— pixel-diff visual regression harness with ralph-loop screenshots into the shotlog.aci share/aci clone— publish a complete project bundle to the Adom Wiki / pull someone else's project and open it locally.
Native pipeline (no shell-outs in the hot path)
| Stage | Crate | What |
|---|---|---|
| KiCad s-expr parse + emit | aci-sexpr |
Byte-identical round-trip on 99.6% of the corpus (461/463 files) |
| Typed schema + markdown bridge | aci-kicad |
Shells to Noah's kicad-to-markdown for LLM-facing view |
| Scene IR compute (outline / copper / vias / pads / paste) | aci-render |
Feeds the Babylon scene via WebSocket patches |
| DRC | aci-drc |
8 rules r-tree-indexed; visualized as red overlays in the scene |
| ERC | aci-erc |
Sheet + unit-aware; duplicates + unconnected + conflicts |
| Gerber emit | aci-gerber |
RS-274X; parity-tested against kicad-cli on 20× draw-count |
| SVG emit | aci-svg |
Schematic SVG; PCB top-view is an orthographic projection of the 3D scene |
| Autorouter | aci-route |
A* grid, rayon-parallelized; routes the reference PCB in 22 s |
| Supplier resolver | aci-source |
Mouser → DigiKey → JLCPCB; datasheet-validated candidates only |
| Datasheet parser wrapper | aci-datasheet |
Parallel pup-window fan-out; visualizer on port 8851 |
| Wiki publish | aci-wiki |
wiki.cache_hit / wiki.published events on sym / fp / 3D deliver |
Ecosystem dependencies (what aci reaches out to)
| Dependency | What | Install |
|---|---|---|
| service-kicad | kicad-cli operations + 4.7 GB of vetted KiCad library assets | Tier B auto-install on first trigger |
| adom-mouser / adom-digikey / adom-jlcpcb / adom-parts-search | Supplier pricing + stock + PN resolution | Tier A via gallia/install.mjs |
| adom-desktop (pup) | Multi-Chrome-session browser driving for ralph loops + the datasheet visualizer | Tier A |
| gallia/viewer | Absorbed Babylon 8.52 scene builders — symbol / footprint / gerber viewers, solder-jet-sizer, LibView | Tier A |
aci doctor surfaces any of these that aren't reachable from the current container, with a paste-into-Claude install prompt for each.
First-class scene features (what makes the GLB different)
- Named scene tree — every node addressable by path:
board/components/U1/body,board/components/U1/pad/7,board/layers/F.Cu/trace[17],board/paste/U1/pad_1/dot[3]. Survives export as glTFextras. - Solder-jet paste deposition — 13,627 paste dots at 250 µm planned + animated in the
squirtAnimationGroup. Baked into the GLB. - Probing workcell simulation — 100 mm GND-umbilical cover + greedy set-cover over test points.
probe.*events stream during the simulation. - InstaPCB 26-step manufacturing sim — pre-clad FR4 → lasered vias → electroplating → trace ablation → mask press → silk etch → depanel. Transient meshes (plating bath, vacuum press, silk ribbon, depanel groove) stripped from
board.glb, kept infull-scene.glb. - Three export tiers —
board.glb(scene filtered toexportClass=board),full-scene.glb(everything including workcell + diagnostics + process), full project bundle (scene-ir.json+build-log.ndjson+ source).
Install (Tier B)
On a fresh Adom container, say "build me a board" or "run DRC via aci" — Claude's wiki-discover skill will surface this page and offer to run the install_hint. Manual:
curl -fsSL https://wiki-ufypy5dpx93o.adom.cloud/static/apps/adom-circuit/aci -o /tmp/aci \
&& chmod +x /tmp/aci \
&& sudo install -m 0755 /tmp/aci /usr/local/bin/aci \
&& aci install \
&& aci doctor
aci doctor prints the current dep status — any missing service suggests its own install_hint.
Why Tier B (not Tier A)
Every external publisher to the Adom Wiki can only use Tier B — they can't edit gallia/install.mjs. If we publish our own flagship tool as Tier A, we never feel the friction external publishers are stuck with, and the Tier B path quietly rots. So we eat our own dog food. See adom-app-model §7 for the full doctrine.
Current status
- 97% of PLAN.md shipped — every Part 27 Critical + High + Medium + Low resolved.
- 147+ commits, 87/87 tests green, 16 Rust crates, 2 TS packages.
- Phase 4 end-to-end proven (176 WebSocket events → Babylon scene → GLB round-trip).
- Phase 15 worked-example (
scripts/phase-15-worked-example.sh) green on a blank project. - Partial gates: Phase 8 SVG pixel-compare (structural tag parity done, resvg pixel-compare deferred), Phase 9 JLCPCB gerber submission (20× draw-count parity done, external fab submission is not automatable), Phase 10e WebGPU compute-shader autorouter (feature-gated scaffold).