KiCad - the KiCad Bridge
Public Made by Adomby adom
Reference implementation of the KiCad bridge: multi-instance Python server, forward path via kicad-cli, reverse path via in-process plugin. Most complex of the three bundled bridges.
Footprint lint incorrectly says kicad-cli was not found
On AdomLapper, KiCad Bridge 1.0.11 reports that kicad-cli was not found when linting a directory containing three footprints. Native kicad_export_svg immediately succeeds using KiCad CLI 10.0.5 on the same target. This appears to be an incorrect explanation for the footprint-only native validation gap. Please distinguish unsupported/native-not-consulted from executable-not-found. Do not upgrade the structural result into a native parser pass.
Exact lint command:
adom-bridge kicad_lint_library '{"libraryPath":"C:/Users/john/Downloads/adom-gate/esc-demo/component-mpn/hero-footprints"}' --target AdomLapper --ai-thread "ESC AI Flow Astra"
Full lint output:
{
"_hint": "✅ 0 symbol(s) + 3 footprint(s) balanced by the BRIDGE's reader, format version(s) [20260206]. KiCad's own parser was NOT consulted (kicad-cli not found), so this is a structural check only, not KiCad's verdict.",
"_timeoutHint": "ab waits up to 130s for this verb before the request times out. If it's a long operation (cloud open / download / export), DON'T treat a timeout as failure — the work usually keeps running on the bridge. Poll `kicad_status` until it reports done.",
"bridgeVersion": "1.0.11",
"data": {
"footprints": [
{
"_warnings": [],
"fileVersion": null,
"generator": null,
"layers": [
"F.CrtYd",
"F.Cu",
"F.Fab",
"F.SilkS"
],
"name": null,
"padCount": 2,
"path": "C:/Users/john/Downloads/adom-gate/esc-demo/component-mpn/hero-footprints/CL21B105KBFNNNE.kicad_mod"
},
{
"_warnings": [],
"fileVersion": 20260206,
"generator": "kicad-footprint-generator",
"layers": [
"F.CrtYd",
"F.Cu",
"F.Fab",
"F.SilkS"
],
"name": "cl31b106kbhnnne",
"padCount": 2,
"path": "C:/Users/john/Downloads/adom-gate/esc-demo/component-mpn/hero-footprints/cl31b106kbhnnne.kicad_mod"
},
{
"_warnings": [],
"fileVersion": 20260206,
"generator": "kicad-footprint-generator",
"layers": [
"F.CrtYd",
"F.Cu",
"F.Fab",
"F.SilkS"
],
"name": "drv8300dpwr",
"padCount": 20,
"path": "C:/Users/john/Downloads/adom-gate/esc-demo/component-mpn/hero-footprints/drv8300dpwr.kicad_mod"
}
],
"kind": "mixed_dir",
"source_path": "C:/Users/john/Downloads/adom-gate/esc-demo/component-mpn/hero-footprints",
"summary": {
"fileFormatVersions": [
20260206
],
"footprintCount": 3,
"modFileErrorCount": 0,
"symFileErrorCount": 0,
"symbolCount": 0
},
"symbols": []
},
"durationMs": 102,
"elapsedMs": 7,
"error": "",
"kicadParser": null,
"mechanism": "cli",
"ok": true,
"output": "{\"data\":{\"footprints\":[{\"_warnings\":[],\"fileVersion\":null,\"generator\":null,\"layers\":[\"F.CrtYd\",\"F.Cu\",\"F.Fab\",\"F.SilkS\"],\"name\":null,\"padCount\":2,\"path\":\"C:/Users/john/Downloads/adom-gate/esc-demo/component-mpn/hero-footprints/CL21B105KBFNNNE.kicad_mod\"},{\"_warnings\":[],\"fileVersion\":20260206,\"generator\":\"kicad-footprint-generator\",\"layers\":[\"F.CrtYd\",\"F.Cu\",\"F.Fab\",\"F.SilkS\"],\"name\":\"cl31b106kbhnnne\",\"padCount\":2,\"path\":\"C:/Users/john/Downloads/adom-gate/esc-demo/component-mpn/hero-footprints/cl31b106kbhnnne.kicad_mod\"},{\"_warnings\":[],\"fileVersion\":20260206,\"generator\":\"kicad-footprint-generator\",\"layers\":[\"F.CrtYd\",\"F.Cu\",\"F.Fab\",\"F.SilkS\"],\"name\":\"drv8300dpwr\",\"padCount\":20,\"path\":\"C:/Users/john/Downloads/adom-gate/esc-demo/component-mpn/hero-footprints/drv8300dpwr.kicad_mod\"}],\"kind\":\"mixed_dir\",\"source_path\":\"C:/Users/john/Downloads/adom-gate/esc-demo/component-mpn/hero-footprints\",\"summary\":{\"fileFormatVersions\":[20260206],\"footprintCount\":3,\"modFileErrorCount\":0,\"symFileErrorCount\":0,\"symbolCount\":0},\"symbols\":[]},\"message\":\"Lint: 0 symbol(s), 3 footprint(s), 0 file error(s)\"}",
"schemaVersion": 1,
"status": "ok",
"statusVerb": "kicad_status",
"success": true,
"timeoutSeconds": 130
}
Workaround: inserted the three footprints into an isolated validation-board copy, leaving all copper-pad definitions unchanged, and exported native SVG. Full output:
{
"_hint": "Pull the file with ab pull_file to bring it into the container.",
"_timeoutHint": "ab waits up to 180s for this verb before the request times out. If it's a long operation (cloud open / download / export), DON'T treat a timeout as failure — the work usually keeps running on the bridge. Poll `kicad_status` until it reports done.",
"bridgeVersion": "1.0.11",
"cliElapsedMs": 610,
"cliVersion": "10.0.5",
"data": {
"bytes": 778687,
"files": [
"footprint-validation.svg"
],
"output_path": "C:/Users/john/Downloads/adom-gate/esc-demo/component-mpn/hero-footprints/parsed/footprint-validation.svg"
},
"durationMs": 733,
"elapsedMs": 628,
"error": "",
"mechanism": "cli",
"output": "{\"data\":{\"bytes\":778687,\"files\":[\"footprint-validation.svg\"],\"output_path\":\"C:/Users/john/Downloads/adom-gate/esc-demo/component-mpn/hero-footprints/parsed/footprint-validation.svg\"},\"message\":\"SVG exported to C:/Users/john/Downloads/adom-gate/esc-demo/component-mpn/hero-footprints/parsed/footprint-validation.svg (1 file(s))\"}",
"path": "C:/Users/john/Downloads/adom-gate/esc-demo/component-mpn/hero-footprints/footprint-validation.kicad_pcb",
"progress": {
"confidence": "typical",
"elapsedSec": 0.6,
"estimatedSec": 0.6,
"etaSec": 0.0,
"measured": {
"phase": "kicad.export",
"seconds": 0.61,
"startKind": "warm"
},
"percent": 100,
"phase": "kicad.export",
"startKind": "warm",
"stepLabel": "done"
},
"schemaVersion": 1,
"status": "ok",
"statusVerb": "kicad_status",
"success": true,
"timeoutSeconds": 180
}
Validation copy: /home/adom/aiflow-esc-astra/component-heroes/footprint-validation.kicad_pcb. No bridge restart or private bridge patch was used.