An IBM Bob 2.0 Hackathon Project
Created by team 403Denied on September 27, 2026
Technologies: Generative Agents β’ Opus β’ Claude Code β’ ChatGPT β’ GPT-4 β’ Gemini 3 pro β’ IBM
Categories: Developer Tools, Assistant, Automotive, Coding excellence, Productivity
ReproForge is an AI-powered software debugging and repair system built to close the gap between identifying a bug and proving that it has actually been fixed. A developer provides a bug report, stack trace, or error description, and ReproForge analyzes the repository using specialized AI agents. The agents investigate the codebase, examine relevant tests and Git history, identify potential root causes, and collaborate to determine the most likely explanation.
ReproForge then creates a minimal reproducible test case and runs it against the existing code to prove that the issue actually occurs. Once the failure is confirmed, the system generates a regression test, proposes and applies a minimal code fix, and executes the relevant test suites again.
The final result is an evidence-backed debugging report showing the complete journey:
Bug Report β Investigation β Root Cause β Reproduction β Regression Test β Fix β Verification
Instead of simply generating code or explaining an error, ReproForge focuses on proof. It does not claim a bug is fixed unless the generated reproduction and relevant tests demonstrate that the behavior has been corrected. The project uses IBM Bob 2.0's repository-level AI capabilities, agent workflows, parallel investigation, file and terminal operations, and iterative verification to demonstrate how AI can participate in a complete software engineering workflow.
The demo demonstrates the complete autonomous workflow: repository discovery β test execution β bug localization β root-cause analysis β patch generation β verification.
ReproForge executes a sophisticated multi-agent investigation flow:
Code Investigator + History Investigator
- Clones the repository into an isolated workspace.
- Detects the project's technology stack.
- Identifies the package manager and test runner.
- Maps the project structure and relevant files.
- Inspects repository history when useful for understanding the bug.
Test Investigator
- Runs the project's test suite.
- Establishes a baseline.
- Captures failing tests, stack traces, assertion errors, and relevant output.
- Identifies the specific failure that needs investigation.
Reproduction Agent
- Starts from the failing test.
- Resolves local imports and dependencies.
- Traces execution from the test into the relevant source files.
- Narrows the investigation down to the specific function and faulty code.
Fix Agent The relevant debugging context is minimized and provided to the AI provider:
- Failing test
- Test output
- Stack trace
- Relevant source code
- Repository context
The AIProvider, powered by Gemini/OpenAI, determines:
- The root cause of the failure.
- The faulty code.
- The required correction.
- A minimal patch to fix the issue.
Verification Agent
- Applies the proposed patch safely.
- Re-runs the relevant tests.
- Verifies that the original failure is resolved.
- Checks for regressions by running the test suite again.
The goal is not simply to generate a plausible fix, but to prove that the fix works through automated verification.
ReproForge is designed to autonomously clone, execute, reproduce, and verify bug fixes. To work seamlessly, target repositories must meet these requirements:
- Standard Root Manifest: The repository root must contain the project's build and dependency manifest (e.g.
package.jsonfor Node.js,pom.xmlorbuild.gradlefor Java, orpyproject.toml/pytest.inifor Python). - Runnable Test Suite: A configured test command (e.g.
npm testornpm run test) that fails predictably when the bug is present. - Single-Project Root (Not Polyglot Archives):
β οΈ Note on Polyglot Repositories (e.g.GildedRose-Refactoring-Kata): Repositories containing multiple language implementations in subdirectories (e.g.,/Java,/JavaScript,/Python,/Cpp) without a top-level build file cannot be automatically executed. ReproForge targets single-project repositories or sub-projects with a defined root runner.
- Node.js / TypeScript:
npm,yarn,pnpmwithnode --test(TAP 13),jest, orvitest. - Python:
pytest(pytest -v,python -m pytest -v). - Java: Maven (
mvn test -B) and Gradle (./gradlew test).
Use any of these repositories directly in the ReproForge input box:
| Repository URL | Tech Stack | Description | Execution Time |
|---|---|---|---|
https://github.com/PurveshShinde/calculator-bug |
Node.js (node:test) |
Minimal zero-dependency arithmetic bug test | ~5 seconds β‘ |
https://github.com/PurveshShinde/ReproForge-test |
Node.js (node:test) |
4-agent bug suite: Auth, Response Transformer, Router, Payments | ~30 seconds |
demo-repo/ (Included in repo) |
Node.js (node:test) |
Local mock payment gateway and checkout service | ~5 seconds |
If you want to test your own bug, create a minimal GitHub repository with:
package.json:{ "name": "bug-test", "type": "module", "scripts": { "test": "node --test" } }test/calculator.test.js:import test from 'node:test'; import assert from 'node:assert'; function divide(a, b) { return a * b; } // Bug: * instead of / test('divide 10 by 2 equals 5', () => { assert.strictEqual(divide(10, 2), 5); });
Because ReproForge clones repositories and installs dependencies at runtime, the backend incorporates multi-layered disk cleanup to ensure hosting environments (like Render's ephemeral storage) never run out of disk space:
- Immediate Workspace Teardown: As soon as an investigation completes (success, partial fix, or error),
cleanupWorkspace()deletes the cloned workspace and allnode_modulesfrom/tmp/reproforge/. - Automated Pre-Clone Pruning: Before every new git clone,
pruneStaleWorkspaces()sweeps the temporary directory and purges any abandoned directories older than 10 minutes. - Background Garbage Sweeper: A periodic timer runs every 10 minutes on the backend to guarantee zero disk accumulation even if a client disconnects unexpectedly or closes the browser tab.
The project is split into two main layers:
ReproForge/
βββ demo.mp4
βββ README.md
βββ backend/
β βββ src/
β β βββ agents/
β β β βββ investigationOrchestrator.ts
β β βββ events/
β β βββ services/
β β β βββ aiProvider.ts
β β β βββ gitService.ts
β β β βββ sourceResolver.ts
β β β βββ testRunner.ts
β β β βββ patchService.ts
β β β βββ verificationService.ts
β β βββ server.ts
β βββ package.json
β
βββ frontend/
βββ src/
β βββ components/
β βββ App.tsx
βββ package.json
- Node.js 18+
- npm
- A
GEMINI_API_KEYorOPENAI_API_KEYfor dynamic AI patch generation
git clone https://github.com/PurveshShinde/ReproForge.git
cd ReproForgecd backend
npm install
npm run devOpen another terminal:
cd frontend
npm install
npm run devThe frontend will be available at: http://localhost:5173
Enter a GitHub repository URL into the UI and start an investigation.
ReproForge is designed to remain functional even without an external AI API.
When GEMINI_API_KEY or OPENAI_API_KEY is configured, the AIProvider can use an LLM to perform root-cause analysis and generate patches.
If no API key is available, ReproForge falls back to its built-in mockAIPatch system.
The fallback uses dynamic string replacement and heuristic logic to simulate AI-assisted patch generation, allowing the investigation pipeline and demonstrations to run offline.
This makes the system useful for both:
- Live AI-powered investigations
- Offline demonstrations and testing
| Component | Responsibility |
|---|---|
| Code Investigator | Detects project structure, language, framework and test environment |
| History Investigator | Examines repository history and previous changes |
| Test Investigator | Executes tests and captures failures |
| Reproduction Agent | Traces failing tests to relevant source code |
| Fix Agent | Determines root cause and generates a patch |
| Verification Agent | Applies the patch and validates the fix |
| AIProvider | Interfaces with Gemini/OpenAI and fallback AI logic |
| Source Resolver | Resolves imports and follows source dependencies |
| Test Runner | Executes and analyzes test commands |
| Patch Service | Handles patch application and fallback patching |
| Git Service | Creates isolated repository workspaces |
GitHub Repository
β
βΌ
βββββββββββββββββββββ
β Code Investigator β
βββββββββββ¬ββββββββββ
β
βΌ
βββββββββββββββββββββ
β Test Investigator β
βββββββββββ¬ββββββββββ
β
Failing Tests
β
βΌ
βββββββββββββββββββββ
β Reproduction Agentβ
βββββββββββ¬ββββββββββ
β
Faulty Code
β
βΌ
βββββββββββββββββββββ
β Fix Agent β
β AIProvider β
βββββββββββ¬ββββββββββ
β
Patch
β
βΌ
βββββββββββββββββββββ
β Verification Agentβ
βββββββββββ¬ββββββββββ
β
βΌ
Tests Re-run
β β
PASS FAIL
β β
βΌ ββββΊ Further Investigation
Verified Fix
- π Autonomous bug investigation
- π§ͺ Automated test execution
- π§ Failure-to-source tracing
- π€ LLM-powered root-cause analysis
- π©Ή Automatic patch generation
- β Automated patch verification
- π Regression detection
- π‘ Real-time investigation events
- π GitHub repository support
- π Isolated repository workspaces
- π΄ Offline fallback AI simulation
- π Visual investigation graph
- π» Integrated code and terminal views
- React
- Vite
- TypeScript
- Tailwind CSS
- React Flow
- Monaco Editor
- Framer Motion
- Node.js
- Express
- TypeScript
- WebSockets
- Git
- Gemini / OpenAI API
Traditional debugging often requires a developer to manually:
Read the failure β reproduce the bug β trace the code β identify the root cause β write a fix β run tests β verify the fix.
ReproForge aims to automate this entire workflow.
Input: Repository + failing tests
Output: Root cause β Patch β Verified fix
The system is designed around one core principle:
"Don't just suggest a fix β reproduce the failure, patch the code, and verify that the fix actually works."
- Purvesh Shinde (@PurveshShinde) - Creator
- Aditi Arvind Sapkal (@Aditi040504) - Collaborator
ReproForge was built to tackle the repetitive and time-consuming process of debugging software bugs. This project serves as an open-source solution that leverages AI to act as a fully autonomous debugging engineer. It demonstrates the capabilities of multi-agent architectures and AI-driven code intelligence in resolving real-world programming issues efficiently. If you found this project helpful, please consider leaving a βοΈ on the repository!