Skip to the content
2 layers16 × 8 mmChannel, the printed circuit board in 3D

PCB automation in Python, for engineers and AI agents.

Size
16 × 8 mm
Copper layers
2
Thickness
1.6 mm
Parts
3
Nets
3
Pads
6
Tracks, vias
6, 0
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
30 Sep 2026
Updated
7 Nov 2026

Overview

Channel is an open-source printed circuit board by lgili, from the lgili/Fenolite repository on GitHub, published under the Apache-2.0 licence. It is a 2-layer board of 16 × 8 mm with 3 parts on 3 nets, routed with 6 tracks and 0 vias.

Its parts include 1 capacitor, 1 resistor and 1 diode.

README

README.md

Fenolite

PCB automation in Python, for engineers and AI agents.

Create PCB projects from code, inspect KiCad and Altium files, and review designs in your browser. Use the Python library or a CLI with structured JSON results, explicit write plans and conversion loss reports.

PyPI version CI on main Python 3.11+ Apache 2.0

Get started · Documentation · Examples · What's in 0.5 · Get help

Fenolite's browser viewer showing the authored routed Blink board, copper layers and project navigation.

Actual Fenolite viewer, using a small example authored for this project. No KiCad or Altium installation is needed to view it.

Install

Requires Python 3.11+. It installs no other package. Heavier features are optional extras.

bash
python -m pip install fenolite
fenolite capabilities --brief --json
fenolite init blink --confirm --json
fenolite build blink/design.py --out blink/build --confirm --json
fenolite view blink/build --serve

Open the local address printed by the viewer. You now have a PCB and a schematic built from blink/design.py, using the built-in component catalog. No external CAD libraries are needed. These commands create a new blink folder; use a fresh location.

This starter is a header, resistor and LED. It is an educational example; choose parts, ratings, placement and rules for your own circuit before manufacturing. For reviewed write plans, a standalone HTML export and routing, follow the quickstart.

Three ways to use Fenolite

Review a design in your browser

Open a KiCad or Altium project, board, schematic or library. Explore layers, highlight nets, measure geometry and navigate between documents. Export a standalone HTML page for review.

bash
fenolite view board.kicad_pcb --serve
fenolite view Project.PrjPcb --export review.html --confirm --json

Animated Fenolite viewer demonstration: board selection and cross-probing to the matching schematic.

The animation uses Fenolite's authored Altium Blink fixture. See the viewer guide for supported items, 3D prerequisites and rendering limits.

Build from Python

Define components, connections, placement and copper in a versioned source file. Build a project that can also be opened in its CAD editor. Preserve board edits on rebuild and sync placements back to source.

python
from fenolite.dsl import Design, Net, Part, connect, mm

design = Design("led")
design.board(mm(30), mm(20))
r1 = Part("R1", "Fenolite:Resistor", footprint="Fenolite:Chip_0603", value="330")
d1 = Part("D1", "Fenolite:LED", footprint="Fenolite:Chip_0603", value="LED")
design.add(r1, d1)
connect(Net("LED_A"), r1[2], d1[1])
r1.place(mm(10), mm(10))
d1.place(mm(20), mm(10))

This small fragment illustrates the DSL, not a complete powered circuit. Start with the complete starter tutorial, then explore authored examples and the Python DSL.

KiCad's CLI provides ERC, DRC, zone fills and fabrication exports. Production routing uses an external router or copper declared in the script. The built-in direct router is for simple demonstrations.

Convert and compare projects

Convert between KiCad and Altium, or write a KiCad 10 project for KiCad 9. Review what was kept, changed or lost, with a readback comparison against the source.

bash
fenolite convert board.PcbDoc --to kicad --out converted --dry-run --json
fenolite equivalent before.kicad_pcb after.kicad_pcb --level 5 --json

Conversions and Altium writes are experimental in 0.7. Lossy conversion requires explicit consent. Support depends on the constructs in the input; review the report and the resulting design. Read the conversion guide.

For AI agents

The same commands return structured JSON, typed errors, evidence labels and file receipts. A write can be previewed with --dry-run, then confirmed using its --plan identifier.

bash
fenolite guide start --text
fenolite skill install --help

The package includes an agent guide and board-design practice pages. Agents can inspect parts, query nets and geometry, build, route, check and export using the same CLI as an engineer. See the agent guide and CLI contract.

Full build → fabrication command loop (requires KiCad CLI)

Use a fresh folder for this complete loop. The first six lines need no external CAD tool; fill, check, export and render require KiCad's CLI. The direct router is a demonstration router.

fenolite-loop
fenolite capabilities --brief --json
fenolite init blink --confirm --json
fenolite build blink/design.py --out blink/build --dry-run --json
fenolite build blink/design.py --out blink/build --confirm --json
fenolite place blink/build --strategy grid --confirm --json
fenolite route blink/build --router direct --confirm --json
fenolite fill blink/build --confirm --json
fenolite check blink/build --json
fenolite export blink/build -o blink/fab --all --manifest --confirm --json
fenolite render blink/build -o blink/views --svg --png --confirm --json

