Skip to the content
PCBKitNew board
2 layers40 × 28 mmFirst light, the printed circuit board in 3D

First light

epim/circsim

Post-routed PCB+Schematic circuit simulator. Because I have trust issues.

Size
40 × 28 mm
Copper layers
2
Thickness
1.6 mm
Parts
2
Nets
3
Pads
4
Tracks, vias
1, 0
Routed
Yes
KiCad
KiCad 7 (file 20221018)
Created
17 Jun 2026
Updated
3 Oct 2026

Overview

First light is an open-source printed circuit board by epim, from the epim/circsim repository on GitHub, published under the MIT licence. It is a 2-layer board of 40 × 28 mm with 2 parts on 3 nets, routed with 1 track and 0 vias.

Its parts include 1 resistor and 1 diode.

README

README.md

circsim

Simulate and audit any routed KiCad board. circsim is a desktop app (Windows / macOS / Linux) that opens a routed KiCad board (.kicad_pcb), rebuilds the circuit from the copper, renders it in 3D, and runs an interactive SPICE bench on it: apply power, turn a knob, probe nets on the physical board. A read-only Board Critic audits the layout for fabrication risks. You get both before you pay for fabrication.

Open the board and press Energize. You do not assign Sim.* fields first, and the bundled model library matches parts by part number, value, and footprint, flagging the ones it cannot match instead of guessing. circsim is fully offline, MIT-licensed, and never modifies your design files.

Documentation: epim.github.io/circsim. It has the install guide, the First Light tutorial, task how-tos, and the full reference. Download: latest release (Windows .exe, macOS .dmg x2, Linux .AppImage / .deb).

circsim with the First Light board energized: the LED glowing red on the 3D board, a supply lead clipped to the copper, the bench shelf with a 5 V PSU panel, and the read-only Board Critic on the right.

A short recording of circsim opening the bundled 555 sample, energizing it, and listing Board Critic findings.

More screenshots, and what circsim reads out of sixteen KiCad-written boards from KiCad 6 through 10, are in the gallery.

What it does

  • Starts from the routed board. Net connectivity comes straight out of the .kicad_pcb, KiCad 6 to 10. The board can come from your own KiCad project, a contractor, or an autorouter such as Quilter that returns a KiCad board; circsim has no Quilter-specific code. The supported files page lists the KiCad-written boards behind the version range, including the one it rejects.
  • The schematic is an optional input. Keep the .kicad_sch next to the board with the same name and circsim attaches it on open. Its Sim.* fields are the first model source and its pin names settle diode and LED polarity. Only the root sheet is read, so parts on hierarchical sub-sheets get neither. A BOM CSV pins down exact parts.
  • A real bench. Clip a DC supply, function generator, potentiometer, logic input, and voltage/current probes onto the board by drawing leads from front-panel jacks to the copper. Turn a knob and the simulation re-solves live.
  • A read-only Board Critic on the layout. It audits the board circsim did not design for floating nets, clearance, decoupling distance, loop area, IR-drop, ampacity, and thermal risk, and never edits your files. The simulation itself treats each net as one ideal node, so copper resistance appears in the Critic's estimates and not in the simulated voltages.
  • Honest about what it knows. Behavioral vs. primitive models, stubbed ICs, MCUs as interactive-pin panels (firmware doesn't run), convergence fallbacks, and fidelity limits are always visible. See what circsim can and can't tell you. The same page ships inside the app.

Powered by ngspice 46, bundled per platform and run crash-isolated in a separate process. Nothing to install; no network calls, ever, and the app enforces it by cancelling any request that is not a local file.

Develop

sh
npm install
npm run fetch:ngspice   # download the bundled SPICE engine for your platform
npm run dev             # run the app in dev mode
npm test                # vitest unit + integration suite
npm run typecheck       # tsconfig.node.json + tsconfig.web.json (what CI runs)
npm run test:e2e        # Playwright E2E (requires npm run build first)
npm run build           # build the app
npm run package         # produce installers for the current platform

Architecture: Electron + TypeScript + React (panels) + imperative Three.js/WebGL2 (3D viewport) + zustand (state). The framework-free src/core/ layer (KiCad parsing, netlist extraction, model resolution, SPICE-deck generation, the Board Critic) is fully unit-tested without Electron. See the architecture reference.

Documentation source

The docs site is a VitePress project under website/, deployed to GitHub Pages by .github/workflows/docs.yml on every push touching website/. To work on it:

sh
cd website && npm install && npm run docs:dev

The page the app opens from its About dialog and fidelity banner is rendered from website/docs/concepts/fidelity.md. After editing that page, run npm run docs:fidelity and commit the regenerated docs/what-circsim-can-tell-you.html; a unit test fails when the two drift.

License

MIT. circsim bundles ngspice (BSD-style) and an in-house SPICE model library written from datasheet parameters; it never bundles vendor SPICE models or KiCad's share-alike 3D assets. See docs/licensing.md and the in-app About dialog for full provenance.

Parts

2
QtyValueFootprintReferences
1330Resistor_SMD:R_0805_2012MetricR1
1LEDLED_SMD:LED_0805_2012MetricD1

Questions

How big is the First light PCB?

It measures 40 × 28 mm and has 2 copper layers, 1.6 mm thick.

What parts does the First light use?

2 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 First light KiCad files?

From the epim/circsim repository on GitHub, at the commit this page was made from: the board is resources/sample/first-light.kicad_pcb and its schematic fixtures/fixture-555.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the First light 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).

