Expand description
§kiutils-rs
Pure-Rust, lossless KiCad S-expression document API for agent workflows. Designed for parse -> typed edit -> write with minimal diff noise and explicit forward-compat surfaces.
§Why this crate (for AI agents and automation)
| Capability | kiutils-rs | Python kiutils | KicadModTree | KiCad IPC Rust API (kicad-api-rs-official) |
|---|---|---|---|---|
| File round-trip target | First-class (WriteMode::Lossless) | SCM-friendly goal, with known round-trip caveats in docs | Generator-centric (creates footprints; not general file parser API) | Runtime IPC API (different problem) |
| Unknown/future syntax | Exposed as typed unknown carriers (UnknownNode, UnknownField) | Known issues document format/ordering caveats in some cases | Focused on scripted footprint construction | N/A for S-expression file editing |
| Architecture for tooling | 3 layers (kiutils-sexpr -> kiutils-kicad -> kiutils-rs) | Single Python package/dataclass stack | Tree-based node generator framework | IPC client binding |
| Public tests/docs signal | Integration tests assert byte-equal lossless writes across formats | Project tests exist; changelog tracks format fixes over time | README/docs emphasize footprint generation workflows | README states docs are not yet available |
Source evidence:
- This workspace architecture: https://github.com/Milind220/kiutils-rs/blob/main/README.md
- Lossless/unknown round-trip tests: https://github.com/Milind220/kiutils-rs/blob/main/crates/kiutils_kicad/tests/integration.rs
- Python
kiutilsknown issues: https://github.com/mvnmgrx/kiutils/blob/master/docs/misc/known-issues.rst - Python
kiutilschangelog: https://github.com/mvnmgrx/kiutils/blob/master/CHANGELOG.md KicadModTreerepository README: https://github.com/pointhi/kicad-footprint-generator/blob/master/README.md- Official KiCad Rust IPC README: https://github.com/Milind220/kicad-api-rs-official/blob/main/README.md
§V1 API scope
.kicad_pcb.kicad_modfp-lib-tablesym-lib-table.kicad_dru.kicad_pro
Compatibility target:
- Primary: KiCad v10
- Secondary: KiCad v9
§Quickstart
use kiutils_rs::{PcbFile, WriteMode};
fn main() -> Result<(), Box<dyn std::error::Error>> {
let mut doc = PcbFile::read("input.kicad_pcb")?;
doc.set_generator("kiutils-rs-agent")
.set_generator_version("0.1.0")
.upsert_property("Owner", "EDA-Agent");
doc.write_mode("output.kicad_pcb", WriteMode::Lossless)?;
Ok(())
}Crate package name: kiutils-rs
Rust import path: kiutils_rs
Structs§
- Design
Rule Summary - Design-rules (
.kicad_dru) APIs. - Design
Rules Ast - Design-rules (
.kicad_dru) APIs. - Design
Rules Document - Design-rules (
.kicad_dru) APIs. - Design
Rules File - Design-rules (
.kicad_dru) APIs. - Diagnostic
- Diagnostics, errors, and write behavior controls.
- Footprint
Ast - Footprint (
.kicad_mod) APIs. - Footprint
Document - Footprint (
.kicad_mod) APIs. - Footprint
File - Footprint (
.kicad_mod) APIs. - FpLib
Table File - Library table (
fp-lib-table,sym-lib-table) APIs. - PcbArc
Summary - PCB (
.kicad_pcb) APIs. - PcbAst
- PCB (
.kicad_pcb) APIs. - PcbDimension
Summary - PCB (
.kicad_pcb) APIs. - PcbDocument
- PCB (
.kicad_pcb) APIs. - PcbFile
- PCB (
.kicad_pcb) APIs. - PcbFootprint
Summary - PCB (
.kicad_pcb) APIs. - PcbGenerated
Summary - PCB (
.kicad_pcb) APIs. - PcbGraphic
Summary - PCB (
.kicad_pcb) APIs. - PcbGroup
Summary - PCB (
.kicad_pcb) APIs. - PcbLayer
- PCB (
.kicad_pcb) APIs. - PcbNet
- PCB (
.kicad_pcb) APIs. - PcbProperty
- PCB (
.kicad_pcb) APIs. - PcbSegment
Summary - PCB (
.kicad_pcb) APIs. - PcbSetup
Summary - PCB (
.kicad_pcb) APIs. - PcbTarget
Summary - PCB (
.kicad_pcb) APIs. - PcbVia
Summary - PCB (
.kicad_pcb) APIs. - PcbZone
Summary - PCB (
.kicad_pcb) APIs. - Project
Ast - Project (
.kicad_pro) APIs. - Project
Document - Project (
.kicad_pro) APIs. - Project
File - Project (
.kicad_pro) APIs. - Span
- Diagnostics, errors, and write behavior controls.
- SymLib
Table File - Library table (
fp-lib-table,sym-lib-table) APIs. - Unknown
Field - Diagnostics, errors, and write behavior controls.
- Unknown
Node - Diagnostics, errors, and write behavior controls.
- Version
Policy - Diagnostics, errors, and write behavior controls.
Enums§
- Error
- Diagnostics, errors, and write behavior controls.
- KiCad
Series - Diagnostics, errors, and write behavior controls.
- Severity
- Diagnostics, errors, and write behavior controls.
- Write
Mode - Diagnostics, errors, and write behavior controls.
Type Aliases§
- FpLib
Table Ast - Library table (
fp-lib-table,sym-lib-table) APIs. - FpLib
Table Document - Library table (
fp-lib-table,sym-lib-table) APIs. - Project
Extra - Project (
.kicad_pro) APIs. - SymLib
Table Ast - Library table (
fp-lib-table,sym-lib-table) APIs. - SymLib
Table Document - Library table (
fp-lib-table,sym-lib-table) APIs.