Describe the nets.
Skip the jumpers.
Tell an agent which pins belong together. A deterministic router turns that into a connection plan you can read, down to what opens and what closes, before anything on the board moves.
The host software is open source today. The board is still in development and not for sale.
“Put the sensor’s SDA and SCL on the dev board’s I²C pins.”
SDA Clip1 Clip12
SCL Clip2 Clip13
- Plan
- dry run · nothing moves
- Nets
- SDA, SCL
- Routes
- 2 candidates
- Opens first
- none
- Touches
- no other nets
- Verified
- false
The code is done.
The wiring isn’t.
Every bench build ends the same way: look up the pinout, push in the jumpers, trace each one twice, and start over when a lead sits one row off.
JumperFree moves that work into software you can read. You say what should be connected. The software decides how, shows you, and only then would the board act.
Four lanes.
One request.
Language is fuzzy; wiring can’t be. Each layer does one job and hands a checkable artifact to the next, so you can always see where a decision was made.
-
Agent
Reads your ask and writes nets: a name and the Clips it joins. It never picks a path or touches a switch.
SDA: Clip1, Clip12Runs today as seven MCP tools
-
Router
Finds paths through the crosspoint. The same nets in always give the same plan out. No guessing.
plan: breaks, makesRuns today in the host software
-
Controller
Takes a checked plan over USB and applies it, opening paths before it closes new ones.
switch statesProtocol core tested on a host; not yet on the STM32
-
Board
Sixteen Clips of five holes, each one electrical node. LEDs are meant to show where each part goes.
connectionIn design; not built yet
Read the plan
before it runs.
Planning is a dry run. You see which switches would close, which would open, and which other nets they would touch. Nothing moves until you decide.
plan_net_change(action="create", name="SDA", nodes=["Clip1", "Clip12"])Ask for a plan using the same arguments that would carry it out.
routerCandidate routes through the crosspoint. A software result, not the current wiring.
plan.makesSwitches that would close.
plan.breaksSwitches that would have to open first.
plan.disturbed_netsExisting nets the change would touch. Empty means nothing else moves.
verified: falseAlways false for now. A plan is never proof of a connection.
Field names come from the open-source agent tools: create_net, modify_net, delete_net, get_state, plan_net_change, guide_leds and all_open, served to any MCP-capable agent over stdio.
What’s real today.
JumperFree is early. Here is the line between what runs and what is still on the drawing board.
Working in software
- Nets to a deterministic route to a switch plan, in the Python host software.
- Seven agent tools over an MCP server, including dry-run planning.
- LED guidance and all-open commands, exercised against a mock device.
- A portable C protocol core for the controller, tested on a host machine.
Not built yet
- Controller firmware running on the STM32, switching through the CH446Q.
- A physical sixteen-Clip board with LEDs under your hands.
- An end-to-end loop proven on real hardware.
- A price, a ship date, or a way to buy one. None exist yet.
Follow the build.
Leave an email for occasional updates as the board takes shape. If you like, tell us what you would wire first.
Read the code on GitHubYou’re on the list.
Thank you. We will write when there is something real to show.