Overview
KiCad provides multiple plugin mechanisms for extending functionality:- Python Scripting: Action plugins and automation via Python API
- 3D Model Plugins: Import various 3D formats
- I/O Plugins: Support additional file formats
- IPC API: External tool integration via protocol buffers
Python Scripting
Architecture
KiCad uses SWIG (Simplified Wrapper and Interface Generator) to expose C++ classes to Python. Key files:scripting/kicadplugins.i- SWIG interface definitionscripting/python_scripting.cpp- Python integration layerscripting/python_manager.cpp- Plugin lifecycle management
Python API Exposure
SWIG Interface
pcbnew.py- PCB editor API- Python wrapper for C++ classes
- Automatic memory management via SWIG
Plugin Types
Action Plugins
Location: Loaded from standard plugin directories- Linux:
~/.local/share/kicad/scripting/plugins/ - Windows:
%APPDATA%/kicad/scripting/plugins/ - macOS:
~/Library/Application Support/kicad/scripting/plugins/
- Access full board data structure
- Create/modify footprints, tracks, zones
- Read design rules
- Generate manufacturing outputs
- UI integration via toolbar buttons
Footprint Wizards
Purpose: Parametric footprint generationPython Shell Integration
Interactive console: Built into Pcbnew (ifKICAD_SCRIPTING_WXPYTHON enabled)
Python API Examples
Board manipulation
Netlist processing
wxPython Integration
Requires:KICAD_SCRIPTING_WXPYTHON=ON (default)
Purpose: Create custom UI dialogs
3D Model Plugins
Overview
3D plugins enable importing various 3D model formats into KiCad’s 3D viewer. Location:plugins/3d/
Supported Formats
STEP (via OpenCASCADE)
Plugin:plugins/3d/oce/
Features:
- Industry-standard CAD format
- Precise geometry
- Assembly support
- Color and material properties
- Solid modeling
- Surface geometry
- Assembly hierarchies
- Compound shapes
VRML (Virtual Reality Modeling Language)
Plugin:plugins/3d/vrml/
Versions supported:
- VRML 1.0 (
v1/) - VRML 2.0/VRML97 (
v2/) - X3D (partial)
- Mesh-based models
- Materials and textures
- Transformations
- Hierarchical scenes
IDF (Intermediate Data Format)
Plugin:plugins/3d/idf/
Purpose:
- Board outline exchange
- Component placement
- Mechanical CAD integration
- IDF 2.0
- IDF 3.0 (most common)
- IDF 4.0
Plugin Architecture
Base class:I/O Plugins
Purpose
Enable import/export of various EDA file formats.Plugin Interface
Supported Formats
Altium
Plugin:common/io/altium/
Formats:
.PcbDoc- PCB files.SchDoc- Schematic files.PcbLib- Footprint libraries.SchLib- Symbol libraries
altium_binary_parser.cpp- OLE compound documentsaltium_ascii_parser.cpp- ASCII sectionsaltium_props_utils.cpp- Property extraction
EAGLE
Plugin:common/io/eagle/
Formats:
.brd- Board files (XML).sch- Schematic files (XML).lbr- Libraries (XML)
EasyEDA
Plugin:common/io/easyeda/, common/io/easyedapro/
Formats:
- JSON-based project files
- Embedded libraries
- Cloud project exports
- EasyEDA Standard
- EasyEDA Pro
CADSTAR
Plugin:common/io/cadstar/
Formats:
- Archive-based projects
- Parts library database
- Complex hierarchical designs
- Custom attributes
- Net classes
Plugin Registration
IO_MGR handles plugin discovery:IPC API
Overview
Modern external tool integration via Protocol Buffers and NNG transport. Introduced: KiCad 8.0 Location:api/
Architecture
Protocol Buffers
Definitions:api/proto/
Message structure:
Message Types
Board commands (board/board_commands.proto):
common/commands/):
base_commands.proto- Basic operationseditor_commands.proto- Editor controlproject_commands.proto- Project management
Transport Layer
NNG (nanomsg-next-gen): Message queue system Endpoint:ipc:///tmp/kicad-api.sock (Unix) or named pipe (Windows)
Patterns:
- Request/Reply - Synchronous commands
- Publish/Subscribe - Event notifications
Client Integration
Python example
Use Cases
Automation:- CI/CD integration
- Batch processing
- Design validation
- Report generation
- Custom DRC checks
- Advanced routing algorithms
- Library management
- Manufacturing preparation
- Automated testing
- Regression validation
- Performance benchmarking
Security
Token validation: Prevents unauthorized access- Local-only by default (IPC sockets)
- No authentication (relies on OS permissions)
- Trusted client assumption
Plugin Development Guidelines
Python Plugins
Best practices:- Handle exceptions gracefully
- Validate board state before modifications
- Use transactions for multiple operations
- Refresh UI after changes
- Provide meaningful error messages
I/O Plugins
Requirements:- Inherit from
IO_BASE - Register with
IO_MGR - Handle malformed input
- Preserve as much data as possible
- Document format limitations
3D Plugins
Requirements:- Implement
S3D_PLUGINinterface - Build scene graph efficiently
- Handle materials/colors
- Support coordinate transformations
- Validate geometry
See Also
- Codebase Structure - Code organization
- Core Libraries - Foundation APIs
- File Formats - Data formats