Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Introduction

kicad-ipc-rs is a Rust client for KiCad’s IPC API.

Why this crate?

kicad-ipc-rs gives you programmatic control over KiCad with an ergonomic, type-safe Rust API. Whether you’re building automation tools, integrating KiCad into CI/CD pipelines, or creating custom workflows, this crate provides the most complete and well-documented interface to KiCad’s API.

Key Features

  • 100% API Coverage: All 59 KiCad v10.0.1 API commands implemented
  • Type-Safe Models: Native Rust structs for tracks, vias, footprints, nets, and more
  • Dual API: Async-first design with full synchronous support via blocking feature
  • Zero Protobuf Hassle: Pre-generated types — no KiCad source checkout needed
  • Field-Used: Applied in automation and integration workflows

API Comparison

Capabilitykicad-ipc-rsPython bindingsOfficial Rust
Rust-native API✅ Production-ready❌ Python only⚠️ Preview
Async + Sync✅ Both supported⚠️ Event-loop⚠️ Preview
Complete coverage✅ 59/59 commandsUnknownUnknown
Active maintenance✅ Yes✅ Official⚠️ Preview

Project Goals

  • Rust-native API for all KiCad IPC commands
  • Typed, ergonomic models for board and editor operations
  • Full parity between async and blocking APIs
  • Clear documentation and real-world examples
  • Stable, maintainable release workflow

Current Scope

  • KiCad API proto snapshot pinned in repo (src/proto/generated/)
  • 59/59 wrapped command families from KiCad v10.0.1
  • Runtime behavior validated in CI and manual checks against KiCad 10.0.1

Core Entrypoints

  • Async: kicad_ipc_rs::KiCadClient
  • Blocking: kicad_ipc_rs::KiCadClientBlocking (enable blocking feature)
  • Errors: kicad_ipc_rs::KiCadError

Getting Started

Jump to Quickstart to connect to KiCad and run your first commands.