Inspiration

Hardware troubleshooting often becomes an unstructured stream of chat messages, photos, measurements, guesses, and repeated questions. The person can touch the physical system, but the agent can organize far more context than a person wants to track manually. BenchPilot gives both sides one inspectable workspace without letting the agent pretend it observed the hardware.

What it does

BenchPilot is a shared diagnostic canvas for safe low-voltage electronics. The human records symptoms and de-energized measurements. The app maps device topology, ranks evidence-linked hypotheses, maintains a safe test plan, preserves an append-only history, and produces a diagnostic report.

In a WebMCP-capable browser, BenchPilot registers 12 typed tools over the same live case state. An agent can read the case and canvas, focus visible components, propose safe test steps, record only values explicitly supplied by the human, organize hypothesis updates, draft a cautious plan, and undo its own accepted changes. Every write is visible, attributed, reviewable, and reversible.

Why WebMCP

WebMCP is the product's collaboration layer, not a decorative integration. A troubleshooting agent needs structured topology, stable entity IDs, evidence provenance, unit and power-state validation, and a safe way to change the same workspace the person sees. Scraping page text cannot reliably provide those guarantees.

BenchPilot's WebMCP tools use strict schemas and compact result envelopes. Human and agent actions share one command layer, so validation, revision checks, history, proposals, and undo behave identically from either interface. The site remains fully useful when WebMCP is unavailable.

How we built it

BenchPilot uses Vinext/Next.js App Router compatibility, React 19, TypeScript, Tailwind CSS, Zustand, Zod, @xyflow/react, Drizzle migrations, and Cloudflare D1 on OpenAI Sites. A deterministic NEMA 17 seed and rule engine make the flagship journey repeatable without an external LLM or physical hardware.

Safety is enforced at the domain boundary: allowlisted test templates, strict type/unit pairs, disconnected-power requirements for resistance, session/case isolation, optimistic revision checks, rate limits, proposal review, actor attribution, and targeted undo. The release gate includes unit tests, WebMCP contract tests, production builds, and desktop/mobile browser journeys.

Challenges

The hardest design problem was balancing useful agent autonomy with human ownership of physical truth. BenchPilot lets the agent organize and propose while preventing it from silently inventing measurements or replacing canonical wiring. We also kept tool results compact while still returning revision, changed IDs, and a visible verification target.

Accomplishments that we're proud of

  • Twelve discoverable WebMCP tools operating on live shared state.
  • A production-verified read, focus, proposal, human accept, and targeted undo loop.
  • Deterministic D1-backed guest sessions with no login or paid API dependency.
  • Unsafe energized resistance writes rejected at the API/domain boundary.
  • Responsive manual fallback, accessible canvas list, and shareable report.
  • Public MIT-licensed source with automated release gates.

What we learned

The best human-agent interfaces make authority boundaries visible. Structured tools help, but collaboration becomes trustworthy only when users can see why the agent acted, review the exact change, and reverse it without damaging human evidence. WebMCP rewards strong internal state design: stable IDs, provenance, revisions, and narrow commands improve both the agent experience and the manual product.

What's next for BenchPilot

Next steps include team case sharing, richer but still allowlisted device templates, instrument imports that preserve provenance, image-assisted label capture, and organization-level diagnostic playbooks. The safety boundary will remain deliberately narrow until each new procedure has explicit validation and review behavior.

Built With

  • cloudflare-d1
  • drizzle-orm
  • openai-sites
  • playwright
  • react
  • tailwind-css
  • typescript
  • vinext
  • webmcp
  • zod
  • zustand
Share this project:

Updates