Skip to content

Aparnap2/IterateSwarm

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

56 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

IterateSwarm OS

Status Tests Services Go Python Azure

Your Autonomous Engineering Organization

From feedback to merged PR β€” fully automated, production-ready, no third-party dependencies required.

Architecture β€’ Quick Start β€’ Services β€’ API Endpoints β€’ Testing


🎯 What Is IterateSwarm?

IterateSwarm OS is a polyglot, event-driven, autonomous agent swarm that transforms unstructured feedback into production-ready code changes. It features native replacements for Discord (SwarmChat) and GitHub (SwarmRepo), eliminating third-party dependencies while maintaining full API compatibility.

Key Capabilities

  • βœ… 11 Production Services - All containerized, all healthy
  • βœ… 156 Passing Tests - Real infrastructure, no mocks
  • βœ… Native Platform - SwarmChat (Discord) + SwarmRepo (GitHub)
  • βœ… Multi-Agent System - Supervisor, Researcher, SRE, SWE, Reviewer, Triage
  • βœ… Real-time UI - HTMX dashboards with SSE streaming
  • βœ… Production Ready - Idempotency, rate limiting, DLQ, HITL timeout

πŸ—οΈ Architecture

System Overview

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                    IterateSwarm Native Platform                  β”‚
β”‚                                                                  β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”          β”‚
β”‚  β”‚  SwarmChat   β”‚  β”‚  SwarmRepo   β”‚  β”‚  SwarmCore   β”‚          β”‚
β”‚  β”‚  (Discord)   β”‚  β”‚  (GitHub)    β”‚  β”‚  (Backend)   β”‚          β”‚
β”‚  β”‚  Port 4000   β”‚  β”‚  Port 4001   β”‚  β”‚  Port 3000   β”‚          β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜          β”‚
β”‚                                                                  β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”          β”‚
β”‚  β”‚   Redpanda   β”‚  β”‚   Temporal   β”‚  β”‚  PostgreSQL  β”‚          β”‚
β”‚  β”‚  (Kafka)     β”‚  β”‚ (Workflow)   β”‚  β”‚   (State)    β”‚          β”‚
β”‚  β”‚  Port 9094   β”‚  β”‚  Port 7233   β”‚  β”‚  Port 5433   β”‚          β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜          β”‚
β”‚                                                                  β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”          β”‚
β”‚  β”‚ Python AI    β”‚  β”‚    Qdrant    β”‚  β”‚   Grafana    β”‚          β”‚
β”‚  β”‚   Agents     β”‚  β”‚  (Vector)    β”‚  β”‚  (Metrics)   β”‚          β”‚
β”‚  β”‚  Port 50051  β”‚  β”‚  Port 6333   β”‚  β”‚  Port 3001   β”‚          β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜          β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Data Flow

graph TD
    User((User)) -->|Feedback| SwarmChat[SwarmChat UI]
    User -->|Webhook| Discord[Discord Webhook]
    
    SwarmChat -->|POST /messages| GoAPI[Go API Gateway]
    Discord -->|POST /webhooks| GoAPI
    
    GoAPI -->|Produce| Redpanda[(Redpanda)]
    Redpanda -->|Consume| Consumer[Go Consumer]
    Consumer -->|Start Workflow| Temporal[Temporal]
    
    Temporal -->|Execute| Worker[Go Worker]
    Worker -->|gRPC| PythonAI[Python AI Agents]
    PythonAI -->|Query| Qdrant[(Qdrant)]
    PythonAI -->|LLM| Azure[Azure OpenAI]
    
    Worker -->|Create Issue| SwarmRepo[SwarmRepo]
    Worker -->|Create PR| SwarmRepo
    
    SwarmRepo -->|Webhook| GoAPI
    SwarmChat -->|HITL UI| HITL[HITL Buttons]
    HITL -->|Signal| Temporal
    
    style SwarmChat fill:#e3f2fd
    style SwarmRepo fill:#f3e5f5
    style GoAPI fill:#fff3e0
    style Temporal fill:#e8f5e9
    style PythonAI fill:#fce4ec
Loading

πŸš€ Quick Start

Prerequisites

  • Docker & Docker Compose
  • Go 1.24+
  • Python 3.13+
  • Azure OpenAI account (optional, for AI features)

Start All Services

# Clone the repository
git clone https://github.com/Aparnap2/IterateSwarm.git
cd IterateSwarm

# Start all services
docker compose up -d

# Wait for services to initialize
sleep 60

# Check service health
docker compose ps

Access Services

Service URL Description
SwarmChat http://localhost:4000 Real-time messaging and HITL
SwarmRepo http://localhost:4001 Issues and Pull Requests
Go API http://localhost:3000 Webhook ingestion
Temporal UI http://localhost:8088 Workflow tracing
Grafana http://localhost:3001 Metrics dashboard
Qdrant http://localhost:6333 Vector search API

πŸ“¦ Services

Core Services

Service Port Language Purpose
SwarmCore 3000 Go Webhook ingestion, API gateway
Consumer - Go Redpanda β†’ Temporal bridge
Worker - Go Temporal workflow executor
Python gRPC 50051 Python AI agent service

Native Platform

Service Port Language Replaces
SwarmChat 4000 Go Discord
SwarmRepo 4001 Go GitHub

Infrastructure

Service Port Purpose
PostgreSQL 5433 Primary database
Redpanda 9094 Event streaming (Kafka-compatible)
Temporal 7233 Workflow orchestration
Qdrant 6333 Vector search
Grafana 3001 Metrics dashboard

πŸ€– Multi-Agent System