For fabrication exports, BOM and placement tables, see exports and assembly.

Support at a glance

Status: version 0.7. Python scripts build KiCad 9/10 PCB and schematic projects. The agent loop uses KiCad's ERC/DRC checks, the board engineering analyses and an MCP server; conversion supports KiCad/Altium and the older KiCad major. Altium writes, computed Altium pours and conversions are experimental. See the release scope and limits.

WorkflowWhat you needStatus in 0.7
Build the starter; inspect and view supported filesPython 3.11+, browser for the viewerShipped; format-specific rendering limits apply
KiCad project generationPython; KiCad 9 or 10 to open in the editorShipped
KiCad ERC, DRC, fill and fabrication exportkicad-cli 9 or 10Shipped; engineering review still required
External routingA supported router and its prerequisitesFreerouting and KiCadRoutingTools integrations
KiCad/Altium conversion and KiCad downgradeRequirements vary by directionExperimental; explicit loss report
Altium project generationPython; Altium for native validationExperimental

Linux, macOS and Windows are supported. Optional extras include geo for polygon operations and kicad-ipc for a live KiCad session. Since 0.6 the package includes the stdlib-only MCP server (fenolite mcp), script editing and image replies described in the MCP documentation. See installation and prerequisites.

The viewer, conversion, board panels, slots and review tools ship since 0.5; 0.6 adds the MCP server, the board engineering tools (analyses, tidy, reuse, silkscreen, test points, DRC gates) and the Python API. 0.7 carries Altium boards through KiCad and back (rules, classes, planes, unions, fonts, computed pours), still experimental. Native Draftsman writing and Embedded Board Arrays remain gated. Detailed scope and deferred checks are in the release record.

Help and contribute

Trying Fenolite on a public or self-authored example? Tell us what worked and where you got stuck. Ask a question or report a bug, including the version, command and error output. Keep private designs and personal paths out of public reports.

For development, clone the repository, run uv sync --extra dev and read CONTRIBUTING.md.

License

Apache-2.0. Format knowledge comes from public sources under the project's clean-room rules. Results carry evidence labels; detailed claims live in the evidence matrix.

Fenolite is Portuguese for phenolic board material, the laminate many of us etched our first boards on.

Parts

3
QtyValueFootprintReferences
1100nFenolite:Chip_0805C1
11kFenolite:Chip_0603R1
1greenFenolite:LED0603_Kingbright_APT1608SURCKD1

Similar boards

  • 2 layers40 × 30 mmBlinky, the printed circuit board in 3D

    Blinky

    earthtojake/text-to-cad

    Design physical products with AI

    3 parts26kMIT
  • 2 layers51.9 × 16 mmPassive2-rpi non standard adapter, the printed circuit board in 3D

    Passive2-rpi non standard adapter

    hzeller/rpi-rgb-led-matrix

    Controlling up to three chains of 64x64, 32x32, 16x32 or similar RGB LED displays using Raspberry Pi GPIO

    3 parts4.4kGPL-2.0
  • 2 layers16.3 × 16.3 mmSensor, the printed circuit board in 3D

    Sensor

    scottbez1/splitflap

    DIY split-flap display

    3 parts4.2k
  • 2 layersSub, the printed circuit board in 3D

    Sub

    atopile/atopile

    Design circuit boards with code! ✨ Get software-like design reuse 🚀, validation, version control and collaboration in hardware; starting with electronics ⚡️

    3 parts4kMIT
  • 2 layers85 × 30 mmDual stomp, the printed circuit board in 3D

    Dual stomp

    torvalds/GuitarPedal

    Linus learns analog circuits

    3 parts2.5kGPL-2.0
  • 2 layers124.5 × 33.7 mm172319-1 connector, the printed circuit board in 3D

    172319-1 connector

    rusefi/rusefi

    rusefi - GPL internal combustion engine control unit

    3 parts1.2k
  • 2 layers10.5 × 83 mmProgrammingAdapter, the printed circuit board in 3D

    ProgrammingAdapter

    stuartpittaway/diyBMSv4

    Version 4 of the diyBMS

    3 parts1.1k
  • 2 layers21.2 × 51.3 mmPico reset, the printed circuit board in 3D

    Pico reset

    hackclub/sprig

    🍃 Learn to code by making games in a JavaScript web-based game editor.

    3 parts1.1kMIT

Questions

How big is the Channel PCB?

It measures 16 × 8 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Channel use?

3 parts. 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 Channel KiCad files?

From the lgili/Fenolite repository on GitHub, at the commit this page was made from: the board is examples/relative/channel.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.

Can I use the Channel design in my own project?

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