FRAGUA v1.0.5 · schematic → fab
tests pass · cargo test http api · 127.0.0.1:7878 rust stable · tauri 2 erc + drc · continuos schematic → board → zip de fabricación en un loop licencia · MIT tests pass · cargo test http api · 127.0.0.1:7878 rust stable · tauri 2 erc + drc · continuos schematic → board → zip de fabricación en un loop licencia · MIT
AI-native PCB design

El agente diseña la placa. Tú la diriges.

Fragua es una herramienta de diseño de PCB nativa para agentes. El modelo sintetiza el esquemático, coloca componentes, rutea y pasa ERC/DRC en tiempo real; tú observas el render en vivo y rediriges cuando hace falta. Un binario de escritorio en Rust + Tauri con una API de scripting local para el agente — del prompt al zip de fabricación sin kicad-cli ni freerouting.jar.

$ curl -fsSL https://raw.githubusercontent.com/mentasystems/fragua/master/scripts/install.sh | sh
project.fragua · live render
y-up · nm fixed-point
U1 · MCU RP2040 USB-C · J1 12MHz Y1 C1 100nF C2 10uF LED1 R1 330Ω GPIO HEADER place Y1 12MHz place J1 usb-c route → R1 → LED1 25.4 mm
agent
http · :7878 nodes · 14 nets · 9 claude code · connected
01 · Loop

Un solo proyecto vivo, compartido entre agente y humano.

agent → http → host
↓ render · ↑ events
01AGENTE

El agente manda scripts por HTTP.

Cualquier agente que hable HTTP (Claude Code, GPT, un loop de shell) manda el DSL de pcb-script a POST /script: sym, net, place, route, pack. La referencia completa se sirve en GET /.

→ POST /script { "outline 80 30 radius=2\nstatus" }
[L1 ok outline] · [L2 ok status] 0 syms
02HOST

Tauri es dueño del Project.

La app de escritorio es la fuente única de verdad. Atiende una API HTTP sin estado en 127.0.0.1:7878 y reemite cada cambio al webview vía un bus de eventos broadcast. Guarda proyectos .fragua en JSON.

host.project: arc<rwlock>
bus: tokio::broadcast<Event>
03HUMANO

Tú observas el SVG en vivo y rediriges.

El frontend re-renderiza el board a SVG en cada evento — sistema de coordenadas Y-up, geometría en nm de coma fija. Si el agente se desvía, te metes y corriges. Sin commits, sin guardar.

on(project.changed) → re-render svg
latency · <16ms typical
02 · Capacidades

Diseñado desde el principio para colaborar con un agente.

6 capacidades · v1.0
DSL

DSL de agente: pcb-script.

Un lenguaje de líneas — lib, sym, net, class, place, route, erc, drc, pack. Agente y visor comparten un único Project sin sincronización extra.

RENDER

Render SVG en vivo.

Cada evento del proyecto regenera el SVG: sustrato, cobre, silkscreen con trazos Hershey y overlay de violaciones DRC. Coordenadas Y-up en nanómetros de coma fija.

ROUTER

Auto-router nativo.

A* sobre grid de 2 capas con rip-up-and-reroute, congestión negociada y multi-source estilo Steiner. Respeta el NetClass de cada red: ancho de pista y clearance por clase.

PLACER

Auto-placement.

Simulated annealing sobre HPWL con penalización de huecos y proxy de congestión. Tú puedes arrastrar cualquier componente en cualquier momento; el agente re-planifica alrededor de lo fijado.

ERC · DRC

Chequeos continuos.

ERC por roles (pines flotantes, múltiples drivers, redes sin alimentar) con heurísticas de decoupling y pull-ups I²C. DRC de clearance, drill, borde — más DRC de fabricación por proveedor.

FAB

Zip listo para fabricar.

Gerbers RS-274X, taladros Excellon, BOM y pick-and-place en el formato de cada proveedor — JLCPCB, PCBWay o genérico. pack lo deja todo en un único zip listo para subir.

03 · Arquitectura

Once crates. Cero ambigüedad sobre quién posee qué.

93.5% rust · 4.5% ts
monorepo · cargo workspace
pcb-core
Modelo de proyecto. Esquemático, placa, biblioteca, pours. Geometría en nm de coma fija. Bus de eventos sobre tokio::broadcast. Persistencia JSON en ficheros .fragua.
crate
pcb-script
El DSL del agente. Parser y ejecutor de lib, sym, net, class, place, auto-place, route, erc, drc, auto-pour, pack. La referencia se imprime al arrancar y se sirve en GET /.
crate
pcb-placer · pcb-router
Placement y routing. Annealing sobre HPWL con penalizaciones de hueco y congestión; A* en 2 capas con rip-up-and-reroute y congestión negociada, honrando el NetClass de cada red.
crates
pcb-erc · pcb-drc
Chequeos. ERC por roles (drivers múltiples, redes sin alimentar, pines flotantes) + heurísticas de decoupling y pull-ups. DRC de clearance, drill, borde, pista estrecha y eficiencia de rutado.
crates
pcb-fab · pcb-gerber
Salida de fabricación. Gerbers RS-274X (los contornos redondeados emiten arcos), Excellon, BOM + CPL por proveedor — Jlcpcb, Pcbway, Generic — y DRC de fabricación. Un zip listo para subir.
crates
pcb-render · src-tauri
Render + shell. Board → SVG determinista (silkscreen Hershey con reubicación automática de etiquetas). La app Tauri 2 posee el Project canónico y sirve la API HTTP en 127.0.0.1:7878.
app
04 · Quickstart

