Self-Correction for Modern DevOps Pipelines
Velo is an agentic AI system that autonomously detects, analyzes, and repairs broken CI/CD pipelines. Built for the RIFT 2026 Hackathon, it leverages Gemini 2.5 Flash and LangGraph to bridge the gap between βfailing testsβ and βproduction-ready fixes.β
- π Live Demo: https://velo-agent.vercel.app
- β Backend API: https://velo-agent-production.up.railway.app
- π₯ Demo Video: https://www.linkedin.com/posts/karan-mani-tripathi-b66bb530b_rift2026-pwioi-hackathon-activity-7430430470204698624-jbnH?utm_source=share&utm_medium=member_desktop&rcm=ACoAAE8Flz4B5bohrQYhsSE7P8R7Xgmct1uTkUs
- π» GitHub Repo: https://github.com/oyelurker/velo-agent
β οΈ Live Demo Notice Velo was developed as a semi-finalist project for the RIFT 2026 Hackathon. To maintain security best practices, the live agent and its associated API tokens will be officially deactivated on March 8, 2026.The codebase will remain fully open-source. If you'd like to test Velo, feel free to clone the repository, add your own API credentials, and run it locally!
Uses os.walk() to dynamically find all test files. No hardcoded paths.
Runs tests inside Docker containers:
python:3.11-slimnode:20-slimSubprocess fallback when Docker is unavailable.
Performs deep log analysis:
- Classifies exact bug type
- Generates targeted, minimal fixes
- Forks any public repository
- Applies fixes automatically
- Commits with
[AI-AGENT]prefix - Opens cross-fork Pull Request
Retries up to 5 times until all tests pass or retry limit is reached.
SSE-based real-time terminal showing the agent working live.
| Layer | Technology |
|---|---|
| Orchestration | LangGraph (StateGraph β 3 nodes) |
| LLM | Google Gemini 2.5 Flash |
| Backend | Python 3.11, Flask 3 |
| Frontend | React 19, Vite 7, Tailwind CSS 4 |
| State Management | React Context API |
| Infrastructure | Docker SDK, GitPython, GitHub REST API |
| Deployment | Railway (backend), Vercel (frontend) |
- Python 3.11+
- Node.js 20+
- Docker Desktop / Engine
- Google Gemini API Key
- GitHub Personal Access Token (repo scope)
git clone https://github.com/oyelurker/velo-agent.git
cd velo-agentcd backend
cp .env.example .env
# Fill GEMINI_API_KEY and GITHUB_TOKEN
pip install -r requirements.txt
python app.pycd frontend
cp .env.example .env
# Set VITE_API_URL=http://localhost:5000
npm install
npm run devGEMINI_API_KEY=your_gemini_api_key_here
GITHUB_TOKEN=ghp_your_bot_token_here
GIT_AUTHOR_NAME=velo-heal-bot
GIT_AUTHOR_EMAIL=bot@example.com
MAX_RETRIES=5
PORT=5000
FLASK_ENV=production
ALLOWED_ORIGINS=*VITE_API_URL=https://your-railway-url.up.railway.app- Open https://velo-agent.vercel.app
- Enter a GitHub repository URL with failing tests:
https://github.com/PTejasKr/velo_8_error
-
Enter:
- Team Name (e.g.,
Vakratund) - Leader Name (e.g.,
Tejas Kumar Punyap)
- Team Name (e.g.,
-
Click Run Analysis
The agent will:
-
Fork the repository
-
Discover tests using
os.walk() -
Run tests inside Docker sandbox
-
Send logs to Gemini 2.5 Flash
-
Apply fixes with
[AI-AGENT]commit -
Push to branch:
VAKRATUND_TEJAS_KUMAR_PUNYAP_AI_Fix -
Open a Pull Request automatically
Dashboard includes:
- Score breakdown
- Fixes table
- CI/CD timeline
- View PR button
| Bug Type | Description | Example |
|---|---|---|
LINTING |
Code style violations | Unused import os |
SYNTAX |
Parse errors | Missing colon after def |
LOGIC |
Incorrect logic | Wrong comparison operator |
TYPE_ERROR |
Type mismatches | Passing str where int expected |
IMPORT |
Import failures | Missing or circular imports |
INDENTATION |
Indentation errors | Mixed tabs and spaces |
LINTING error in src/utils.py line 15 β Fix: remove the import statement
SYNTAX error in src/validator.py line 8 β Fix: add the colon at the correct position
TEAM_NAME_LEADER_NAME_AI_Fix
| Team | Leader | Branch |
|---|---|---|
| Vakratund | Tejas Kumar Punyap | VAKRATUND_TEJAS_KUMAR_PUNYAP_AI_Fix |
| RIFT ORGANISERS | Saiyam Kumar | RIFT_ORGANISERS_SAIYAM_KUMAR_AI_Fix |
-
Repositories larger than 500MB may trigger Docker timeout (180s)
-
Public repositories only (private repos require collaborator token)
-
Optimized for:
- Python (
pytest,unittest) - JavaScript / TypeScript (
npm test)
- Python (
-
Railway does not support Docker-in-Docker; automatic subprocess fallback enabled
- Go to railway.app β New Project β Deploy from GitHub
- Set root directory to
backend - Add environment variables
- Verify endpoint:
GET /health β {"status": "ok"}
- Go to vercel.com β Add New Project
- Import repository
- Set root directory to
frontend - Add
VITE_API_URL - Deploy
| Name | Role |
|---|---|
| Tejas Kumar Punyap | Team Leader |
| Saurav Shankar | Developer |
| Karan Mani Tripathi | Developer |
