Skip to main content

CircuitDK

CircuitDK brings infrastructure-as-code-style workflows to KiCad 10 schematics. Define parts, properties, intended connectivity, and reusable circuit intent in Python while keeping placement, wiring, labels, and presentation editable in KiCad.

Install

Install the command from PyPI with uv:

uv tool install circuitdk
circuitdk --version

CircuitDK requires Python 3.11 or later and kicad-cli from KiCad 10. Set CIRCUITDK_KICAD_CLI if the executable is not in a standard location.

Minimal example

Create and save an empty KiCad 10 schematic at hardware/blinky.kicad_sch, then define an LED circuit in circuit.py:

from circuitdk import Circuit, KicadProject, Part, V, kohm

circuit = Circuit("Blinky")
vdd = circuit.power("VDD", voltage=5 * V)
gnd = circuit.ground("GND")

power = Part(
    circuit,
    "PowerInput",
    symbol="Connector_Generic:Conn_01x02",
    footprint="Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical",
    pin_overrides={"VDD": "1", "GND": "2"},
)
resistor = Part(circuit, "LedResistor", symbol="Device:R", value=1 * kohm)
led = Part(circuit, "Led", symbol="Device:LED")

vdd.connect(power.pin("VDD"), resistor.pin("1"))
circuit.connect(resistor.pin("2"), led.pin("A"))
gnd.connect(led.pin("K"), power.pin("GND"))

resistor.footprint = "Resistor_SMD:R_0603_1608Metric"
led.footprint = "LED_SMD:LED_0603_1608Metric"

project = KicadProject(circuit, "hardware/blinky.kicad_sch")

Point circuitdk.toml at the module-level project:

[project]
entrypoint = "circuit:project"
state_directory = ".circuitdk"

Preview and deploy the managed changes, arrange and wire the symbols in KiCad, then verify the result:

circuitdk diff
circuitdk deploy
circuitdk test

Deploy preserves KiCad-owned placement and wire geometry. Missing manual wiring is reported separately from apply failures, so it is clear whether the file update succeeded.

Documentation

Alpha status

CircuitDK is an alpha release. It targets KiCad 10, manages flat schematics, and leaves wire routing to a person or external layout automation. Review diffs and keep the schematic under version control. CircuitDK validates declared structure and KiCad ERC results, but it does not prove electrical correctness or manufacturing suitability.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

circuitdk-0.1.2.tar.gz (31.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

circuitdk-0.1.2-py3-none-any.whl (40.1 kB view details)

Uploaded Python 3

File details

Details for the file circuitdk-0.1.2.tar.gz.

File metadata

  • Download URL: circuitdk-0.1.2.tar.gz
  • Upload date:
  • Size: 31.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for circuitdk-0.1.2.tar.gz
Algorithm Hash digest
SHA256 8c7001dd94c840ee09100c2f2bafce6eb7e77c3ac393234eab010a7548527bec
MD5 8bccbabd2b9e1b1492bbb9144c264941
BLAKE2b-256 242f35e1c995f548e9eea873ecd97c3062c9a0c32d46518f6fec6e3ff1470f33

See more details on using hashes here.

File details

Details for the file circuitdk-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: circuitdk-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 40.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for circuitdk-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 c28bd8981bab4550b6614baf568ce4bf8fa44094c9197a6eee57701b40118107
MD5 217455ff5a99df86b3e49275bf5afe28
BLAKE2b-256 dafc151f470bc23d90504681dd50afe90436e1b0c6f24d2b1728cc8df5ddcce6

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page