app
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.
master
John Lauer
ESC routing to 100%: the place-route loop (smaller signal vias, 13 parts moved, 114 commits, 0 unconnected), kicad-place-route-loop skill, video and stats; Astra pending
df61ffd
25d ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
{
"board": "ESC G431, Fable's placement, GND plane In1.Cu, +3V3 plane In2.Cu, 59 nets",
"desktop": "ConfRoomROG, KiCad 10.0.5, kicad-bridge 1.0.3 (job-mode autoroute staged)",
"freerouting": {
"engine": "Freerouting 2.4.1",
"wallSeconds": 229.51,
"passes": 18,
"netsRouted": 59,
"segments": 1217,
"vias": 139,
"commits": 59,
"drcErrors": 202,
"drcErrorsInherited": 13,
"drcErrorTypes": {
"clearance": 12,
"shorting_items": 9,
"hole_clearance": 4,
"malformed_courtyard": 6,
"track_width": 162,
"solder_mask_bridge": 9
},
"unconnected": 7,
"usd": 0,
"agents": 0,
"note": "one call; the DSN writer's rule mapping caused the track_width errors (issue #93)",
"promptToDone": {
"wallSeconds": 229.51,
"wallMinutes": 3.8,
"definition": "one kicad_autoroute job inside Fable's session, job start to copper landed"
},
"verdict": "not finished: 7 unconnected"
},
"fable": {
"engine": "Claude Fable 5.1 (own grid router)",
"planning": "router written and gated offline; see window",
"commits": 114,
"wallSeconds": 570.0,
"netsRouted": 59,
"segmentsPlanned": 2687,
"viasPlanned": 309,
"copperMmPlanned": 2086.91,
"drcErrors": 13,
"drcErrorsInherited": 13,
"unconnected": 0,
"window": [
"2026-09-12T20:44:07.896Z",
"2026-09-12T23:48:47Z"
],
"tokensThread": {
"input_tokens": 2376,
"cache_creation_input_tokens": 163805,
"cache_read_input_tokens": 77767222,
"output_tokens": 102110
},
"threadTurns": 86,
"agents": 2,
"tokensWithAgents": {
"input_tokens": 12536,
"cache_creation_input_tokens": 15625330,
"cache_read_input_tokens": 164242105,
"output_tokens": 444119
},
"usdThread": 26.62,
"usdWithAgents": 273.69,
"planShareWithAgentsPercent": 136.8,
"priceBasis": "claude.com/pricing 2026-09-12",
"promptToDone": {
"spans": [
{
"start": "2026-09-12T20:41:10Z",
"end": "2026-09-13T00:29:15Z",
"minutes": 228.1,
"note": "to the rejected result (7 unconnected) published"
},
{
"start": "2026-09-13T13:52:24Z",
"end": "2026-09-13T15:38:04Z",
"minutes": 105.7,
"note": "from the rejection to the board validated live at 100%"
}
],
"wallMinutes": 333.8,
"definition": "wall clock the human waited, both spans"
},
"take1": {
"commits": 105,
"wallSeconds": 518.5,
"netsRouted": 55,
"unconnected": 7,
"drcErrorsNew": 0,
"verdict": "rejected by John: unconnected items are a failure"
},
"take2": {
"placementMoves": 13,
"movesUndoSteps": 1,
"movesWallSeconds": 0.15,
"commits": 114,
"wallSeconds": 570.0,
"meanCommitSeconds": 4.38,
"netsRouted": 59,
"unconnected": 0,
"drcErrors": 13,
"drcErrorsInherited": 13,
"drcErrorsNew": 0,
"segments": 2687,
"vias": 309,
"copperMmPlanned": 2086.91,
"segmentsByWidth": {
"0.2": 62,
"0.25": 2095,
"0.5": 253,
"1.0": 277
},
"signalVia": "0.6/0.3",
"powerVia": "0.8/0.4",
"routerPasses": 3,
"ripUps": 366,
"window": [
"2026-09-13T15:28:22Z",
"2026-09-13T15:38:04Z"
],
"loop": [
"smaller signal vias: 7 unconnected to 2",
"13 parts moved offline, DRC-clean fixture",
"router 3 passes to 0 failed",
"offline gate 0 new errors 0 unconnected",
"live: 1 move batch + 114 commits, validate 0 unconnected"
]
},
"usdRework": 14.98,
"tokensRework": {
"input_tokens": 2256,
"cache_creation_input_tokens": 286956,
"cache_read_input_tokens": 16968935,
"output_tokens": 122595
}
},
"astra": {
"engine": "GPT-6 Astra in Codex",
"status": "pending",
"promptToDone": {
"definition": "from the moment John pasted the routing prompt to the moment the show-and-tell issue was filed"
}
}
}