FFalCAD docs

0001 — Multi-repository topology

Status: accepted

Context

FalCAD has an open core (the app, the engines, the SDK, the docs and the toolchain manifests) and a proprietary hosted service. The blueprint suggested a monorepo inside the public core. The founder decided against a monorepo. The public/private boundary also has to be impossible to cross by accident.

Decision

Each repository holds exactly one package:

Repository Visibility (intended) Package
falcad-format public @falcad/format — the .falcad specification, schemas, loader
falcad-library public @falcad/library — symbols and footprints
falcad-kernel public @falcad/kernel — connectivity, ERC, transactions, templates, capabilities
falcad-sim public @falcad/sim — analog/digital simulation
falcad-pcb public @falcad/pcb — board engine, DRC, manufacturing exports
falcad-hdl public @falcad/hdl — HDL language services, Yosys/nextpnr, waveforms
falcad-mcu public @falcad/mcu — MCU emulation, assembler, firmware toolchains
falcad-toolchains public @falcad/toolchains — manifests, detection, safe execution, license ledger
falcad public the application (web + desktop)
falcad-cli public @falcad/cli — CLI and local MCP server
falcad-sdk public @falcad/sdk — extension API, host, packaging
falcad-extensions public example extensions
falcad-docs public this site
falcad-cloud private ASP.NET Core service
falcad-infra private deployment, edge configuration, runbooks
falcad-product private pricing, roadmap, vendor notes

During development, all repositories are private in a GitHub organization. Visibility changes only on an explicit human decision.

Packages depend on each other through versioned package references. Locally these are file: links between sibling checkouts. Nothing public references private code. The cloud consumes only generated, published contracts: the JSON Schemas and the collaboration test vectors.

Consequences