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 afootprints.pretty/directory next to the.kicad_sym. - SnapMagic --
.kicad_modfiles 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)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| kicad_libsync-0.1.0.tar.gz | 24.9 kB | With provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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 logRelease 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 logSecurity 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.
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 logA 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.