copperheadGitHub
Product

Meet copperhead

An open source AI agent that designs, documents, and verifies real PCBs from a prompt, working on your KiCad files inside your own repository.

copperhead is an open source AI agent for hardware design. You give it a brief or a change request in plain English. It edits your real KiCad files, updates every document that references them, and runs KiCad’s own checks until they pass.

It is not a chatbot that describes a circuit to you. It is a loop that leaves artifacts on disk: a schematic, a board, gerbers, a bill of materials, a firmware scaffold, and a bring-up plan. All of it inside the git repository you already have.

Two ways to use it

Iterate on a design that exists. This is the common case. You ask for one thing and the agent handles the fan-out:

copperhead do "move the key input to a different RTC-capable pin"

It consults the MCU strapping table it has in memory, picks an RTC-capable pin that is not a strapping pin, edits the schematic, updates the pinout and subsystem docs to match, runs ERC until it is clean, and commits with the reasoning attached.

Start from nothing. Hand it a product brief and it runs the full pipeline: specification with every assumption flagged, architecture, part selection, schematic, draft layout, gerbers and renders, firmware scaffold, dev plan. Every stage is gated by validation tooling before the next one begins.

copperhead create --brief brief.md

What it actually produces

Artifact State it lands in
Schematic ERC-clean .kicad_sch
Board DRC-clean first-draft .kicad_pcb, honestly labeled
Gerbers and drill Ready for JLC or PCBWay
Outline DXF and STEP for the enclosure
Renders Schematic and board SVGs
BOM Orderable, with part numbers and the reason behind every pick
Firmware A scaffold that compiles, with pins generated from the design
Dev plan Bring-up steps, test points, what to meter first

The draft layout is correct, not optimal, and it says so itself. LAYOUT.md lists exactly what is solid and what a specialist should redo before fabrication. Non-optimal is acceptable. Unlabeled non-optimal is not.

Where it runs

A Node.js CLI on your machine, against your repository, with your own API key. The agent is model-agnostic: GPT-5 and Claude are both tested against the same integration suite. Design data never leaves your repo except as part of the model call itself, and run transcripts stay local in .copperhead/runs/ with secret patterns redacted.

It is Apache-2.0. Everything it writes is plain markdown, JSON, and KiCad source. There is no proprietary format to get stuck in.

Proof

Open Telegraph is a pocket-size Morse key: an ESP32-S3, one button, one RGB LED, and a battery, living inside a 25 microamp sleep budget. It was designed with this workflow, and every decision, every trap the agent caught, and every file is public.

The next post covers the problem this exists to solve, and after that, how the loop keeps itself honest.