De cero a un agente diseñando, en dos comandos.

~2 min · macos / linux / windows

Lo que necesitas.

Nada más que el binario: el instalador lo deja en /usr/local/bin (o ~/.local/bin). Rust y Node solo hacen falta si compilas de fuente.

macosarm64 / x64
linuxx64
windowszip en releases
agentecualquiera con http
rust + nodesolo build de fuente
$# macos (arm64/x64) y linux (x64) — un solo comando
$curl -fsSL https://raw.githubusercontent.com/mentasystems/fragua/master/scripts/install.sh | sh
fragua v1.0.5 → /usr/local/bin/fragua
 
# windows: fragua-v1.0.5-windows-x64.zip en github releases
 
$# o compila de fuente (rust estable + node ≥ 20)
$git clone https://github.com/mentasystems/fragua && cd fragua
$npm --prefix frontend install && npm --prefix frontend run build
$cargo run --release --bin fragua
STATUSV1

v1.0 — el loop completo funciona. Del prompt al zip de fabricación.

Agente y humano comparten un Project en vivo: esquemático + ERC, placement con annealing, auto-router de 2 capas, DRC continuo, pours y salida de fabricación por proveedor. Lo siguiente, según VISION.md: steering más rico (pen tool, anotaciones sobre el canvas), progreso en streaming y biblioteca de símbolos más amplia.

camino a la visión65%
05 · Preguntas frecuentes

Lo que probablemente quieres saber.

8 preguntas
¿Esto reemplaza a KiCad o Altium?
No pretende competir en features con ellos. Fragua está construida con la idea de que el agente sea el operador principal: KiCad y Altium están diseñados para humanos cliqueando UI, y muchas de sus elecciones de modelo no encajan cuando un agente razona sobre la placa. Eso sí: el flujo completo — esquemático, placa, ficheros de fabricación — sale de Fragua sin lanzar ninguna herramienta externa.
¿Por qué Rust y Tauri en vez de Electron?
El modelo de proyecto, el router, el placer, los chequeos y la salida de fabricación están en Rust por una razón: un único modelo canónico, sin serializar entre lenguajes. Tauri solo aporta la shell de webview — la lógica vive en Rust. Resultado: binario pequeño y baja latencia entre evento y re-render. Y una regla dura: cero binarios externos — nada de kicad-cli ni freerouting.jar; cada formato se implementa en código propio.
¿Cómo se conecta el agente exactamente?
HTTP local sin estado en 127.0.0.1:7878. GET / devuelve la referencia completa del DSL (la misma que se imprime al arrancar la app), POST /script ejecuta un script multi-línea y POST /save persiste el proyecto. Las respuestas son text/plain con el resultado de cada línea: [L<n> ok|FAIL <tool>]. Sin handshake, sin sesión — perfecto para agentes.
¿Puedo usarlo sin Claude Code?
Sí. Cualquier cosa que sepa hacer una petición HTTP puede dirigir Fragua: otro agente, un script de shell con curl, tus tests de CI. Y la app de escritorio funciona perfectamente sin ningún agente conectado — puedes escribir los scripts tú mismo.
¿Qué precisión tiene el modelo geométrico?
Toda la geometría usa coma fija en nanómetros (i64). No hay floats en el modelo de proyecto. Esto significa que dos llamadas idénticas producen el mismo SVG byte a byte, y que jamás vas a perder precisión por el ida y vuelta entre agente y UI.
¿Qué tal rutea el auto-router?
Es un router propio: A* sobre grid de 2 capas con rip-up-and-reroute, congestión negociada y multi-source estilo Steiner. Respeta ancho de pista y clearance por NetClass, y el DRC de fabricación valida el resultado contra los límites reales del proveedor (pista mínima, drill, anillo anular). Hay placas reales fabricadas con él.
¿Cómo contribuyo?
Todo el código vive en github.com/mentasystems/fragua bajo licencia MIT. Buenos puntos de entrada: ampliar la biblioteca de símbolos y footprints, añadir proveedores de fabricación, o afinar el router (pcb-router-tune existe justo para eso). Lee VISION.md y CONTRIBUTING.md antes de abrir un PR grande.
¿Por qué el nombre "Fragua"?
Una fragua es donde se forja el metal — calor, presión, repetición hasta que la pieza queda. Diseñar una placa con un agente se siente parecido: muchos golpes pequeños sobre el mismo objeto vivo, hasta que sale algo que funciona.

Pon a un agente a diseñar tu próxima placa.

Open source (MIT), escrito en Rust, sin nube. Instala el binario, abre la app, conecta tu agente.