kitium: An Altium-to-KiCad Validation Gate for CI
Simon Maddison / July 2026 (368 Words, 3 Minutes)
Table of contents
- Overview
- Don’t migrate, re-derive
- What runs on every PR
- What I’ll say works, and what I won’t
- Dropping it into a repo
Overview
Plenty of hardware teams live in Altium and aren’t going to stop. But KiCad’s toolchain is free, headless and scriptable in a way Altium’s isn’t, which makes it a genuinely good reviewer even when it’s a bad fit as the editor. Cimos/kitium sits in that gap: a CI/CD gate that converts an Altium project to KiCad and validates it on every pull request. MIT-licensed.
The name is Ki(Cad) welded to (Al)tium, with a nod to Zeno of Citium — founder of Stoicism, which is about the right temperament for something that reviews your board dispassionately and has no feelings about your routing.
Don’t migrate, re-derive
The instinct when you want KiCad’s tooling is to migrate the project. That’s a one-way door and a merge-conflict nightmare on a board that’s still changing.
kitium takes the other path: Altium stays the single source of truth, and the KiCad files are re-derived from it on every run and then thrown away. Nothing generated is committed back. The KiCad project is a disposable artefact whose only job is to be inspected — so there’s never a second copy to keep in sync, and never a question about which one is real.
What runs on every PR
- Find the Altium project —
.PrjPcb/.PcbDoc, including multi-board setups. - Convert each board headlessly with
kicad-cli pcb import --format altium. - Push it through KiBot: DRC, gerbers, 2D and 3D renders, visual comparisons.
- Cross-check the board’s BOM against an exported Altium CSV.
- Post the lot back onto the pull request — renders, diffs, downloadable artefacts.
What I’ll say works, and what I won’t
I’d rather scope this honestly than let a green badge imply more than it checks:
- Solid. PCB conversion, DRC, gerbers, renders. These are native headless operations and they hold up on real boards.
- Partial. The visual diff config is in place but the base-reference wiring isn’t finished. BOM validation leans on the Altium CSV cross-check — not by preference, but because a converted KiCad board simply doesn’t carry MPN and supplier metadata to check against, so the CSV is the only honest source.
- Not done. Schematic ERC. It needs fragile GUI automation to get the netlist out of Altium cleanly, so it stays a non-blocking stretch goal rather than a promise I quietly break.
Dropping it into a repo
It’s a Docker-based GitHub Action on the kicad/kicad:10 image with KiBot and the KiCad CLI, shipped as a pre-built GHCR container so it doesn’t rebuild the world on every run:
- uses: Cimos/kitium@v0.1.0
with:
project: hardware/MyBoard.PrjPcb
bom_csv: hardware/MyBoard_BOM.csv
drc: block # fail the gate; use "report" to only comment
github_token: $
It’s v0.1.0 — end-to-end PCB validation is proven on real Altium fixtures. If you run it against a board it chokes on, that’s the interesting case; an issue with the project is worth a lot.
-SM
Related
- 2026-07-01» An Interactive HTML BOM for Altium Designer
- 2026-07-01» Altium → DigiKey: BOM to Cart in One Command
- 2026-10-03» kicad-druid: Fab House Design Rules, Generated and Tested