atopile/atopile

Design circuit boards with code! ✨ Get software-like design reuse 🚀, validation, version control and collaboration in hardware; starting with electronics ⚡️

atopile – Code‑first hardware design

What it is – atopile is a domain‑specific language, compiler, and VS Code/Cursor extension that lets you describe electronic circuits in declarative .ato files. The tool resolves constraints, picks parts, runs checks, and can generate or update a KiCad PCB layout, BOM and other fabrication data.

Why it matters – Traditional PCB design is a manual, graphical process. atopile brings software‑engineer habits to hardware: reusable modules, parametric component selection, unit‑aware equations, and automated validation. This speeds up iteration, reduces errors, and makes designs more reproducible.

How it works

  • Write .ato files that declare modules, interfaces, units, tolerances, and assertions.
  • The ato compiler solves the constraints, chooses components from a package registry, and produces KiCad files.
  • The VS Code/Cursor extension provides language services (syntax highlighting, autocompletion) and a one‑click build button.

Typical workflow

  1. Install the VS Code extension (or CLI).
  2. Open an example or create a new .ato module.
  3. Press the ▶ button or run ato build.
  4. When ready, open the generated .kicad_pcb in KiCad for layout and routing.
  5. Export BOM, fabrication, and assembly data.

Ecosystem – A public package registry (packages.atopile.io) hosts reusable modules. Projects built with atopile include a smart speaker (NONOS), a multi‑channel DSP board, a “Humane Pin” AI‑Pin, a high‑brightness display, and a battery‑cell simulator.

Getting started – Install via the editor extension (recommended) or follow the CLI guide. The tool runs on macOS, Linux, and Windows (WSL). KiCad is optional for early stages; it’s only needed for final PCB layout.

Community & support – Discord channel for help, issue tracker on GitHub, and optional commercial support.

License – MIT.


All details are taken directly from the repository’s README.

Related

  • Project
  • Project
  • Project
  • Project