Fine. But what does the AI do? It "ingests the project", but what does that mean? Finding all the pins? That's a start. Using a SPICE model to figure out what should be on each pin, and checking? Now that would be impressive. Probably something in between.
The usual use for this sort of thing is that you probe a known-good board to find out what voltages and signals appear where, and then compare with newly manufactured boards. That's a common production check.
There's potential here. If the AI has some concept of what the board under test is doing, and can diagnose problems, that's quite useful.
The way I'm thinking about it is, it's a _workflow_ innovation?
So you ask for data sheets for all the visible chips and get PDFs in an output directory with minimal user interaction except to flip the board, ask for a basic idea of connectivity, get a stitched high res surface image etc.... which of course are all currently possible, but you can do them potentially with very low effort. There doesn't have to be a _software stack_ ahead of time. You ask Claude to do the thing, it will figure out how to do it, write some code, pull in some OSS and make the thing happen. You can take this project's software or leave it.
You might say "tell me where you think the JTAG headers are" and it will come up with a workflow to do its best at that task (most likely with variable results...), but nonetheless this is not a thing you can ask of any commercial product I am aware of today. With probes, stuff can get interesting.
Of course experienced hardware & reverse engineers already can do all this stuff and have a plethora of workflows for it but I still think it's an interesting POC of a generalisable approach. You can take or leave this particular software stack. Also, the hardware barely matters, you can duct tape whatever to whatever.
It almost feels like it would benefit from being split into two projects. If I'm testing my own PCBs, I probably don't want an agent in charge, at least not routinely. There's just no reason for the added cost, complexity, or non-determinism. And if I'm reversing someone else's design, then going through the effort of building an auto-prober seems like an overkill, especially since a single probe is seldom enough. Even the simplest serial interface will often have one line for clock and another for data, so you're gonna be manually making connections either way.
https://videos.files.wordpress.com/gD3kAWlO/autoprober-demo....
But I am not sure what do I see there? Is that some 3D printing?
Perhaps a smidge disappointed when I had a look and discovered it wasn't that :)
> New York[1]
[1] https://www.governor.ny.gov/news/keeping-new-yorkers-safe-go...
This is genuinely mind blowing.
I would assume once machines are set up that this is only really done if you're not confident of your manufacturing line for some reason (eg. maintenance, reconfiguration) or you are pushing limits somewhere, for example, particularly small vias or traces very close to the edge of the board.
To make this useful, you would want two flying probes because otherwise it's not going to be telling you much you don't already know.
[1] https://bayareacircuits.com/bare-printed-circuit-board-elect...
Isn't that a good thing?
AutoProber is the hardware hacker's flying probe automation stack for giving your agent everything it needs to go from "there's a new target on the plate" to probing individual pins in a safe way.

Demo video: https://gainsec.com/autoprober-demo-mp4/




All hardware can be controlled through the web dashboard, Python scripts, or by the agent itself.

This repo is a self-contained source-available release candidate. It contains the Python control code, dashboard, CAD files, and documentation needed to create your own AutoProber.
This project can move physical hardware. Treat it as a machine-control system, not a normal web app.
The required safety design is:
Pn:P is ignored. The CNC probe pin is not a trusted endstop.Read docs/safety.md and docs/operations.md before running hardware.
apps/ Operator-facing scripts and Flask dashboard entrypoint
autoprober/ Reusable Python package for CNC, scope, microscope, logging, safety
dashboard/ Single-page web dashboard
docs/ Architecture, device references, operations, and safety guidance
cad/ Printable STL files for the current custom toolhead
config/ Example environment/configuration files
AGENTS.md Agent/operator safety rules
LICENSE PolyForm Noncommercial 1.0.0 license and commercial contact
pyproject.toml Python project metadata
uv.lock Locked Python dependency resolution
The tested project architecture uses:
mjpg_streamercad/Default runtime assumptions are documented in the device docs. Replace them with your own lab settings before use.
For a shopping-oriented hardware list, see docs/BOM.md.
These are the specific parts or part classes used for the prototype release. Verify current listings, dimensions, voltage, and connector compatibility before buying.
My build:
cad/Optional / interchangeable:
flowchart LR
Operator[Operator] --> Dashboard[Web Dashboard]
Dashboard --> Apps[Python Apps]
Apps --> CNC[GRBL CNC over USB serial]
Apps --> Microscope[USB Microscope via mjpg-streamer]
Apps --> Scope[Oscilloscope over LAN / SCPI]
Apps --> Outlet[Optional LAN Power Outlet]
Endstop[Optical Endstop] --> ScopeC4[Scope C4 Safety Voltage]
Pogo[Pogo Measurement] --> ScopeC1[Scope C1 Measurement]
ScopeC4 --> Apps
ScopeC1 --> Apps
flowchart TD
Preflight[Preflight] --> SafetyCheck{Channel 4 clear?}
SafetyCheck -- no --> Stop[STOP State]
SafetyCheck -- yes --> Motion[Monitored Motion]
Motion --> Monitor[EndstopMonitor thread >= 10 Hz]
Monitor --> C4{C4 clear?}
C4 -- yes --> Capture[Microscope Capture]
C4 -- no --> FeedHold[Immediate feed hold]
FeedHold --> Stop
Capture --> Stitch[Stitch / Map]
Stitch --> Review[Manual Probe Review]
Review --> Approved{Approved target and measured probe offset?}
Approved -- no --> Stop
Approved -- yes --> Probe[Bounded probe motion]
stateDiagram-v2
[*] --> Running
Running --> STOP: C4 triggered / C4 fault / CNC alarm / real limit pin
STOP --> Report: log voltage, status, action
Report --> WaitForOperator: no automatic recovery motion
WaitForOperator --> Running: operator explicitly clears condition
Install dependencies:
uv sync
Start the dashboard on a configured hardware host:
PYTHONPATH=. python3 apps/dashboard.py
The dashboard defaults to port 5000.
Start from config/autoprober.example.env. Do not publish lab-specific IPs, hostnames, credentials, calibration files, or captured target images unless you intend to release them.
Important runtime values are configurable:
AUTOPROBER_LOG_PATH: runtime log pathAUTOPROBER_RUNTIME_ROOT: calibration, flat-field, and runtime state directoryAUTOPROBER_MICROSCOPE_SNAPSHOT_URL: microscope snapshot endpointAUTOPROBER_SCOPE_HOST / AUTOPROBER_SCOPE_PORT: oscilloscope SCPI endpoint5000Do not commit local environment files that contain lab-specific hosts, paths, or target data.
This release candidate intentionally excludes:
.venv, __pycache__, Playwright artifactsSee RELEASE_MANIFEST.md for details.
This project is source-available under the PolyForm Noncommercial License 1.0.0.
You may use, modify, and share this project for noncommercial purposes.
Commercial use requires a separate paid commercial license.
For commercial licensing, contact: autoprober@gainsecmail.com
This project is intended for controlled lab work on equipment and targets you are authorized to test. Do not use it to probe, damage, or analyze systems without permission.