kitium: An Altium-to-KiCad Validation Gate for CI

View on GitHub

Table of contents

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

  1. Find the Altium project — .PrjPcb / .PcbDoc, including multi-board setups.
  2. Convert each board headlessly with kicad-cli pcb import --format altium.
  3. Push it through KiBot: DRC, gerbers, 2D and 3D renders, visual comparisons.
  4. Cross-check the board’s BOM against an exported Altium CSV.
  5. 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:

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