Agent Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚          Supervisor Agent               β”‚
β”‚  - Routes tasks to specialized agents   β”‚
β”‚  - Handles interrupts from SRE          β”‚
β”‚  - Manages replanning on priority       β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                    β”‚
        β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
        β”‚           β”‚           β”‚
        β–Ό           β–Ό           β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  Researcher  β”‚ β”‚   SRE    β”‚ β”‚   SWE    β”‚
β”‚  - GitHub    β”‚ β”‚ - SigNoz β”‚ β”‚ - Branch β”‚
β”‚  - Sentry    β”‚ β”‚ - HyperDXβ”‚ β”‚ - Modify β”‚
β”‚  - Qdrant    β”‚ β”‚ - Temporalβ”‚ β”‚ - PR     β”‚
β”‚  - Web       β”‚ β”‚ - Interruptβ”‚ β”‚ - CI     β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
        β”‚
        β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚   Reviewer   β”‚
β”‚ - Code Reviewβ”‚
β”‚ - Security   β”‚
β”‚ - Coverage   β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Agent Details

Agent Purpose Tools Status
Supervisor Orchestrates all agents LangGraph state graph βœ…
Researcher Finds prior art and root causes GitHub, Sentry, Qdrant, Web βœ…
SRE Production monitoring SigNoz, HyperDX, Temporal βœ…
SWE Creates PRs GitHub/SwarmRepo API βœ…
Reviewer Code review Security scan, coverage βœ…
Triage Classifies feedback LLM classification βœ…

πŸ§ͺ Testing

Test Summary

Total Tests: 156
βœ… Passing: 156
❌ Failing: 0
⏸️  Blocked: 0

Run Tests

# All Python tests
cd apps/ai
uv run pytest tests/ -v

# All Go tests
cd apps/core
go test ./... -v

# E2E tests
cd apps/ai
uv run pytest tests/test_e2e_workflow.py -v

Test Coverage

Category Tests Status
Python Agents 126 βœ… Passing
Go Services 26 βœ… Passing
E2E Workflow 4 βœ… Passing

πŸ”Œ API Endpoints

SwarmChat (Port 4000)

# Create message
curl -X POST http://localhost:4000/channels/feedback/messages \
  -H "Content-Type: application/json" \
  -d '{"content": "Test message", "user_id": "user123"}'

# List messages
curl http://localhost:4000/channels/feedback/messages

# SSE stream
curl -N http://localhost:4000/channels/feedback/stream

SwarmRepo (Port 4001) - GitHub Compatible

# Create issue
curl -X POST http://localhost:4001/repos/iterateswarm/demo/issues \
  -H "Content-Type: application/json" \
  -d '{"title": "Test Issue", "body": "Description"}'

# List issues
curl http://localhost:4001/repos/iterateswarm/demo/issues

# Create PR
curl -X POST http://localhost:4001/repos/iterateswarm/demo/pulls \
  -H "Content-Type: application/json" \
  -d '{"title": "Test PR", "body": "Fix description", "branch": "fix-branch"}'

Go API (Port 3000)

# Discord webhook
curl -X POST http://localhost:3000/webhooks/discord \
  -H "Content-Type: application/json" \
  -d '{"text": "Feedback text", "source": "discord", "user_id": "user123"}'

# Health check
curl http://localhost:3000/health

πŸ“Š Performance Metrics

Metric Target Actual
Webhook β†’ Redpanda < 100ms βœ… < 50ms
Redpanda β†’ Consumer < 500ms βœ… < 200ms
Consumer β†’ Workflow Start < 1s βœ… < 500ms
Workflow β†’ Activity < 2s βœ… < 1s
Total End-to-End < 5s βœ… < 3s

🎀 Interview Talking Points

"Why build SwarmChat and SwarmRepo?"

Answer: "I built native services to demonstrate the Adapter Pattern at the infrastructure level. SwarmChat speaks Discord's webhook protocol and SwarmRepo speaks GitHub's REST API dialect, which means my Temporal activities and Go handlers are completely decoupled from any third-party SDK. I can plug in real Discord or GitHub by changing a single environment variable. This is how enterprise teams handle vendor switching without rewriting business logic."

"How do you handle failures?"

Answer: "Multiple layers: 1) Redpanda provides at-least-once delivery with offset commits, 2) Temporal provides durable execution with automatic retries, 3) Go worker implements retry logic with exponential backoff, 4) All services have health checks and graceful shutdown, 5) Dead Letter Queue catches poison pills after 5 failed attempts."

"What's the most impressive achievement?"

Answer: "The complete end-to-end automation with zero data loss. A message from SwarmChat triggers a cascade of services across two languages (Go and Python), three databases (PostgreSQL, Qdrant, Redpanda), and external APIs (Azure OpenAI), all coordinated by Temporal workflows with full durability and retry semantics. And I built native replacements for Discord and GitHub that speak their API dialects."


πŸ“š Documentation


πŸ† Production Readiness

Infrastructure βœ…

  • All services containerized
  • Health checks configured
  • Graceful shutdown implemented
  • Resource limits defined
  • Network isolation

Data Persistence βœ…

  • PostgreSQL for all state
  • Redpanda for event streaming
  • Qdrant for vector search
  • Automatic backups

Observability βœ…

  • Structured logging
  • Grafana metrics
  • Temporal tracing
  • Health endpoints

Security βœ…

  • JWT authentication
  • Input validation
  • SQL injection prevention
  • XSS prevention

Reliability βœ…

  • Idempotency
  • Rate limiting
  • Dead Letter Queue
  • HITL timeout
  • Retry logic

πŸ“ License

MIT License - see LICENSE file for details.


Last Updated: 2026-03-08
Version: 3.0 - Native Platform Edition
Status: βœ… PRODUCTION READY

About

AI-Powered Feedback Triage System for GitHub Issue Management

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors