Wire Harness Designer
Public Made by Adomby adom
Design wire harnesses in the browser and export a professional, print-ready PDF assembly drawing. Pick connectors, wire gauge, colour and stripe, sleeving, and connector-to-connector lengths; get a live fishbone diagram with a wire schedule and title block. Click any wire or connector in the drawing to edit it. Save and reload the whole harness as JSON.
Install?
Design wire harnesses in the browser and export a professional, print-ready PDF assembly drawing. Pick connectors, wire gauge, colour and stripe, sleeving, and connector-to-connector lengths; get a live fishbone diagram with a wire schedule and title block. Click any wire or connector in the drawing to edit it. Save and reload the whole harness as JSON.
adom-wiki pkg install adom/wire-harness-designer
Latest: v1.0.0, published
Contents
README
markdownWire Harness Designer
Design a wire harness in the browser and export a professional, print-ready PDF assembly drawing. Pick connectors, wire gauge, colour and stripe, sleeving, and connector-to-connector lengths; get a live fishbone diagram with a wire schedule and a title block. Click any wire or connector in the drawing to edit it. Save and reload the whole harness as JSON.

Install
adom-wiki pkg install adom/wire-harness-designer
wire-harness-designer open # starts the server and opens the webview
What it does
- Connectors: type (Deutsch, Molex, JST, M12, D-Sub, ring terminals, flying leads, …), pin count, and where each sits: auto, an end, or a branch up/down.
- Wires: From/To connector + pin, AWG gauge (drives strand thickness), colour with an optional stripe, and a signal/notes label.
- Lengths are per connector pair. Set
J1 ↔ J2once and every wire on that pair uses it (the Segment Lengths section). Older files with per-wire lengths migrate automatically. - Wire wrap / sleeving: braided, spiral, convoluted tube, harness tape, or heat shrink over a span of the trunk, each drawn with a distinct hatch and a callout.
- Live diagram: connector face views with numbered pins, a colourful wire ribbon along the trunk, sleeves, length dimensions, a wire schedule, and a standard title block.
- Click-to-edit: click any wire or connector in the drawing to change its colour, gauge, signal, length, type, pins, and more, inline.
- Export PDF: a real vector PDF (crisp at any zoom), multi-page when the schedule overflows. Sheet sizes: Tabloid, A3, Letter.
- Save / Load JSON: the whole harness is one
adom.wire-harness/v1document, so a drawing can be regenerated, diffed, or version-controlled.
The drawing

Everything you see (connectors, the wire ribbon, sleeves, the schedule, and the title block) comes from one layout engine, so the on-screen preview matches the exported PDF exactly.
Click any wire or connector to edit it

CLI
wire-harness-designer open # start the server (if needed) and open the webview [default]
wire-harness-designer serve # run the static server in the foreground
wire-harness-designer health # is the server running?
wire-harness-designer --version
Default port is 8830 (override with PORT). Everything (preview, PDF, JSON) runs
client-side; the Node server only serves static files so the webview has a URL to load.
How it is built
One layout engine emits a renderer-agnostic draw list that feeds both outputs:
public/harness-layout.js model JSON -> draw list (PDF points, y-down)
public/render-svg.js draw list -> SVG (live preview + click targets)
public/render-pdf.js draw list -> jsPDF (vector PDF export)
public/app.js state, editors, click-to-edit, tooltips, toasts, save/load
server.js static file server (no app logic)
Harness JSON
{
"schema": "adom.wire-harness/v1",
"meta": { "name": "Sensor Harness", "partNumber": "WH-1042", "revision": "A" },
"connectors": [ { "id": "J1", "type": "Deutsch DT06-4S", "pins": 4, "side": "left" } ],
"wires": [ { "id": "W1", "from": { "conn": "J1", "pin": 1 },
"to": { "conn": "TB1", "pin": 1 }, "gauge": "16", "color": "RD",
"signal": "+12V" } ],
"segments": [ { "a": "J1", "b": "TB1", "length": 780 } ],
"wraps": [ { "type": "Braided sleeve", "start": 40, "end": 300 } ]
}
samples/sensor-harness.json is the built-in starter (also the Sample button).
Drive API
For AI/CLI testing the app exposes window.harnessApp:
getModel(), setModel(m), exportPDF(), saveJSON(), pdfDataUrl(), toast(msg, type).
License
MIT.