Skip to the content
PCBKitNew board
4 layers30 × 430 mmCandle, the printed circuit board in 3D

This folder contains the KiCad candle hardware artifact for the agent pipeline demo. The design target is the v5 modernized direction described in candlespecv5modernized.md: a tall, exposed LED stem inspired by the My…

Size
30 × 430 mm
Copper layers
4
Thickness
3 mm
Parts
272
Nets
46
Pads
634
Tracks, vias
1,060, 361
Pours
4
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
13 Apr 2026
Updated
6 May 2026

Overview

Candle is an open-source printed circuit board by unit117, from the unit117/butterflynet repository on GitHub, published under the MIT licence. It is a 4-layer board of 30 × 430 mm with 272 parts on 46 nets, routed with 1,060 tracks and 361 vias.

It is built around the ATTINY1616-MN. Its parts include 256 diodes, 8 capacitors, 3 ICs, 2 resistors and 2 connectors. It belongs with the AVR (ATmega, ATtiny) boards of this library.

Main components

1

README

hardware/candle/README.md

Candle

This folder contains the KiCad candle hardware artifact for the agent pipeline demo. The design target is the v5 modernized direction described in candle_spec_v5_modernized.md: a tall, exposed LED stem inspired by the My New Flame lamp, with the battery and charge electronics kept in a concealed base.

This is an auditable generated hardware snapshot, not a hand-polished consumer product release. It includes the KiCad source project, local footprints, generated docs, fabrication-format outputs, 3D assets, validation reports, and the automation scripts used to regenerate or inspect the board.

Reviewer quick start

  • Open candle.kicad_pro in KiCad to inspect the schematic and PCB.
  • Read outputs/docs/candle-schematic.pdf for the electrical architecture.
  • Read outputs/docs/candle-board-front.pdf and outputs/docs/candle-board-back.pdf for board plots.
  • Inspect outputs/candle.glb or outputs/candle.step for the 3D board model.
  • Inspect outputs/fabrication/candle-fabrication-bundle.zip for the exported Gerbers, drill files, BOM, placement CSV, and netlist.
  • Check outputs/candle-drc.json, outputs/candle-erc.json, and outputs/recovery/latest-report.md for validation state and recovery history.

Status and caveats

The demo UI shows the full agent pipeline, including a validation replay where agents iterate DRC fixes down to a clean board. This directory preserves the checked-in KiCad project snapshot and its generated export artifacts for review. That snapshot is useful for inspecting the real board structure and automation outputs, but it still has known validation issues listed below.

Do not send this board directly to fabrication as a production design without resolving the current ERC/DRC items and doing an electrical engineering review. The fabrication files are included to demonstrate the exporter and the expected manufacturing artifact shape.

Active design assets

  • candle.kicad_sch: architecture schematic for the base power path plus stem control/driver partition
  • candle.kicad_pcb: generated 430 x 30 mm stem board
  • candle.kicad_pro: lightweight KiCad project file written by the generator
  • candle.pretty/: local footprints for the blind-socket stem pads, compact matrix LEDs, and exposed service pads
  • tools/generate_candle.py: repeatable schematic + PCB generator
  • tools/canonicalize_pcb.py: deterministic .kicad_pcb canonicalizer for stable UUIDs and section ordering
  • tools/stabilize_candle.py: optional repeated-run sampler kept for audit and comparison work
  • tools/export_candle.py: repeatable docs/fabrication export helper
  • tools/candle_recovery.py: harness-driven PCB recovery wrapper that captures DRC snapshots, diffs, and crossing hotspots per iteration
  • tools/drc_hotspots.py: read-only DRC hotspot analyzer grouped by type, net pair, and coarse board region

Exported artifacts

  • outputs/docs/: schematic and board PDFs for quick review without opening KiCad
  • outputs/fabrication/gerbers/: copper, mask, silkscreen, outline, and job files
  • outputs/fabrication/drill/: plated, non-plated, and internal-layer drill files plus drill maps
  • outputs/fabrication/candle-assembly-bom.csv: generated assembly BOM
  • outputs/fabrication/candle-pos.csv: generated pick-and-place positions
  • outputs/fabrication/candle-assembly-notes.md: assembly notes and exclusions
  • outputs/fabrication/candle-fabrication-bundle.zip: bundled manufacturing export
  • outputs/candle.glb and outputs/candle.step: 3D board assets

Architecture captured here

  • Exposed stem PCB sized to the published 430 x 30 mm envelope
  • Dual flame fields with 8 x 16 warm-white LEDs per face
  • Stem MCU plus one matrix driver per face
  • 4 duplicated bottom power contacts for the concealed base socket
  • Base-side USB-C -> charger/power-path -> battery -> switch -> stem flow in the schematic

Regeneration

Quick iteration:

bash
PYTHONPATH="/Applications/KiCad/KiCad.app/Contents/Frameworks/python/site-packages" \
/Applications/KiCad/KiCad.app/Contents/Frameworks/Python.framework/Versions/3.9/bin/python3 \
  tools/generate_candle.py

generate_candle.py now canonicalizes the saved .kicad_pcb before DRC, so a fresh run produces one stable board file. The current source also reproduced the same board hash and the same 266-DRC result across 3/3 repeated stability runs.

Optional repeated-run sampling:

bash
PYTHONPATH="/Applications/KiCad/KiCad.app/Contents/Frameworks/python/site-packages" \
/Applications/KiCad/KiCad.app/Contents/Frameworks/Python.framework/Versions/3.9/bin/python3 \
  tools/stabilize_candle.py --runs 8

