Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2,680 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Freerouting

Freerouting

Freerouting is an advanced autorouter for all PCB programs that support the standard Specctra or Electra DSN interface.

Release version Downloads License Contributor Covenant


Download installers for Windows, Linux, and macOS here.

Introduction

Freerouting is a powerful PCB autorouter compatible with any PCB design software that supports the standard Specctra or Electra DSN interface. It imports .dsn files generated by the host system's Specctra interface and exports .ses Specctra session files.

Important

⚠️ Notice for contributors

For several years, I had been postponing a comprehensive overhaul and refactoring of the Freerouting codebase. As many of you have noticed, parts of it had become dated, with legacy constructs, inconsistent naming, and insufficient documentation.

That refactoring is now underway, and I expect it to take approximately two weeks. The goal is to create a cleaner, more modern, and future-proof foundation for Freerouting.

During this period, please keep pull requests as small and focused as possible. This will make it significantly easier to rebase them onto the refactored codebase afterward.

Once the refactoring is complete, I will tag the current codebase as pre-refactor-2026. Anyone who prefers to continue working from the pre-refactoring version will be able to use that tag as a stable starting point.

However, please keep in mind that future features and performance improvements will be developed exclusively on the upgraded codebase. Staying up to date with Freerouting will therefore require moving to the refactored version eventually.

Contributors with forks containing custom modifications, as well as contributors with open pull requests, will likely need to rebase their work once the refactoring is complete. Depending on the changes involved, this may require some manual conflict resolution.

I sincerely apologize for the extra effort. I know that nobody enjoys rebasing or resolving conflicts. The good news is that this should provide a stable foundation for a long time, so we do not expect another change of this scale anytime soon.

Thank you for your understanding, patience, and continued support of Freerouting.

Andras

Getting started

You can interact with Freerouting using the Graphical User Interface (GUI), the Command Line Interface (CLI), or the Freerouting API. All interfaces support command-line arguments to set input/output files or modify settings.

Integrations are available with:

Click here for more details.

Graphical User Interface (GUI)

  1. Launch Freerouting: Upon launching, you'll see the main interface. image

  2. Open Your Design: Go to File > Open... and select your .dsn input file. image

  3. Start Autorouting: Click the Magic Wand icon to begin the autorouting process. image

  4. Monitor Progress: Watch the routing progress visually in the board editor and numerically in the footer. image

  5. Completion: Wait for the autorouter to finish all passes. This may take from a few minutes to several hours.

  6. Save Your Routed Board: Go to File > Save as... to save your routed board as a .ses file. image

Command Line Interface (CLI)

When using the CLI, you'll work with an input file (e.g., Specctra .dsn) exported from your EDA tool. Freerouting will autoroute unconnected nets and save the results for re-import into your EDA (e.g., as a Specctra .ses file).

Common command-line arguments:

  • -de [design input file]: Load a Specctra design file (.dsn) at startup.
  • -do [design output file]: Save a Specctra session file (.ses) after routing.
  • -l [language]: Set the language (e.g., en for English, de for German).
  • -inc [net class names]: Ignore specified net classes during routing.
  • -help: Display help information.

Example Command:

java -jar path/to/freerouting.jar -de MyBoard.dsn -do MyBoard.ses -inc GND,VCC

Download the latest freerouting-<version>.jar from the Releases page and substitute its path above.

This command routes MyBoard.dsn, ignores the GND and VCC net classes, and outputs MyBoard.ses.

For more details (including headless mode), see the CLI documentation.

Freerouting API

Freerouting offers public API endpoints for PCB routing. The API root is https://api.freerouting.app/v1. Check the service status at /system/status.

To access full functionality, request access on the Freerouting website.

Please note that the Freerouting API and its documentation are in beta and may change.

The official Freerouting client SDK currently supports Python (maintained in the separate freerouting-python-client repository; install the latest release with pip install freerouting-client). This repository also provides OpenAPI-based SDK generation scripts in scripts/sdk/ for JavaScript, C#, and C++ scaffolding, including scripts/sdk/regenerate-all.ps1 for one-command scaffold refreshes.

You can also self-host the Freerouting API on your own machine or server. See the Self-Hosting Guide for step-by-step instructions using Docker or a plain Java JRE.

Model Context Protocol (MCP)

Freerouting supports the Model Context Protocol (MCP) to integrate directly with AI coding assistants (like Cursor, Cline, or Claude Desktop), allowing the AI to query system status and auto-route boards on your behalf.

  • Online Quick Start (Public API): Runs instantly via npx -y @freerouting/freerouting-mcp-server (always fetches the latest release) without requiring a local Java installation.
  • Offline Mode (Local Executable): Runs the entire routing engine locally on your machine for complete privacy.

See the MCP Guide for detailed configuration steps.

Running Freerouting using Java JRE

Installers are available for Windows x64, Linux x64, and macOS. For other systems, you can run the platform-independent .jar file if you have Java JRE installed.

Steps:

  1. Download the JAR File: Get the latest .jar from the Releases page.

  2. Install Java JRE: Download and install Java JRE.

    • Choose your operating system and architecture.
    • Select JRE as the package type.
    • Choose version 25.
  3. Run Freerouting:

    java -jar path/to/freerouting.jar

    Use the latest freerouting-<version>.jar from the Releases page.

    Note for macOS Users: Launch Freerouting from the Terminal; starting from Finder is not supported.

Docker Image on GitHub Container Registry (GHCR)

Freerouting Docker images for stable releases (latest and version tags) and development (nightly) builds are available from ghcr.io/freerouting/freerouting. Prefer the latest tag unless you need a pinned version for reproducibility. The image is a multi-platform manifest supporting:

  • linux/amd64 — x86-64 servers, PCs, most cloud VMs
  • linux/arm64 — Apple Silicon, AWS Graviton, Raspberry Pi 4/5 with 64-bit OS
  • linux/arm/v7 — Raspberry Pi 2/3/4 with 32-bit OS, Umbrel, CasaOS, and other ARMv7 home-server stacks

Docker automatically selects the correct variant for your hardware. For full setup instructions — including Docker Compose examples, network configuration, and running without Docker — see the Self-Hosting Guide.

Contributing

We ❤️ all our contributors; this project wouldn't be possible without you!

🙏 Support the Project

If you'd like to support the project financially, please consider sponsoring the project.

Every contribution, no matter how small, is greatly appreciated!

Sponsor

Releases

Sponsor this project

Used by

Contributors

Languages