Skip to main content

Cyanotype

Cyanotype is an open-source, code-first system for managing Bills of Materials (BoMs), product definitions, and engineering changes.

It brings software engineering practices—version control, code review, automated testing, and continuous integration—to hardware development.

Why Cyanotype?​

Modern hardware development involves multiple disconnected systems. CAD tools describe geometry and assemblies, PLM systems manage product definitions, and ERP systems manage manufacturing and procurement.

Moving information between these systems often requires manual synchronization, proprietary integrations, and duplicated data.

Unlike software, where source code provides a version-controlled representation of the system, hardware product definitions are frequently distributed across files, databases, and applications.

Cyanotype aims to make product definitions explicit, portable, reproducible, and version-controlled.

BoM as Code​

Cyanotype represents product definitions using a human-readable declarative language.

Rather than treating a BoM as a spreadsheet or a static export from CAD, Cyanotype treats it as a program that describes how a product is constructed.

This enables:

  • Version control: Track engineering changes using Git, including meaningful diffs and revision history.
  • Code review: Review changes to product structures through standard pull-request workflows.
  • Automation: Generate product definitions from CAD, validate changes, and integrate with CI/CD pipelines.
  • Reproducibility: Reconstruct product structures from versioned definitions and referenced artifacts.
  • Interoperability: Connect CAD, engineering, and manufacturing workflows through a common representation.

Core Concepts​

Cyanotype separates product requirements, concrete implementations, and the relationships between them.

Four fundamental concepts form its data model:

ConceptDescription
CoItemAn abstract requirement or functional slot that can be fulfilled by different implementations.
CoProcessA qualification mechanism that establishes how an Item satisfies a CoItem.
ItemA concrete part or assembly implementation, potentially associated with CAD geometry and other artifacts.
ProcessA definition of how Items are produced or assembled from input requirements.

These concepts form a directed graph, which can be resolved into a BoMTree representing a particular product configuration.

By separating requirements from implementations, Cyanotype can model part interchangeability without assuming that different parts are universally equivalent.

From CAD to BoM​

Cyanotype supports a workflow in which engineering definitions are generated from CAD assemblies and maintained as version-controlled source files.

A typical workflow is:

  1. Export: Extract assembly structure, component placements, and geometry from CAD.
  2. Generate: Convert the extracted information into Cyanotype product definitions.
  3. Review: Inspect generated changes using Git diffs and pull requests.
  4. Build: Resolve definitions into product structures and generate derived artifacts.
  5. Publish: Store and distribute product definitions and artifacts for downstream use.

This workflow supports automated code generation and continuous integration while allowing engineers to maintain meaningful, human-readable product definitions.

Beyond Traditional BoMs​

A conventional BoM typically describes which parts are used in a product.

Cyanotype additionally models why a particular implementation satisfies a requirement, how components relate through assembly processes, and how those relationships evolve across revisions.

This provides a foundation for managing engineering changes, tracking interchangeability, and connecting product design with manufacturing and supply-chain systems.

Project Status​

Cyanotype is under active development. Its current focus is CAD integration, declarative product definitions, revision tracking, automated generation, and interactive visualization of product structures.

The long-term goal is to establish an open, programmable foundation for hardware product lifecycle management.

Source code: GitHub