Rust CLI and crates to query and modify Altium files.
As of 2/24/26 this crate is in the middle of an unreleased massive rewrite for 0.2.0
These are complex file formats full of domain knowledge and decades of legacy cruft. I do my best to validate and test the CLI against thousands of real world files available on Github, but at the end of the day this software was built on millions of lines of vibe-reverse engineered Delphi and C# code so there WILL be subtle bugs.
This software is provided as-is without warranty. YOU area responsible for anything you send to the fab. Make sure your fab runs their own design rule checks.
- Although
altium-clisupports older file formats when reading, all mutations RESAVE THE FILE IN THE LATEST FORMAT (Altium/DXP 26 as of the time of this writing). If you are stuck on an older version of Altium, you may have problems opening the files afterwards. - Our implementation is more strict than Altium's because of ambiguity in the reverse engineered implementation.
- This is mostly developed as a tool for agents to use, so expect lots of breaking changes.
- Only supports CFB format Altium files. Legacy ASCII PcbDocs are not supported.
altium-format-types: domain types, enums, constantsaltium-format-derive: proc-macro derivesaltium-format: core parsers/serializers for Altium formatsaltium-format-ops: high-level operations and.opsexecutionaltium-cli: command-line interface
new {schdoc,schlib,pcblib,prjpcb} <output>— create blank Altium documentsvalidate <path>— validate Altium files (.SchLib, .PcbLib, .SchDoc, .PcbDoc, .PrjPcb, .IntLib)save-as <input> <output>— roundtrip parse and re-saverender <path> [-o dir] [--format svg|png]— render SchLib/PcbLib/SchDoc to SVG/PNGplan <spec>— preview changes (ECO dry run)apply <spec>— apply spec file to create/update Altium documentdump <document>— reverse-generate spec from Altium fileinfo <path>— document summaryquery <path> "<AQL>"— query with Altium Query Languageinspect <pcbdoc> {summary,components,nets,board-outline,rules}placement solve <spec> --target <pcbdoc>— component placement solvercfb ls|dump|blocks|diff|cat ...— CFB/OLE container inspection
IntLib (Integrated Library) files can be parsed and dumped to extract embedded schematic symbols and PCB footprints:
altium-cli validate vendor.IntLib # reports SchLib/PcbLib counts
altium-cli dump vendor.IntLib # produces vendor.schlib-spec + vendor.pcblib-spec- Gerber output
- Rendering parts, footprints, and documents to image/pdf
Apache-2.0