app
KiCad - the KiCad Bridge
Public Made by Adomby adom
Drive your own KiCad from an AI, in the background: open every editor, read the whole board as data (the EDA Bridge Standard board model), stack-up, part heights, netlists, place, route, pour, DRC and exports.
← Commit history
docs: Konnect v0.13.0 gap map (every row covered in 1.0.61), comparison page updated (211 verbs, Konnect parity row, Linux on insiders)
2 files changed
+170−2
docs/comparison.md+3−2@@ -66,7 +66,7 @@ Y = yes, P = partial, N = no. Marks for other tools come from their own document | Feature | Adom | MX | KN | HP | LA | SD | PRO | AIA | KP | POA | With KiCad 11 | |---|---|---|---|---|---|---|---|---|---|---|---|-| Tool catalog the AI reads, each verb with a hint, example, related verbs and pitfalls | Y (119) | Y (244) | Y (228) | N | P | P | Y (387) | Y (115) | Y (135) | P (109) | unchanged |+| Tool catalog the AI reads, each verb with a hint, example, related verbs and pitfalls | Y (211) | Y (244) | Y (228) | N | P | P | Y (387) | Y (115) | Y (135) | P (109) | unchanged | | One native binary, no runtime, installed and updated from a sha-verified manifest | Y (signed since 1.0.53) | N | Y | N | N | N | N | N | N | N | unchanged | | Install KiCad itself, silently, then verify | Y | N | N | N | N | N | N | N | N | N | unchanged | | Launch KiCad, open a project or board in the GUI | Y | Y | P | N | Y | N | P | Y | P | N | `OpenDocument` helps everyone, headless only for now |@@ -89,6 +89,7 @@ Y = yes, P = partial, N = no. Marks for other tools come from their own document | Board edit through KiCad's IPC API as native undo steps (ours: placement with courtyard checks, routing, pours and zone plans, silkscreen) | Y | P | Y | N | N | N | P | Y | Y | N | unchanged | | Autorouting: AI routing through the API, and Freerouting installed on demand | Y | Y | Y | N | N | N | Y | P | N | Y | unchanged | | ERC and DRC with parsed results | Y | Y | Y | N | P | Y | Y | Y | N | Y | still no live DRC over IPC |+| Every Konnect v0.13.0 capability: schematic hierarchy and sheet pins, annotation, buses, batch edits, board outline and layer setup, netclasses and rules, flip and align, update PCB from schematic, DXF, GenCAD, IPC-2581, ODB++ and IPC-D-356, footprint and symbol authoring ([the row-by-row map](konnect-gap.md)) | Y (1.0.61) | P | Y | N | N | N | P | P | P | P | unchanged | | BOM and netlist export | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | unchanged | | Gerber, drill, STEP, SVG, PDF export | Y | Y | Y | P | N | P | Y | P | Y | Y | export jobs over IPC for everyone | | 3D image of a board or chip | Y | P | N | N | Y | N | Y | Y | Y | Y | `RunBoardJobExportRender` for everyone |@@ -192,7 +193,7 @@ We have asked the KiCad developers for the second list, with measurements and vi ## Where others lead -- **Cross-platform.** Every other tool runs on macOS or Linux; we are Windows-only until our platform owners finish their builds.+- **Cross-platform.** Every other tool runs on macOS and Linux. Our Linux build (KiCad from the distro, snap or Flatpak) is on the insiders tier since 1.0.58, without the window verbs yet; the macOS build is a separate port. - **Breadth of design checks.** kicad-mcp-pro covers signal integrity, power integrity, EMC and DFM cost with fast estimates, and kicad-happy audits power trees, ESD and EMC and generates SPICE testbenches automatically. We have no PDN, EMC or ESD checks yet. - **Supply-chain hygiene.** kicad-mcp-pro's OpenSSF Silver, SBOMs and checksums set the bar; we sign our executable but publish no SBOM yet. - **Community size.** KiCAD-MCP-Server has thousands of stars and many outside contributors. We live on our own wiki rather than GitHub, which makes us harder to find, and we have no outside pull requests yet.
docs/konnect-gap.mdadded+167@@ -0,0 +1,167 @@+# Konnect v0.13.0 gap matrix++Konnect ([mixelpixx/Konnect](https://github.com/mixelpixx/Konnect), v0.13.0, 2026-10-24) serves 228 MCP tools in 21 toolsets. This page maps every one of them to a KiCad Bridge verb, and lists what we are building where we had no match. Reviewed 2026-10-27 against kicad-bridge 1.0.59 (133 verbs); closed in 1.0.60 (211 verbs).++Legend: **have** = a kicad-bridge verb covers it (built in this round where the verb is new); **elsewhere** = an Adom tool outside the bridge covers it; **n/a** = not needed by our design (with the reason).++## Project and editor++| Konnect | Status | Ours |+|---|---|---|+| create_project | have | `kicad_project_create` (pro, sch, pcb; optional template board) |+| open_project | have | `kicad_launch`, `kicad_open_board`, `kicad_routing_state` (open boards) |+| save_project | have | `kicad_save_board` (IPC SaveDocument) |+| get_project_info | have | `kicad_project_info` |+| rename_project | have | `kicad_project_rename` (files and internal references) |+| snapshot_project | have | `kicad_project_snapshot` (timestamped copy plus PDFs) |+| open_schematic_viewer | have | `kicad_show_schematic` (the real editor, on screen) |+| get_editor_state | have | `kicad_state`, `kicad_window_info` |+| get_editor_selection | have | `kicad_get_selection` (IPC GetSelection) |+| resolve_navigation_target, mutate_editor_selection | have | `kicad_select_net`, `kicad_select_clear`; build `kicad_select_items` (by id or reference) |+| resolve_cross_probe_target | have | `kicad_cross_probe` (symbol to footprint and back by symbol path) |++## Schematic: components and wiring++| Konnect | Status | Ours |+|---|---|---|+| add_schematic_component, batch_place_components | have (built) | `kicad_sch_place_symbol`; batch via `kicad_sch_batch` |+| delete_schematic_component, batch_delete_* | have (built) | `kicad_sch_delete` (uuid, every unit by reference, labels by name); many at once via `kicad_sch_batch` |+| edit_schematic_component, add_component_annotation, group_components, batch_edit | have | `kicad_sch_set_property` (all units), batch via `kicad_sch_batch` |+| get_schematic_component, list_schematic_components | have (built) | `kicad_sch_components` |+| move_schematic_component | have | `kicad_sch_move` (every unit moves by one delta; `by` or `to`) |+| rotate_schematic_component | have (built) | `kicad_sch_rotate` |+| move_connected | have (built) | `kicad_sch_move {stretchWires:true}` |+| move_region, bulk_move | have (built) | `kicad_sch_move_region` |+| annotate_schematic | have (built) | `kicad_sch_annotate` |+| get_schematic_pin_locations (+batch) | have (built) | `kicad_sch_pins` |+| replace_component | have (built) | `kicad_sch_replace_symbol` |+| update_symbols_from_library | have (built) | `kicad_sch_update_from_library` |+| reset_schematic_field_positions | have (built) | `kicad_sch_reset_fields` |+| get_schematic_view, render_schematic_png | have | `kicad_export_svg` exists; build `kicad_render_schematic` (PNG) |+| add_wire, batch_add_wire, add_schematic_connection | have | `kicad_sch_wire` (polyline, auto junctions) |+| delete_schematic_wire (+batch) | have (built) | `kicad_sch_delete_wire` (prunes orphan junctions) |+| split_wire_at_point | have (built) | `kicad_sch_split_wire` |+| add_schematic_net_label | have | `kicad_sch_label` (local, global, hierarchical, power) |+| delete_schematic_net_label | have (built) | `kicad_sch_delete` by uuid, or `label` (+ `at`) by name and point |+| rotate_schematic_label, batch_rotate_labels, move_labels_by_offset | have (built) | `kicad_sch_edit_label` |+| add_power_symbol | have | `kicad_sch_label {kind:"power"}` |+| add_no_connect (+batch), delete_no_connect (+batch) | have (built) | `kicad_sch_no_connect` (`remove:true`, `pins` and `points` arrays) |+| add_junction (+batch) | have (built) | `kicad_sch_junction` |+| connect_to_net, batch_connect_to_net, connect_passthrough | have (built) | `kicad_sch_connect_to_net` |+| connect_pins, batch_connect_pins | have (built) | `kicad_sch_connect_pins` |+| add_schematic_text | have (built) | `kicad_sch_text` |+| add_bus, batch_add_bus, add_bus_entry, connect_pins_to_bus | have (built) | `kicad_sch_bus`, `kicad_sch_bus_entry`, `kicad_sch_connect_to_bus` |+| (all batch_* tools) | have (built) | `kicad_sch_batch`: any list of the operations above in one atomic write |++## Schematic: analysis, hierarchy, export++| Konnect | Status | Ours |+|---|---|---|+| list_schematic_wires, list_schematic_labels, list_schematic_nets | have (built) | `kicad_sch_items` (wires, labels, junctions, no-connects, texts, sheets) |+| get_net_connections, get_net_components, get_pin_net_name, get_component_nets, get_pin_connections, get_connected_items | have | `kicad_netlist` (net, parts, expect), `kicad_trace_net`, `kicad_find_connections` |+| get_net_connectivity, trace_from_point | have | `kicad_sch_trace_point` |+| find_orphan_items, validate_wire_connections, validate_component_connections | have | `kicad_sch_check` (dangling wire ends, floating labels, unconnected pins) |+| find_shorted_nets, find_single_pin_nets | have | `kicad_sch_check` |+| check_schematic_overlaps, get_schematic_layout | have | `kicad_sch_check {overlaps:true}` |+| fix_connectivity | have | `kicad_sch_fix_connectivity` (snap near-miss ends, dry run by default) |+| set_visual_baseline, compare_visual_baseline | have | `kicad_render_schematic {baseline:"set"|"compare"}` |+| export_schematic_svg, export_schematic_pdf | have | `kicad_export_svg`, `kicad_export_pdf` |+| generate_netlist, export_netlist_summary | have | `kicad_extract_netlist`, `kicad_netlist` |+| run_erc | have | `kicad_run_erc` |+| update_pcb_from_schematic | have | `kicad_update_pcb_from_schematic` (plan by default; apply on the closed board file; live apply refused, F8 in KiCad) |+| create_schematic, set_schematic_page | have | `kicad_sch_create`, `kicad_sch_page` |+| add_hierarchical_sheet, edit_sheet, move_sheet, delete_sheet, duplicate_sheet | have | `kicad_sch_sheet` (add, edit, move, delete, duplicate) |+| get_sheet_hierarchy, renumber_sheet_pages | have | `kicad_sch_hierarchy` (tree; renumber) |+| import_sheet_pins, add_sheet_pin, edit_sheet_pin, delete_sheet_pin, validate_sheet_pins | have | `kicad_sch_sheet_pins` |++## Board++| Konnect | Status | Ours |+|---|---|---|+| set_board_size, add_board_outline | have | `kicad_board_outline` (rectangle, rounded corners, polygon; replaces or appends) |+| get_board_info, get_board_extents | have | `kicad_board_summary`; build title block and extents fields |+| get_layer_list, get_board_stackup | have | `kicad_layers_in_use`, `kicad_copper_layers`, `kicad_layer_stack` |+| add_layer | have | `kicad_set_layer_count` |+| set_active_layer | n/a | Konnect refuses it too (editor session state) |+| delete_graphics | have | `kicad_delete_graphics` |+| add_mounting_hole | have | `kicad_add_mounting_hole` |+| add_board_text | have | `kicad_silk_text_batch` |+| add_zone, add_copper_pour, refill_zones | have | `kicad_add_zone`, `kicad_apply_zone_plan`; build `kicad_refill_zones` |+| import_svg_logo | have | `kicad_import_svg` |+| place_component, place_component_array, duplicate_component | have | `kicad_place_footprint`; build `kicad_add_footprint` (live, with array and duplicate) |+| move_component, rotate_component, set_component_placements | have | `kicad_move_footprint` (refs batch, one undo step) |+| flip_component | have | `kicad_flip_footprint` (FlipItems on 10.0.6+, else a full mirror) |+| delete_component | have | `kicad_delete_footprint` |+| edit_component | have | `kicad_edit_footprint` (value and fields, live) |+| align_components | have | `kicad_align_footprints` |+| find_component, get_component_list, get_component_pads, get_pad_position | have | `kicad_component_data`, `kicad_component_pins`, `kicad_board_pads` |+| update_footprints_from_library | have | `kicad_update_footprints_from_library` |+| list_board_footprint_graphics, edit_board_footprint_graphic | have | `kicad_footprint_graphics` |+| set_placed_footprint_models | have | `kicad_footprint_models` |+| repair_corrupted_footprints | have | `kicad_lint_board`, `kicad_format_upgrade` |+| get_board_2d_view | have | `kicad_render_board`, `kicad_show_2d_board` (real editor screenshot) |++## Routing and rules++| Konnect | Status | Ours |+|---|---|---|+| route_trace, route_pad_to_pad, add_via, add_net | have | `kicad_route_net`, `kicad_add_track`, `kicad_add_via`, `kicad_route` |+| delete_trace, modify_trace | have | `kicad_remove_route`, `kicad_modify_track` |+| query_traces, get_nets_list | have | `kicad_routing_state`, `kicad_list_nets` |+| route_differential_pair | have | `kicad_route_diff_pair` |+| create_netclass, get_netclasses, assign_net_to_class | have | `kicad_netclasses` |+| export_specctra_dsn, plan_specctra_ses_import, apply_specctra_ses, route_specctra_dsn, check_freerouting | have | `kicad_autoroute {engine:"freerouting"}`, `kicad_freerouting` |+| copy_routing_pattern | have | `kicad_copy_routing` |+| run_drc, get_drc_violations | have | `kicad_run_drc`, `kicad_routing_validate` |+| set_design_rules, get_design_rules | have | `kicad_set_design_rules` (fab packs), `kicad_board_rules` (project constraints read and write) |+| set_predefined_sizes, get_predefined_sizes | have | `kicad_board_rules {trackWidths, viaSizes}` |+| set_layer_constraints | have | `kicad_custom_rules` (.kicad_dru rules) |+| check_clearance | have | `kicad_check_clearance` |+| check_kicad_ui, launch_kicad_ui | have | `kicad_readiness`, `kicad_launch` |++## Placement helpers++| Konnect | Status | Ours |+|---|---|---|+| score_placement | have | `kicad_score_placement` |+| place_decoupling_caps | have | `kicad_place_decoupling` (plan, then `kicad_move_footprint`) |+| plan_bga_fanout | have | `kicad_plan_fanout` |+| auto_place_from_schematic, refine_placement_force_directed | n/a | deprecated in Konnect; placement is the AI's step in AI Flow |++## Exports and manufacturing++| Konnect | Status | Ours |+|---|---|---|+| export_gerber, export_pdf, export_svg, export_3d, export_bom, export_position_file | have | `kicad_export_gerber` (with drill), `kicad_export_pdf`, `kicad_export_svg`, `kicad_export_step`, `kicad_export_bom_csv`, `kicad_export_pos` |+| export_netlist (IPC-D-356) | have | `kicad_export_ipc356` |+| export_dxf, export_gencad, export_ipc2581, export_odb | have | `kicad_export_dxf`, `kicad_export_gencad`, `kicad_export_ipc2581`, `kicad_export_odb` |+| export_manufacturing_package | have | `kicad_export_fab_package` (Gerbers, drill, BOM, CPL, one zip, fab columns) |+| validate_for_manufacturing | have | `kicad_validate_for_fab` |+| estimate_cost | have | adom-instapcb-quote; build `kicad_estimate_cost` that feeds it the board's numbers |++## Library authoring++| Konnect | Status | Ours |+|---|---|---|+| create_footprint, edit_footprint_pad, set_footprint_graphics, set_footprint_metadata, set_footprint_models | have | `kicad_fp_create`, `kicad_fp_edit` (pads, graphics, metadata, models) |+| create_symbol, delete_symbol | have | `kicad_sym_create`, `kicad_sym_delete` |+| get_footprint_info, get_symbol_info | have | `kicad_fp_info`, `kicad_sym_info` |+| search_symbols, search_footprints | have | `kicad_search_library` |+| list_*_libraries, list_symbols_in_library, list_library_footprints, register_*_library | have | `kicad_list_symbols`, `kicad_list_footprints`, `kicad_install_library` |++## Reviews++| Konnect | Status | Ours |+|---|---|---|+| audit_decoupling, audit_connections, audit_power_rails, run_design_review | have | `kicad_design_review` (schematic checks) plus Adom Fields for the board physics |+| audit_manufacturing | have | `kicad_validate_for_fab` (DFM: spacing, silk over pads, via in pad, acid traps, edge clearance) |+| check_bom_health | elsewhere | adom-parts-search (live stock across Mouser, DigiKey, JLCPCB) |++## Covered elsewhere or by design++| Konnect | Why |+|---|---|+| JLCPCB database tools (5), enrich_datasheets, get_datasheet_url | adom-parts-search queries live distributor data; the wiki's 22,000 component pages carry datasheets |+| templates (4) | Adom molecules on the wiki are tested subcircuits with layout, not schematic-only templates |+| config and natural-language design rules (7) | Skills and project memory carry the AI's rules; the bridge stays stateless |+| meta-tools (load_toolset and friends) | ab routes verbs; `kicad_describe` self-describes; `kicad_verb_times` and `kicad_progress` cover observability |