SYNC is a full-stack web application that orchestrates multiple AI agents to execute complex workflows in real-time. Break down goals into tasks, watch AI agents work through them live, and see results stream to your browser via WebSocket.
SYNC is a production-ready orchestration platform that:
- Plans workflows using Mistral (The Thinker) to break down user goals into actionable tasks.
- Executes tasks with a fleet of specialized AI agents (Coder, Tester, Debugger, Reviewer) powered by DeepSeek-Coder (The Builder) and Mistral.
- Streams everything live via Redis Pub/Sub → WebSocket to React frontend, with real-time model health monitoring.
- Persists data in PostgreSQL with real-time log aggregation and performance stats.
- Provides a polished UI with 5 feature-rich pages: Orchestration Dashboard, Workflows Kanban, Workflow Details (with Agent Output Drawers), Agent Fleet Monitor, and Node Builder.
Backend:
- FastAPI (async Python web framework)
- PostgreSQL (relational database)
- Redis (pub/sub messaging & caching)
- Ollama + Mistral (Thinker) & DeepSeek-Coder (Builder)
- SQLAlchemy (ORM)
Frontend:
- React 18 + TypeScript
- Zustand (state management)
- Axios (HTTP client)
- Vite (build tool)
- TailwindCSS (styling)
Infrastructure:
- Docker & Docker Compose
- Git for version control
User creates workflow
↓
Frontend sends POST /api/workflows
↓
Backend saves to PostgreSQL
↓
WebSocket broadcasts "workflow_created" event
↓
Frontend updates UI in real-time
↓
User clicks "Execute"
↓
Ollama/Mistral plans tasks (or fallback tasks)
↓
Tasks saved to PostgreSQL
↓
Real agents (Coder, Tester, Debugger, Reviewer) execute an E2E pipeline
↓
Each status update & skill call → Redis → WebSocket → Frontend
↓
User sees live progress, agent outputs, and model health
Install these before running SYNC:
- Ollama (download) — required for running the local agents.
- Run
ollama pull mistral:latestandollama pull deepseek-coder:6.7bbefore starting execution.
git clone https://github.com/Indrapal-70/Sync.git
cd Synccd infra
docker compose up -dWhat this starts:
- PostgreSQL on
localhost:5432 - Redis on
localhost:6379 - Ollama on
localhost:11434(with Mistral and DeepSeek-Coder models)
Verify all services are running:
docker compose pscd ../backendCreate virtual environment:
python -m venv venv
venv\Scripts\activate # Windows
# source venv/bin/activate # macOS/LinuxInstall dependencies:
pip install -r requirements.txtCreate .env file in backend/ directory:
DATABASE_URL=postgresql://sync_user:sync_pass@localhost:5432/sync_db
REDIS_URL=redis://localhost:6379
OLLAMA_BASE_URL=http://localhost:11434
OLLAMA_MODEL=mistral
APP_ENV=development
SECRET_KEY=your-secret-key-change-thisStart backend server:
uvicorn main:app --reload --port 8000You should see:
[SYNC] Starting up...
[SYNC] Database tables verified
[SYNC] Redis broadcaster started
Uvicorn running on http://0.0.0.0:8000
Visit http://localhost:8000/docs to see interactive API documentation.
cd ../frontendCreate .env file in frontend/ directory:
VITE_API_URL=http://localhost:8000
VITE_WS_URL=ws://localhost:8000Install dependencies:
npm installStart development server:
npm run devFrontend will be running at http://localhost:5173.
Navigate to http://localhost:5173
You should see:
- ✅ Green "Connected" indicator in sidebar (WebSocket live)
- Dashboard with workflow statistics
- Navigation menu with 5 pages
- Click "+ New Workflow" button
- Enter a name:
"Build REST API with Authentication" - Enter a description:
"Create a secure REST API with JWT auth, user management, and role-based access control" - Click Create
- Click the "Execute" button on the workflow card
- Watch the magic:
- ✨ Ollama/Mistral plans tasks from your description
- 📋 Tasks appear in the Kanban board
- 🔄 Real LLM agents execute a full Coder → Tester → Debugger → Reviewer pipeline
- 📊 DAG canvas shows real-time progress and live model health indicators
- 📝 Logs stream live to the log panel
- Orchestration Page: See system-wide stats and health
- Workflows Kanban: Drag and drop tasks between columns
- Workflow Details: View DAG graph and detailed logs
- Agent Fleet: See which agents are running and what they're working on
- Node Builder: Build custom workflows visually
Once execution completes:
- Workflow status changes to
completedorfailed - Task output data is stored and displayed
- Final logs show execution summary
- Workflow can be archived or re-executed
SYNC/
├── backend/ # FastAPI server
│ ├── app/
│ │ ├── core/ # Configuration & settings
│ │ ├── models/ # SQLAlchemy ORM models
│ │ ├── schemas/ # Pydantic request/response schemas
│ │ ├── routers/ # API endpoints
│ │ ├── services/ # Business logic
│ │ ├── agents/ # AI agent implementations
│ │ ├── websocket/ # WebSocket connection manager
│ │ └── database/ # DB session & initialization
│ ├── main.py # FastAPI app entry point
│ ├── requirements.txt # Python dependencies
│ ├── .env # Environment variables
│ └── venv/ # Python virtual environment
│
├── frontend/ # React + TypeScript app
│ ├── src/
│ │ ├── pages/ # Feature pages (5 main pages)
│ │ ├── components/ # Reusable React components
│ │ ├── services/ # API & WebSocket services
│ │ ├── store/ # Zustand state management
│ │ ├── websocket/ # WebSocket hook
│ │ ├── types/ # TypeScript interfaces
│ │ ├── hooks/ # Custom React hooks
│ │ └── lib/ # Utilities & helpers
│ ├── index.html # HTML entry point
│ ├── package.json # Node dependencies
│ ├── .env # Environment variables
│ └── vite.config.ts # Vite configuration
│
├── infra/ # Docker infrastructure
│ └── docker-compose.yml # PostgreSQL, Redis, Ollama
│
└── README.md # This file
POST /api/workflows # Create workflow
GET /api/workflows # List all workflows
GET /api/workflows/{id} # Get workflow details
PATCH /api/workflows/{id} # Update workflow
DELETE /api/workflows/{id} # Delete workflow
POST /api/workflows/{id}/execute # Execute workflow (start agent loop)
POST /api/tasks # Create task
GET /api/tasks # List tasks (filter by workflow_id)
GET /api/tasks/{id} # Get task details
PATCH /api/tasks/{id} # Update task status
DELETE /api/tasks/{id} # Delete task
GET /api/logs # List logs (filter by workflow_id, limit)
POST /api/logs # Create log entry
WS /ws/{client_id} # Real-time event stream
SYNC uses Redis Pub/Sub to broadcast events to all connected clients:
workflow_created— New workflow createdworkflow_updated— Workflow status changed (pending → running → completed/failed)workflow_deleted— Workflow removedtask_created— New task in workflowtask_updated— Task status changed (pending → running → completed/failed)task_deleted— Task removedlog_created— New log entryagent_status_changed— Agent state update
Each event has:
{
"event": "workflow_updated",
"payload": { "id": "...", "status": "running" },
"timestamp": "2026-05-17T10:30:00.000Z"
}# Terminal with backend running
# Create workflow via curl
curl -X POST http://localhost:8000/api/workflows \
-H "Content-Type: application/json" \
-d '{"name":"Test Workflow","description":"Testing SYNC"}'
# Should return workflow JSON with status="pending"- Open http://localhost:5173
- Open browser DevTools (F12)
- Go to Console
- Should see:
[WS] Connected - Create a workflow in the UI
- Console should log incoming WebSocket event
- Create workflow: "Build a Python CLI tool for file processing"
- Execute it
- Watch:
- ✅ Tasks appear (3-6 generated by Mistral)
- ✅ Each task progresses through running → completed/failed
- ✅ Logs fill with real-time entries
- ✅ DAG canvas updates without page refresh
- ✅ Final status shows when complete
- Ensure Ollama is running:
docker compose ps - Create workflow with detailed description
- Execute
- Check if tasks are intelligent (from Mistral) or fallback (generic 3 tasks)
Solution:
docker compose down
docker compose up -d
docker compose logsSolution: Verify .env has correct DATABASE_URL:
DATABASE_URL=postgresql://sync_user:sync_pass@localhost:5432/sync_db
Wait 10 seconds after docker compose up (DB needs to initialize).
Solution:
- Verify backend is running on port 8000
- Check frontend
.envhasVITE_WS_URL=ws://localhost:8000 - Refresh browser
Solution:
- Check Ollama is running:
curl http://localhost:11434/api/tags - If Ollama fails, fallback tasks should still be created (3 default tasks)
- Check backend logs for errors
id (UUID) Primary key
name (String) Workflow name
description (Text) Optional description
status (String) pending | running | completed | failed
created_at (Time) Timestamp
updated_at (Time) Timestamp
id (UUID) Primary key
workflow_id (UUID) Foreign key to workflows
name (String) Task name
description (Text) Task description
status (String) pending | running | completed | failed
agent_name (String) Which agent handles this task
input_data (JSON) Task input parameters
output_data (JSON) Task result/output
created_at (Time) Timestamp
updated_at (Time) Timestamp
id (UUID) Primary key
workflow_id (UUID) Foreign key to workflows
task_id (UUID) Optional task reference
level (String) info | warning | error | debug
message (Text) Log message
created_at (Time) Timestamp
- System health overview
- Workflow statistics (count by status)
- Recent alerts and warnings
- Quick-start workflow creation
- Kanban board with columns: Pending → Running → Completed → Failed
- Drag-and-drop tasks between columns
- Execute button on each workflow card
- Real-time status updates
- Directed Acyclic Graph (DAG) of tasks
- Live progress visualization
- Node Builder UI and Detailed Task Information Drawer (with specific Agent outputs and model usage summary)
- Real-time log stream with filtering
- View active agents running tasks
- CPU/RAM usage per agent
- Current task assignment
- Agent type badges (programmer, tester, researcher, etc.)
- React Flow canvas for building workflows
- Add/remove task nodes
- Connect tasks with edges
- Preview execution flow
1. User creates workflow with description
↓
2. Workflow saved to DB (status="pending")
↓
3. User clicks Execute
↓
4. Backend calls Ollama/Mistral to plan tasks
↓
5. Tasks created in DB (status="pending")
↓
6. Pipeline Orchestrator routes task to the Coder Agent
↓
7. For each task:
a. Status changes to "running"
b. Agent Pipeline Executes: Coder → Tester → (if failed) Debugger → Reviewer
c. Real Python code generation, execution, and review via local LLMs
d. Status changes to "completed" or "failed"
e. Agent outputs and model usage summaries stored
↓
8. All task updates stream via WebSocket
↓
9. Frontend updates in real-time (no refresh needed)
↓
10. Workflow completes (all tasks done)
↓
11. Final status: "completed" or "failed"
For production deployment:
-
Environment variables:
APP_ENV=production SECRET_KEY=<generate-strong-random-key> DATABASE_URL=<production-db-url> REDIS_URL=<production-redis-url>
-
Build frontend:
cd frontend npm run build -
Run backend with Gunicorn:
pip install gunicorn gunicorn main:app --workers 4 --worker-class uvicorn.workers.UvicornWorker --bind 0.0.0.0:8000
-
Use nginx as reverse proxy for frontend static files
-
Enable HTTPS with Let's Encrypt SSL certificate
cd backend
pytest tests/# Backend
black app/
flake8 app/
# Frontend
npm run lint
npm run format# Frontend
npm run build
# Backend
# Use gunicorn (see Deployment section)We welcome contributions! Here's how:
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Make changes and test locally
- Commit:
git commit -m "feat: add amazing feature" - Push:
git push origin feature/amazing-feature - Open a Pull Request
This project is licensed under the MIT License — see LICENSE file for details.
- 📖 Full API Docs: http://localhost:8000/docs (when backend is running)
- 🐛 Report Issues: GitHub Issues
- 💡 Feature Requests: GitHub Discussions
- ✅ Real AI agent pipeline (Coder, Tester, Debugger, Reviewer) using Dual-Model architecture (Mistral & DeepSeek-Coder).
- ✅ Real-time WebSocket model health and active skill routing visualization.
- ✅ E2E Pipeline Orchestrator with skill-based model routing.
- ✅ Custom visual design, including new Node Detail drawers with real agent outputs.
- Add workflow templating and presets
- Implement task retry logic with exponential backoff
- Add workflow scheduling (cron jobs)
- Multi-user support with authentication
SYNC v1.0.0 — Real-Time Multi-Agent Orchestration