The agent talks to a small, deterministic API.
Fragua exposes a local HTTP endpoint on 127.0.0.1:7878. The agent posts line-oriented commands; fragua mutates the project, runs the router and the rule checks, and streams the new state back to the UI in real time. The same in-memory project is what you see and what you can drag.
# start a project, pull a library, drop symbols lib std sym U1 std:ATmega328P sym Y1 std:Crystal_16MHz sym C1 std:Cap_0805 22pF sym C2 std:Cap_0805 22pF # declare nets, attach a class so the router knows the rules class power width=0.30 clearance=0.20 net VCC class=power net GND class=power net XTAL1 U1.XTAL1 Y1.1 C1.1 net XTAL2 U1.XTAL2 Y1.2 C2.1 # let fragua place it, route it, check it, pack it auto-place route drc → 0 violations pack fab=jlcpcb → out/jlcpcb-rev1.zip ready to upload
GET /. The agent reads it once and drives every step from there — no plugin system, no out-of-band tooling.
From a sentence to a fab-ready zip.
The agent owns the workflow. You watch each step happen on the canvas and step in to redirect, mark up, or correct.
Everything in one Rust process.
No external CAD binaries. No kicad-cli, no java -jar freerouting.jar, no wrapper crates. Every file format is implemented from scratch so the agent loop never shells out and never blocks.
lib, sym, net, class, place, route, erc, drc, auto-pour, pack. Reference served at GET /.NetClass.Provider { Jlcpcb, Pcbway, Generic } with manufacturing-DRC and per-provider BOM + CPL formats. pack(...) ships a ready-to-upload zip.127.0.0.1:7878. Frontend pans, zooms and annotates the live SVG; surfaces the activity log.One curl, one binary.
macOS arm64/x64 and Linux x64 are built and released on every tag. Windows users grab the zip from the releases page.
$ curl -fsSL https://raw.githubusercontent.com/mentasystems/fragua/master/scripts/install.sh | sh # drops fragua into /usr/local/bin (or ~/.local/bin) $ fragua # opens the window, starts the API on :7878 $ fragua path/to/project.fragua # or open an existing project
GET /, and the agent drives the rest.