More from epim/circsim

2
  • 2 layers100 × 70 mmSensor node, the printed circuit board in 3D

    Sensor node

    epim/circsim

    Post-routed PCB+Schematic circuit simulator. Because I have trust issues.

    94 partsMIT
  • 2 layers60 × 45 mmBlinker-555, the printed circuit board in 3D

    Blinker-555

    epim/circsim

    Post-routed PCB+Schematic circuit simulator. Because I have trust issues.

    7 partsMIT

Similar boards

  • 2 layers37 × 19 mmPassive rpi hub75-adapter, the printed circuit board in 3D

    Passive rpi hub75-adapter

    hzeller/rpi-rgb-led-matrix

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

    2 parts4.4kGPL-2.0
  • 2 layersDiode template, the printed circuit board in 3D

    Diode template

    adamws/kicad-kbplacer

    KiCad plugin for automatic keyboard's key placement and routing

    2 parts547GPL-3.0
  • 2 layers20.3 × 15.2 mmL0 button, the printed circuit board in 3D

    L0 button

    Luos-io/luos_engine

    Open-source and real-time orchestrator for cyber-physical-systems, to easily design, test and deploy embedded applications and digital twins.

    2 parts546MIT
  • 2 layers35.1 × 46.8 mmSDEX2M2 Breakout Board, the printed circuit board in 3D

    SDEX2M2 Breakout Board

    NVNTLabs/switch2-SDEX2M2

    Micro SD Express to M.2 NVME Adapter for Nintendo Switch 2

    2 parts542GPL-3.0
  • 2 layers59.3 × 36.6 mmExpansionBoardTemplate, the printed circuit board in 3D

    ExpansionBoardTemplate

    BlueSCSI/BlueSCSI-v2

    BlueSCSI v2/Ultra - an open source, open hardware, SCSI emulator using the Pi Pico PR2040 and Pico 2 RP2350

    2 parts459GPL-3.0
  • 2 layersAlpha.9mm.wire, the printed circuit board in 3D

    Alpha.9mm.wire

    ohmtech-rdi/eurorack-blocks

    Software to Hardware Prototyping for Eurorack using C++, Max/Gen~ or Faust

    2 parts410
  • 2 layers26.7 × 64 mmGpu power, the printed circuit board in 3D

    Gpu power

    dennisss/dacha

    Monorepo for awesome tools/projects/libraries

    2 parts397Apache-2.0