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.13 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.1.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.1-py3-none-any.whl (40.0 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: circuitdk-0.1.1.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.1.tar.gz
Algorithm Hash digest
SHA256 d554be08741f903122aa36e34eaf84a573b3cec298308fd9bb6a99307af23e7f
MD5 6a3b71dddb7dfcc93358db9f4edfc860
BLAKE2b-256 a888a243c17c5cfa363473bb693984a8e0e1d0086ee7aa364405dd08f5559597

See more details on using hashes here.

File details

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

File metadata

  • Download URL: circuitdk-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 40.0 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.1-py3-none-any.whl
Algorithm Hash digest
SHA256 af5040684adb0c4536a1fd5cc7f164c507235cdd66e4413dd71a0ac400edd455
MD5 b7f170bbdbb49f770513a6aca0667e08
BLAKE2b-256 e1708a58346b0cbc45d26e073cb6169c271ca2b0b2acc2f844cc7caf7d684510

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