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.0.tar.gz (30.5 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.0-py3-none-any.whl (39.2 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: circuitdk-0.1.0.tar.gz
  • Upload date:
  • Size: 30.5 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.0.tar.gz
Algorithm Hash digest
SHA256 c0ac2a44800abd7b3a09b95f27df5fed18cfad02b083c6a0bcf10d7e8e6965b8
MD5 35287d7a87b0412f99309b7fda5eee7d
BLAKE2b-256 4330cc0c3b8039cfdf67ef4eaa512191a29e18e546ee8b372c84b251c3de2a42

See more details on using hashes here.

File details

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

File metadata

  • Download URL: circuitdk-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 39.2 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.0-py3-none-any.whl
Algorithm Hash digest
SHA256 99c52f738e8fc14c80666ae833349c67c9209ef3c2e4b8e78eb213ec2763ceb5
MD5 ddf7b70b8a58a3d07fda2d2809e8e31c
BLAKE2b-256 43fd6b59cbd768940505d4e1bc45daf9b776bfc1069b6866fbaeb7e7eaa554af

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