Pipeline Guard
A multi-agent system where one agent sabotages a running data pipeline and five others detect the problem, diagnose it, patch it, check the fix, and write it up on their own. A dashboard shows each agent working.
Period
- May 2026
Role
- Sole engineer
Type
- Source on GitHub
Tools
The idea
Data pipelines usually don't crash loudly. A field gets renamed, a number shows up as a string, some rows get duplicated, and the output is quietly wrong. I wanted to see how far a set of agents could get at catching and fixing that kind of thing with nobody watching.
How it works
A Chaos agent damages either a small weather dataset or the ETL script itself. A Monitor runs the pipeline every 15 to 60 seconds in a separate process with a timeout. When a run fails or the row count looks wrong, it kicks off a chain. Diagnosis names a root cause with a confidence score and escalates to a person if it's under 0.6. Patch edits the script or cleans the data. Validator reruns the pipeline and judges the output, and Patch gets one retry using that feedback. Reporter logs the incident to SQLite.
There are two modes. Mock mode is fully deterministic: seven canned sabotages, rule based diagnosis and no API calls. In AI mode, Chaos, Diagnosis, Patch and Validator each run a Claude tool use loop, so Chaos comes up with new ways to break things and Patch's fixes pile up over time. Monitor and Reporter stay plain code in both modes because they don't need a model.
Decisions I'd point to
The agents can't see the clean copy of the data or the dashboard's before and after view. They have to find the problem from the raw files, the same way someone on call would.
Writes are limited to two files, with hard checks so Chaos can't just empty the file and Patch can't invent records to make the numbers line up.
It starts in mock mode every time, so a saved API key never spends money without me choosing to.
There are 97 pytest tests. The AI agents are tested against a scripted fake client, so the suite never calls the real API.
Status
It runs locally or in Docker and starts in mock mode, so it doesn't burn API credit. You can also upload your own JSON or CSV file and it'll profile the fields and run the same loop on it.
