freeroute/README.md
Ryan Malloy 0270137b9f Scaffold freeroute: Python port of the FreeRouting engine
Pure-Python PCB autorouter replacing the freerouting.jar step in kicad-mcp.
Contract is Specctra DSN in, SES out — a drop-in for the JAR so the toolchain
needs no JVM. Includes pyproject (uv/ruff/pytest, src-layout) and a porting
plan seeded for study of the upstream FreeRouting Java source.
2026-07-11 14:51:42 -06:00

46 lines
1.0 KiB
Markdown

# freeroute
A native Python PCB autorouter — a Java-free port of the
[FreeRouting](https://github.com/freerouting/freerouting) engine.
## Why
`kicad-mcp` currently autoroutes by shelling out to `freerouting.jar`, which
drags in a JVM dependency. `freeroute` reimplements the routing engine in
pure Python so the toolchain needs no Java at all.
## The contract
The entire integration surface is two Specctra files:
```
board.dsn ──▶ freeroute ──▶ board.ses
(unrouted) (routed session: traces + vias)
```
`kicad-cli` already exports `.dsn` and imports `.ses`, so `freeroute` is a
drop-in replacement for the JAR step — nothing else in the pipeline changes.
## Status
Pre-alpha. Under active development. See [`docs/PORTING_PLAN.md`](docs/PORTING_PLAN.md)
for the architecture and porting roadmap.
## Usage (target)
```bash
freeroute board.dsn -o board.ses
```
## Development
```bash
uv sync
uv run pytest
uv run ruff check src/ tests/
```
## License
GPL-3.0-or-later, matching the FreeRouting source it is ported from.