Skip to content
2nd Place

Scopecreep

Scopecreep turns your JetBrains IDE into an agentic hardware testbench.

Core trick

A managed Python sidecar wraps Digilent and DPS-150 instruments as REST, and the agent writes test scripts that call it.

Tags

Description

Scopecreep turns your JetBrains IDE into an agentic hardware testbench. Describe a test in plain English; an AI agent writes Python directly into your open project, runs it against real lab instruments on your bench, and drops a timestamped results file back into the project tree. The problem. Hardware bring-up today is a context-switch nightmare. Engineers write driver code in an IDE, flip to vendor software (WaveForms, bench PSU apps) to poke the instrument by hand, copy numbers into a spreadsheet or lab notebook, then write up results somewhere else entirely. Test code drifts out of sync with the hardware it's supposedly validating. Tribal knowledge about instrument quirks — safety limits, wiring gotchas, API shapes — lives in one senior engineer's head and dies when they leave the team. Every new hire re-learns the same bench the hard way. How Scopecreep solves it. The plugin bundles a managed Python sidecar that speaks REST to actual hardware —Digilent Analog Discovery (scope, AWG, PSU, DIO) and FNIRSI DPS-150 bench supply. A chat agent, grounded in a Supabase-backed memory layer of instrument profiles, generates project-structured test code: experiments/*.py scripts that drive the hardware, results/*.md files with pass/fail verdicts and raw measurements, plus the exact terminal command to run it all. When the agent encounters an instrument it's never seen, it researches the device live, publishes a profile, and every future user across every project benefits on turn one — a shared memory flywheel instead of siloed tribal knowledge. Safety is enforced in-prompt and at the driver: the agent narrates a plan and waits for explicit user approval before energizing anything; every PSU/AWG call is wrapped in try/finally rails that disable outputs on any error path; voltage and current clamps are non-negotiable. The result: test code, instrument drivers, and the conversation that produced them all live in one version-controlled project. No tool-switching. No lost context. No DUT cooked because someone forgot to disable a rail. Built as an IntelliJ Platform plugin (Kotlin) + Python sidecar (FastAPI, pyftdi, pydwf, custom DPS-150 CDC driver) + Supabase + OpenAI function-calling agent. Ships as a single installable plugin zip.
BhavikFTW/Scopecreep★ 20 forksKotlinMITCreated Apr 18, 2026 · last push Apr 19, 2026

README excerpt

# Scopecreep

> Software-defined hardware control inside JetBrains IDEs.

Scopecreep turns an IDE into an agentic hardware testbench. The plugin boots a
local Python sidecar that drives real lab instruments (oscilloscope, programmable
PSU, DUT serial), while the IDE owns the UI, the AI conversation, and the test
orchestration.

This is the **MVP skeleton** — it brings up the tool window, spawns the managed
sidecar, and pings a `/health` endpoint. Real instrument I/O, RCA, and agent
integrations ride on top of this plumbing in later milestones.

## Status

| Layer | State |
|-------|-------|
| Tool window + Ping button | ready |
| Managed Python sidecar (venv + uvicorn) | ready |
| `/health` round-trip | ready |
| Settings panel (runner host + port) | ready |
| Profiles / memory layer (Supabase) | ready |
| Agent backend bundled (port 8000) | ready |
| Schematic tab — `/schematic/parse` render | ready |
| Agent tab — session lifecycle + probe prompts | ready |
| Waveform tab — measurement table | ready |
| Chat tab — `codex exec` wrapper | ready |
| Firmware tab — Supabase `firmware_jobs` dashboard | ready (pipeline still out-of-process) |

For a full step-by-step install, first-boot walk-through, and validation
matrix, see **[docs/INSTALL_AND_VALIDATE.md](docs/INSTALL_AND_VALIDATE.md)**.

## Install

The plugin is distributed as a single zip on the **[Releases page](https://github.com/BhavikFTW/Scopecreep/releases)** — you do **not** need to clone this repo or run Gradle to u

Team