Trace GitHub

Cute traces.
Tidy boards.

Write the circuit as a few lines of text. CuTrace places the parts, routes the copper, checks DRC against the fab you actually order from, and writes Gerbers and KiCad. Your traces are parallel. Your DRC is clean.

blinky555 · 40×30 mm · 2 layersDRC clean
Ray-traced render of a 555 LED blinker board: an NE555 in SOIC-8, resistors, capacitors, an LED and a pin header on green soldermask with routed copper traces.
Rendered by CuTrace from blinky_555.cut below. Not a mockup.

A board is a text file

Every part has a ref, a footprint and a value. Every net lists every pin. Pin what matters and the solver places the rest around it. It diffs cleanly and lives in git beside your firmware.

# blinky_555.cut
board blinky555 40x30 2L
use psu.cut as PSU
part U1 SOIC8 NE555
part R1 R0805 4k7
part R2 R0805 10k
part C1 C0805 10u
part D1 LED0805 red
# …
N_TH L0 :: C1.2 <--> R2.2 <--> U1.2 <--> U1.6
VCC L0 w0.5 :: R1.1 <--> U1.4 <--> U1.8
fix PSU_J1 at 3 15
keep U1 near C1 3
power VCC GND
$ python -m apps.cutrace run --placer compact \
    --router maze boards/blinky_555.cut
blinky555: cost=282.1 segs=157 errors=0 warnings=0
  13 files + 15 renders → boards/out
  pdn (DC, 1oz): GND 0.0658Ω, VCC 0.071Ω
✓ DRC clean

# Gerbers, drill, BOM + CPL for assembly,
# .kicad_pcb, schematic SVG, glTF, STEP

From idea to order, in one loop

Every stage is a swappable plugin: placers, routers, DRC rules, exporters and simulators.

Checked against your fab

DRC profiles for JLCPCB, PCBWay, OSH Park, Seeed, Aisler, Eurocircuits and more. Price comparison across them with cutrace quote.

Keeps your KiCad

Import .kicad_pcb, Eagle, EasyEDA or tscircuit boards, and write .kicad_pcb back out. Specctra DSN for freerouting.

A studio to drag it into shape

Editor, PCB, schematic, 3D and DRC side by side. Drag a part and it stays put while everything else re-solves. Share a link to co-edit live.

Built for agents too

An MCP server exposes load, place, route, check, diff and export, so any MCP client can drive a board with undo on every edit.

Try it

Needs Python 3.14 and make. The blinky-555 template is a 555 LED blinker with a transient simulation that checks its own blink period.

$ git clone https://github.com/maci0/ocdcircuit cutrace
$ cd cutrace && make setup
$ .venv/bin/python -m apps.cutrace new demo --from blinky-555
$ .venv/bin/python -m apps.cutrace run demo/demo.cut
demo: cost=288.2 segs=103 errors=0 warnings=0
✓ DRC clean
$ .venv/bin/python -m apps.studio demo/demo.cut
# studio → http://localhost:8077

Where it stands

  • worksText to placed, routed, DRC-clean 1 to 32 layer boards; Gerbers, KiCad and assembly files; studio; MCP server.
  • pre-1.0Version 0.3. The .cut language, Python API and CLI may still change between minor releases.
  • source onlyNot on PyPI yet. Install from the repository as shown above.