Export package

bash
python3 tools/export_candle.py

export_candle.py now uses the deterministic single-run generator by default. Use --stabilize-runs N only when you explicitly want sampling, or --skip-generate to export the current board as-is. The exporter snapshots the schematic and PCB into a temp directory before calling kicad-cli, which keeps PDF/netlist generation stable even while the project is being regenerated.

DRC hotspot analysis:

bash
python3 tools/drc_hotspots.py --top-groups 20

The analyzer reads outputs/candle-drc.json by default and prints stable hotspot rollups that are useful for routing recovery and cleanup passes.

Harness-driven recovery snapshot:

bash
python3 tools/candle_recovery.py run --label working --skip-generate
python3 tools/candle_recovery.py set-baseline --label baseline --skip-generate

This writes per-run reports under outputs/recovery/ using the repo's CLI-Anything KiCad harness for pcb drc, DRC diffing, and track-crossing grouping.

Current validation state

  • Schematic ERC: 91 violations
  • PCB DRC: 266 violations
  • PCB shorting items: 0
  • PCB unconnected items: 0
  • Board SHA256: 870a1c23718942aeb22cf7f075a202402b04271010dc7a0cb9bf8b06c47dc183

The current board is a generated first-pass implementation of the modernized stem with real matrix placement, routing structure, and exported KiCad assets. The remaining issues are concentrated in dense driver-fanout geometry, clearance/track-crossing cleanup, and schematic cleanliness rather than missing project scaffolding. The latest stabilize_candle.py --runs 3 sample reproduced the same 266 board in all three runs, which makes the snapshot stable enough for audit and replay work even though it is not production-clean.

Reference material

  • refs/source_documents.md: reconciled external facts and dimension sources
  • refs/provided_reference_render.png: visual composition reference
  • specs/candle_spec_deviations.md: intentional deviations from the active modernized build path
  • archive/: archived earlier specs and the superseded proof-of-concept project

Parts

272
QtyValueFootprintReferences
256WW_2700KCandle_LED_0603_MatrixD1, D10, D11, D100, D101, D102, D103, D104, D105, D106, D107, D108, D109, D110, D111, D112 +240
3100nC_0603_1608MetricC1, C3, C5
21uC_0603_1608MetricC7, C8
220kR_0603_1608MetricR1, R2
24.7uC_0805_2012MetricC2, C4
2IS31FL3731-QFQFN-28-1EP_4x4mm_P0.4mm_EP2.3x2.3mmU2, U3
110uC_0805_2012MetricC6
1ATtiny1616-MVQFN-20-1EP_3x3mm_P0.4mm_EP1.7x1.7mmU1
1PCB_BUTTONSW_Push_1P1T_NO_CK_KMR2SW1
1STEM_SOCKETCandle_StemSocket_4PadJ1
1UPDI_PADSCandle_ServicePads_1x3J2

Questions

How big is the Candle PCB?

It measures 30 × 430 mm and has 4 copper layers, 3 mm thick.

What parts does the Candle use?

272 parts, built around the ATTINY1616-MN. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the Candle KiCad files?

From the unit117/butterflynet repository on GitHub, at the commit this page was made from: the board is hardware/candle/candle.kicad_pcb and its schematic hardware/candle/.history/candle.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Candle design in my own project?

Its repository publishes it under the MIT licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).

Similar boards

  • 4 layers62.1 × 83.8 mmSs main board, the printed circuit board in 3D

    Ss main board

    loopj/short-stack

    World's Smallest Nintendo Wii, using a trimmed motherboard and custom stacked PCBs

    69 parts804
  • 2 layers80 × 50 mmSiliCa, the printed circuit board in 3D

    SiliCa

    19AJ137/SiliCa

    FeliCa®互換カード「SiliCa」

    14 parts47Unlicense
  • 4 layers100 × 68 mmDevKit, the printed circuit board in 3D

    DevKit

    kaminaris/GigaESC

    209 parts47
  • 2 layers56.9 × 23.6 mmHexagon, the printed circuit board in 3D

    Hexagon

    kieraneglin/hexagon-art

    A passive breakout board: two lever-terminal inputs, three JST XH outputs, all six conductors (RX bus, two spares, +12V, GND, +5V) paralleled straight across. No active components, no regulation, nothing to configure.

    24 parts19
  • 4 layers44.5 × 44.5 mmFlashlight, the printed circuit board in 3D

    Flashlight

    engineerbo/flashlight-dev-hw

    This repository contains design files for the development board for a flashlight boost driver. The test firmware can be found in the firmware repository.

    73 parts15MIT
  • 2 layers29 × 36 mmFlux Capacitor Micro Pin Badge, the printed circuit board in 3D

    Flux Capacitor Micro Pin Badge

    hojadurdy/Flux_Capacitor_Micro

    A tiny (36mm x 29mm) pin badge and keychain PCB version of Flux Capacitor featuring 25 animated LEDs that animate to create the “fluxxing” effect.

    48 parts6
  • 4 layers50.3 × 21.5 mmStormbreaker, the printed circuit board in 3D

    Stormbreaker

    VoxelTek/Stormbreaker

    PMS companion board for Thundervolt.

    49 parts4
  • 2 layers25.4 × 52 mmPiicoDev Radio, the printed circuit board in 3D

    PiicoDev Radio

    CoreElectronics/CE-PiicoDev-Transceiver-915-MHz

    CE PiicoDev Radio

    41 parts2