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.

Download files

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

Source Distribution

kicad_libsync-0.1.0.tar.gz (24.9 kB view details)

Uploaded Source

Built Distribution

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

kicad_libsync-0.1.0-py3-none-any.whl (30.8 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: kicad_libsync-0.1.0.tar.gz
  • Upload date:
  • Size: 24.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for kicad_libsync-0.1.0.tar.gz
Algorithm Hash digest
SHA256 9ac46319773666c7183e4140565c43ef13226a4a76f9059b560bc58993b3b49f
MD5 6d78be631099a607e91d170eee0d3d1b
BLAKE2b-256 7591daa19df3f8e68ed59bac265f14be2cdc1451a2a5681a1e7226945fbd919b

See more details on using hashes here.

Provenance

The following attestation bundles were made for kicad_libsync-0.1.0.tar.gz:

Publisher: release.yml on lognd/kicad-libsync

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

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

File metadata

  • Download URL: kicad_libsync-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 30.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for kicad_libsync-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 184b4ac23b5274488d43b40040c1047a4f372e500da3173cbd9d38a141ea8763
MD5 f75117302fd01582a1746ab63205e91b
BLAKE2b-256 e7e8cb9b735908030020dce22920623c64b89745d59144e8cde2b67d0991b71f

See more details on using hashes here.

Provenance

The following attestation bundles were made for kicad_libsync-0.1.0-py3-none-any.whl:

Publisher: release.yml on lognd/kicad-libsync

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 files

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