Home
Softono
copilot-coding-agent-orchestrator

copilot-coding-agent-orchestrator

Open source MIT Python
16
Stars
7
Forks
1
Issues
1
Watchers
4 months
Last Commit

About copilot-coding-agent-orchestrator

A Streamlit web application to manage and automate GitHub Copilot development workflows

Platforms

Web Self-hosted

Languages

Python

Links

Swaibian Logo

πŸš€ Swaibian Agentic Pipeline

Autonomous AI-powered development workflows with GitHub Copilot

Features β€’ Quick Start β€’ How It Works β€’ Configuration β€’ Contributing

Python 3.9+ License: MIT PRs Welcome GitHub Stars


✨ Features

  • πŸ”§ Setup Wizard - Easy first-time configuration with guided setup
  • πŸ“‹ Queue Management - View, reorder, add, and remove issues from the development queue
  • πŸ”„ Real-time Monitoring - Live status of all issues and PRs with workflow history
  • πŸ€– Autonomous Pipeline - Start/stop automated workflow processing
  • ⏱️ Smart Cooldowns - Rate-limit issue assignments (configurable)
  • πŸ“ Agent Instructions - Automatically include implementation guidelines
  • πŸ”Œ MCP Integration - Uses GitHub's official MCP Server for Copilot assignment
  • ✨ Auto-Apply Changes - Detects Copilot reviews and triggers change application

πŸš€ Quick Start

1. Start the Application

./start.sh

This will:

  • Create a virtual environment (first run only)
  • Install dependencies
  • Start the Streamlit server at http://localhost:8642

2. Run the Setup Wizard

On first launch, you'll be guided through a 5-step setup wizard:

  1. GitHub Token - Enter your Personal Access Token
  2. Repository - Select which repository to automate
  3. Issues - Choose which issues to add to the queue
  4. Configure - Set automation preferences (cooldown, auto-merge, etc.)
  5. Complete - Review and start using the pipeline

3. Token Requirements

Your GitHub Personal Access Token needs these permissions:

  • repo (full control of private repositories)
  • workflow (if you need to trigger workflows)
  • GitHub Copilot subscription (for issue assignment)

βš™οΈ How It Works

The Automation Loop

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  Copilot wants  β”‚ ──► β”‚ Auto-reassign    β”‚ ──► β”‚ Copilot reviews β”‚
β”‚  your review    β”‚     β”‚ review to Copilotβ”‚     β”‚ and suggests    β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜     β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜     β””β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                                          β”‚
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚   Start next    β”‚ ◄── β”‚   Auto-merge     β”‚ ◄── β”‚ Auto-apply      β”‚
β”‚   issue         β”‚     β”‚   approved PR    β”‚     β”‚ changes         β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜     β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜     β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

When the pipeline is running, it polls at regular intervals and:

  1. When Copilot requests your review β†’ Auto-reassign review to Copilot
  2. When Copilot suggests changes β†’ Auto-comment "@copilot apply changes"
  3. When PR is approved β†’ Auto-merge into target branch
  4. When PR is merged β†’ Wait for cooldown, then assign next issue

Cooldown System

To prevent overwhelming the system, there's a configurable cooldown between issue assignments:

  • Cooldown triggers after a PR is merged (not when assigned)
  • Other actions (review reassignment, applying changes, merging) have no cooldown
  • Adjustable in the UI Settings

πŸ“ Project Structure

copilot-coding-agent-orchestrator/
β”œβ”€β”€ src/                      # Source code
β”‚   β”œβ”€β”€ app.py                # Streamlit dashboard
β”‚   β”œβ”€β”€ setup_wizard.py       # First-time setup
β”‚   β”œβ”€β”€ daemon.py             # Background daemon
β”‚   β”œβ”€β”€ automation_engine.py  # Core automation logic
β”‚   β”œβ”€β”€ github_client.py      # GitHub API client
β”‚   └── mcp_client.py         # MCP protocol client
β”œβ”€β”€ assets/                   # Branding assets
β”‚   β”œβ”€β”€ swaibian_white.png
β”‚   β”œβ”€β”€ swaibian_Avatar_white.png
β”‚   └── thankyou.jpg
β”œβ”€β”€ .github/                  # GitHub templates
β”‚   β”œβ”€β”€ CODEOWNERS
β”‚   β”œβ”€β”€ CONTRIBUTING.md
β”‚   β”œβ”€β”€ ISSUE_TEMPLATE/
β”‚   └── PULL_REQUEST_TEMPLATE.md
β”œβ”€β”€ config.example.yaml       # Example configuration
β”œβ”€β”€ .env.example              # Example environment
β”œβ”€β”€ requirements.txt          # Python dependencies
β”œβ”€β”€ start.sh                  # Start script
β”œβ”€β”€ LICENSE                   # MIT License
└── README.md                 # This file

πŸ”§ Configuration

After running the setup wizard, your config.yaml will be generated:

github:
  owner: YourUsername
  repo: YourRepo
  target_branch: main

automation:
  poll_interval: 60          # seconds between checks
  auto_merge: true           # auto-merge approved PRs
  auto_assign_next: true     # auto-assign next issue after merge
  cooldown_minutes: 60       # minimum time between assignments

agent_instructions: |
  Your custom implementation instructions...

issue_queue:
  - ISSUE-1
  - ISSUE-2

πŸ–₯️ CLI Usage

Control the daemon directly from the command line:

# Start daemon
python src/daemon.py start

# Stop daemon
python src/daemon.py stop

# Check status
python src/daemon.py status

# Run automation once
python src/automation_engine.py --once

MCP Client

# List available tools
python src/mcp_client.py list-tools

# Assign Copilot to an issue
python src/mcp_client.py assign OWNER REPO ISSUE_NUMBER

🀝 Contributing

Contributions are welcome! Please read our Contributing Guide first.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add: amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

πŸ”’ Security

Some files are protected and require owner approval to modify:

  • assets/** - Branding and logos
  • README.md - Documentation
  • LICENSE - License file

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

πŸ™ Support

If you find this project helpful, consider:

Star on GitHub

Thank You


Made with ❀️ by Swaibian