Skip to main content

kicad-libsync

Watch your Downloads folder and merge vendor KiCad library zips into the KiCad project you are working on -- footprints into <Lib>.pretty, symbols into <Lib>.kicad_sym, both registered in the project lib tables, with the symbol's Footprint property rewritten to <Lib>:<footprint> so KiCad actually resolves it.

Two vendor export layouts are recognized:

  • Ultra Librarian -- KiCADv6/ with a footprints.pretty/ directory next to the .kicad_sym.
  • SnapMagic -- .kicad_mod files flat at the zip root next to the .kicad_sym, with the footprint reference prefixed by the part name (the prefix is stripped on import).

Any other zip that lands in Downloads is logged at DEBUG and ignored.

Install

uv tool install kicad-libsync

Use

kicad-libsync watch --project <kicad-project-dir>   # poll Downloads, import new zips
kicad-libsync import --project . vendor-package.zip # import specific zips now
kicad-libsync status --project .                    # libraries, table entries, processed count
kicad-libsync remove --project . SOME_PART          # drop a symbol and its orphaned footprint

--project defaults to the current directory, so from inside the project kicad-libsync watch is usually enough.

Configuring the watcher

Settings layer: CLI flags > environment > ~/.config/kicad-libsync/config.toml > autodetection.

# ~/.config/kicad-libsync/config.toml
project      = "/path/to/your/kicad/project"
downloads    = "/path/to/your/Downloads"
lib_name     = "VendorParts"   # default: the .kicad_pro stem
poll_seconds = 2.0

Environment overrides: KICAD_LIBSYNC_PROJECT, KICAD_LIBSYNC_DOWNLOADS, KICAD_LIBSYNC_POLL (a .env in the working directory is loaded too).

Per-run flags for watch: --project, --downloads, --lib-name, --poll, --backfill (also import zips already sitting in Downloads at startup), --overwrite (replace same-named symbols/footprints instead of skipping them with a warning).

If downloads is not set anywhere, the tool looks for a single /mnt/c/Users/*/Downloads (WSL, excluding the Windows system accounts) and falls back to ~/Downloads. The folder it settled on is logged at INFO on every run.

Full reference, including the processed-state ledger and a troubleshooting table: docs/configuration.md.

Docs

Development

This is a frob-enabled project: frob <verb> is the interface, not a make wrapper around it.

uv sync
cp .env.example .env   # fill in real values; .env is gitignored

frob test         # select and run tests for the touched set (or --all)
frob format       # ruff check --fix + ruff format
frob coverage     # refresh coverage.xml / the coverage stamp
frob check        # the aggregate gate: ruff, ty, frob cycle/dup/arch/...

make install/make clean/make upload remain for bootstrap and build/publish -- see the Makefile.

Releasing

Tagging v<version> on main publishes to PyPI via GitHub Actions (.github/workflows/release.yml) using OIDC trusted publishing -- no API token is stored in this repo. The workflow refuses to publish if the tag does not match project.version in pyproject.toml.

make upload   # patch-bump pyproject.toml, commit, push, and push the v<version> tag

make upload only tags; the tag push is what publishes. For a minor or major bump, edit project.version in pyproject.toml by hand, commit, and push the matching tag yourself:

git commit -am "chore: bump version to 0.2.0"
git tag v0.2.0 && git push origin main v0.2.0

License

MIT -- see LICENSE.

Metadata

Release files for kicad-libsync 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for kicad-libsync 0.1.0
File Size Uploaded Provenance
kicad_libsync-0.1.0.tar.gz 24.9 kB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for kicad-libsync 0.1.0
File Interpreter ABI Platform
kicad_libsync-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 55.7 kB

Release files / kicad_libsync-0.1.0.tar.gz

Download URL kicad_libsync-0.1.0.tar.gz
Size 24.9 kB
Tags Source
SHA-256 checksum
How to use checksums
9ac46319773666c7183e4140565c43ef13226a4a76f9059b560bc58993b3b49f
BLAKE2b-256 checksum
How to use checksums
7591daa19df3f8e68ed59bac265f14be2cdc1451a2a5681a1e7226945fbd919b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 7, 2026.

Transparency log

Release files / kicad_libsync-0.1.0-py3-none-any.whl

Download URL kicad_libsync-0.1.0-py3-none-any.whl
Size 30.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
184b4ac23b5274488d43b40040c1047a4f372e500da3173cbd9d38a141ea8763
BLAKE2b-256 checksum
How to use checksums
e7e8cb9b735908030020dce22920623c64b89745d59144e8cde2b67d0991b71f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 7, 2026.

Transparency log

Security for kicad-libsync 0.1.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for kicad_libsync-0.1.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 7, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files Full provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page