swarm-orchestrator
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@swarm-orchestratorrun a batch of 10 translation tasks in parallel and log results"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
⚡ SwarmOrchestrator
Birden fazla AI modelini eşzamanlı çalıştıran, hata toleranslı çoklu ajan orkestrasyon motoru.
SwarmOrchestrator, yerel OpenAI uyumlu router'ınız (9Router / LiteLLM / OpenRouter, varsayılan http://localhost:20128/v1) veya kalıcı Antigravity CLI (agy) alt süreci üzerinden bir görev listesini sınırlı eşzamanlılıkla koşturur. Sonuçları tipli modellerle döner, isteğe bağlı olarak diske yazar ve her batch'i JSON olarak loglar. Antigravity ve diğer MCP istemcileri için 6 MCP aracı sunar.
Durum: Erken sürüm. Motor, sağlayıcı fabrikası, retry/backoff, iptal, maliyet/gecikme logu, sanitizasyon, CLI ve MCP araçları kod olarak mevcuttur; offline testler bu mantığı doğrular. Canlı 9Router koşusu bu repoda doğrulanmamıştır — router erişilebilirliği ortama bağlıdır. Gerçek ağ davranışı yalnızca router açıkken
python tests/test_agy_provider.pyile görülebilir.
🏛️ Mimari Şema
┌────────────────────────┐
│ Antigravity / User │
└───────────┬────────────┘
│
(Tasks / Batches)
▼
┌─────────────────────────┐
│ SwarmEngine (Core) │
│ - Asyncio Semaphore │
│ - Retry + Backoff │
│ - Run Logger │
└────────────┬────────────┘
│
┌──────────────────────┼──────────────────────┐
▼ ▼ ▼
┌───────────────┐ ┌───────────────┐ ┌───────────────┐
│ Worker #1 │ │ Worker #2 │ │ Worker #N │
└───────┬───────┘ └───────┬───────┘ └───────┬───────┘
│ │ │
└──────────────────────┼──────────────────────┘
▼
┌─────────────────────────┐
│ Provider (fabrika) │
│ AsyncRouterClient │
│ veya AGYSession │
└─────────────────────────┘Eşzamanlılık asyncio.Semaphore ile sınırlanır (MAX_CONCURRENT_WORKERS, varsayılan 8). Her worker bağımsız çalışır; bir görevin hatası diğerlerini durdurmaz.
Related MCP server: agent-pool-mcp
🚀 Hızlı Başlangıç
1. Ortam Değişkenleri (.env)
Proje kökündeki .env.example dosyasını .env olarak kopyalayıp doldurun:
Copy-Item .env.example .envLOCAL_ROUTER_BASE_URL=http://localhost:20128/v1
LOCAL_ROUTER_API_KEY=your_local_key_here
DEFAULT_MODEL=all
FALLBACK_MODEL=ag/gemini-3.7-flash-medium
MAX_CONCURRENT_WORKERS=8
REQUEST_TIMEOUT_SECONDS=150
MAX_RETRIES=3
RETRY_DELAY_SECONDS=2
TASK_TIMEOUT_SECONDS=0
BATCH_TIMEOUT_SECONDS=0
SAVE_RUN_LOGS=true
RUNS_DIR=./runs
METRICS_LOG=./runs/metrics.jsonl.env asla commit edilmez (bkz. .gitignore).
2. Bağımlılıklar
pip install -r requirements.txtasyncio listedelenmez: stdlib modülüdür (3.4+) ve PyPI'daki asyncio paketi
Python 3.4'ten eski sürümler içindir — kurulursa stdlib'i gölgeler ve projedeki
tüm import asyncio ifadelerini kırar.
3. Kalite kapısı (offline)
python -m ruff check . # statik kontrol
python -m pytest # 134 offline test, ağ veya router gerekmeztests/ altındaki testlerin tamamı sahte (fake) istemci kullanır ve
conftest.py herhangi bir bağlantı denemesini hata olarak işaretler. Canlı
altyapı gerektiren tek dosya tests/test_agy_provider.py'dır; bu dosya pytest
tarafından toplanmaz, doğrudan çalıştırılır (bkz. AGENTS.md).
💻 Kullanım Yöntemleri
Yöntem A: MCP Sunucusu (önerilen)
mcp/server.py bir FastMCP sunucusudur. Antigravity veya MCP istemcinizin yapılandırmasına ekleyin:
{
"mcpServers": {
"swarm-orchestrator": {
"command": "python",
"args": ["C:/Users/<you>/Desktop/GitHub/Public/SwarmOrchestrator/mcp/server.py"],
"env": {
"PYTHONPATH": "C:/Users/<you>/Desktop/GitHub/Public/SwarmOrchestrator"
}
}
}
}args ve PYTHONPATH bu deponun köküne işaret etmelidir. Sunucu, çalışma dizininden bağımsız olarak proje kökünü sys.path'e kendisi ekler.
Yöntem B: Python API'si
import asyncio
from core.swarm_engine import SwarmEngine
from core.task_models import SwarmTask
async def main():
tasks = [
SwarmTask(
id="t1",
title="Örnek",
system_prompt="You are a precise assistant.",
user_prompt="Reply with exactly: OK",
)
]
summary = await SwarmEngine(max_workers=4).run_batch(tasks=tasks)
print(summary.completed_tasks, "/", summary.total_tasks)
asyncio.run(main())Yöntem C: Hazır iş akışları
from pathlib import Path
from workflows.translation_workflow import TranslationWorkflow
workflow = TranslationWorkflow() # use_cache=True varsayılan
summary = await workflow.execute(files=[Path("ornek.tsx")])workflows/ altında iki hazır akış vardır:
İş akışı | Sınıf | Rol |
|
| Dosyaları teknik İngilizceye çevirme; hash tabanlı cache ile atlama |
|
| Serbest görev tanımlarından batch üretme |
base_workflow.py içindeki BaseWorkflow, prepare_tasks() uygulanmasını bekleyen soyut şablondur.
Yöntem D: CLI. Terminalden çalıştırmak için
cli.pykullanılır (aşağıya bakın).
🖥️ CLI
cli.py hiçbir yol sabitlemez; tüm dizinler argümandır.
Komut | İşlev |
| Bir dizindeki dosyaları çevirir, |
| JSON görev listesini paralel koşar, görev başına dosya yazar |
| Router'daki canlı model kimliklerini ve eşleşen fiyatı listeler |
| Etkin yapılandırmayı yazar (API anahtarı gösterilmez) |
| MCP sunucusunu bu depodan başlatır |
# Klasör çevirisi (önce --dry-run ile planı görün)
python cli.py translate -i .\src\pages -o .\locales\en\pages --dry-run
python cli.py translate -i .\src\pages -o .\locales\en\pages -c 8
# JSON görev listesi
python cli.py run -t .\tasks.json -o .\out -c 4 --provider agy
# Belirli görevleri hiç çalıştırmadan atla (per-task cancel)
python cli.py run -t .\tasks.json --cancel task_3 --cancel task_7Çeviri komutu mevcut çıktıları otomatik atlar (--force ile hepsini yeniden
çevirir), içerik hash'ine dayalı cache'i kullanır ve başarılı dosyalardan sonra
cache'i günceller. run_page_translations.py artık bu komutun ince bir sarmalayıcısıdır:
python run_page_translations.py --input <kaynak> --output <hedef>Maliyet ve gecikme raporu
Her batch sonrası terminalde özet, ayrıca runs/metrics.jsonl içine batch başına
tek satır yazılır (gecikme yüzdilleri, token sayıları, görev başına maliyet):
batch translate_1 @ 2026-09-27T09:04:44
tasks : 2 total | 2 completed | 0 failed | 0 cancelled
wall clock : 0.02s
provider : mean 0.01s | p50 0.01s | p95 0.01s | max 0.01s
per task : mean 0.02s | p50 0.02s | p95 0.02s
tokens : 300 (in 200 / out 100)
cost : $0.0000 (incomplete: no rate configured for all)Maliyet dürüstlüğü: Bu proje fiyat listesi taşımaz.
MODEL_PRICING_JSONtanımlanmadancost$0.0000 (incomplete) olarak raporlanır — ücretsiz olduğu anlamına gelmez. Fiyat girdisi:MODEL_PRICING_JSON='{"paid/":{"input":3.0,"output":15.0}}'Token sayıları router
usagealanı döndürürse dolar (bkz.REQUEST_STREAM_USAGE).
İptal (cancel) davranışı
Tetik | Etki |
| Uçuşta olan tüm görevler iptal edilir; batch özeti yine yazdırılır |
| Belirtilen görev hiç sağlayıcıya ulaşmaz |
| Tek görev bütçesi; aşan görev başarısız olur, diğerleri sürer |
| Batch bütçesi; bitmeyen görevler iptal edilir |
| Yeni deneme başlatılmaz; uçuşta olan deneme tamamlanır |
İptal edilen görev cancelled durumuna geçer ve tek başına batch'i düşürmez.
🧰 MCP Araçları
mcp/server.py aşağıdaki araçları sunar:
Araç | İşlev |
| Router'dan canlı model kimliklerini ve varsayılan komboyu döner |
| Modelleri yeteneklere göre inceler (tools / reasoning / vision / context) ve filtreler |
| Router bağlantısını ve gecikmeyi ölçer; sağlayıcı dağılımını raporlar |
|
|
| Tek görevi görev tipine göre model seçerek koşar; başarısızlıkta fallback |
| Görev listesini eşzamanlı koşturur; |
Örnek: MCP istemcisinden "Şu 40 dosyayı 8 eşzamanlı worker ile çevir" dediğinizde ajan run_swarm_batch aracını çağırır.
🔀 Sağlayıcılar
core/client.py içindeki get_ai_client(provider=...) bir fabrikadır:
| Dönen istemci | Davranış |
|
| HTTP; streaming yanıtları toleranslı biçimde ayrıştırır |
|
| Kalıcı |
AGYSession bir singleton'dır: asyncio.Lock ile istekleri sıraya alır, izole bir geçici dizinde (tempfile.mkdtemp) çalışır ve --dangerously-skip-permissions kullanmaz.
Eşzamanlılık uyarısı:
run_swarm_batchiçindeprovider="agy"seçerseniz,concurrencyparametresi ne olursa olsun gerçek paralellik 1'dir. Yüksek paralellik için router sağlayıcısını kullanın.
📂 Proje Yapısı
SwarmOrchestrator/
├── cli.py # Terminal arayüzü: translate / run / models / info / serve
├── config/
│ └── settings.py # Pydantic tabanlı merkezi ayarlar
├── core/
│ ├── client.py # Async HTTP istemcisi + sağlayıcı fabrikası
│ ├── agy_session.py # Kalıcı Antigravity CLI (agy) oturumu
│ ├── worker.py # Görev yaşam döngüsü, adaptif timeout, retry, iptal
│ ├── swarm_engine.py # Semafor, iptal API'si, batch motoru + run logger
│ ├── metrics.py # Token/gecikme istatistikleri, JSONL maliyet logu
│ ├── pricing.py # Model prefix'i ile fiyat eşleştirme
│ ├── task_models.py # Tipli veri modelleri (Pydantic)
│ ├── sanitizer.py # Markdown/konuşma temizliği
│ └── cache.py # SHA-256 tabanlı görev cache'i
├── workflows/
│ ├── base_workflow.py # Soyut iş akışı şablonu
│ ├── translation_workflow.py # Teknik çeviri iş akışı
│ └── generic_workflow.py # Genel görev iş akışı
├── mcp/
│ └── server.py # FastMCP sunucusu (6 araç)
├── tests/
│ ├── conftest.py # Offline koruması + sahte istemci
│ ├── test_router_parser.py # SSE/JSON ayrıştırma (offline)
│ ├── test_worker_retry.py # Retry/backoff/iptal/maliyet (offline)
│ ├── test_engine.py # Batch sayımı, eşzamanlılık, iptal (offline)
│ ├── test_metrics.py # Yüzdelik, fiyat, JSONL log (offline)
│ ├── test_sanitizer.py # Fence/önsöz temizliği (offline)
│ ├── test_cli.py # Argüman/yol/çıkış kodu (offline)
│ └── test_agy_provider.py # CANLI sağlayıcı testi (pytest dışı, gerçek model çağırır)
├── run_page_translations.py # Geriye uyumlu sarmalayıcı -> cli.py translate
├── scripts/
│ └── sync_to_gemini.ps1 # Kanonik depoyu .gemini çalışma kopyasına yansıtır
├── archives/ # Eski/arşivlenmiş kod
├── docs/
│ └── KNOWLEDGE.md # Kalıcı teknik bilgi
├── runs/ # Batch JSON + metrics.jsonl (git-ignored)
├── pyproject.toml # ruff + pytest yapılandırması
├── AGENTS.md # Ajan kılavuzu
├── ARCHITECTURE.md # Katmanlar ve veri akışı
├── CHANGELOG.md # Sürüm tarihçesi
├── ROADMAP.md # Hedef fazlar
├── .env.example
├── requirements.txt
└── LICENSE🛡️ Dayanıklılık Davranışları
Adaptif timeout:
SwarmWorker._compute_adaptive_timeout()istem uzunluğuna göre, tabanıREQUEST_TIMEOUT_SECONDSolan ve 240 sn ile sınırlanan bir değer hesaplar.Retry + üstel backoff:
MAX_RETRIESkadar deneme; her denemedeRETRY_DELAY_SECONDS * 2^(n-1)bekleme. Backoff sırasında iptal gelirse bekleme kesilir.Boş yanıt başarısızlıktır: Model boş içerik döndürürse görev
completedsayılmaz, yeniden denenir; diske boş dosya yazılmaz.İptal:
SwarmEngine.cancel(id),drain()vecancel_all(); ayrıca görev ve batch zaman bütçeleri. Tek bir görevin iptali/hatası batch'i düşürmez.Toleranslı ayrıştırma:
AsyncRouterClient._parse_router_response()düz JSON,raw_decodeve satır satır SSE toplama olmak üzere üç aşamalı ayrıştırır; SSEusagealanlarını toplar.Maliyet/ gecikme logu: Her batch
runs/metrics.jsonliçine tek satır yazar; fiyat tablosu yoksa maliyet "unpriced" olarak işaretlenir.Sanitizasyon: Her sonuç
CodeSanitizerüzerinden geçer (konuşma önsözü ve markdown fence temizliği).
⚠️ Bilinen Sınırlamalar
Canlı router bağımlılığı: Motorun router yolu (
AsyncRouterClient) bu repoda uçtan uca doğrulanmamıştır.tests/altındaki testler sahte istemci kullanır ve ağ davranışını kanıtlamaz.agyparalelliği 1'dir: Kalıcı CLI oturumu tekil olduğundan ölçeklenmez.Fiyat listesi yok:
MODEL_PRICING_JSONtanımlanmadıkça maliyet "unpriced" raporlanır; token sayıları da ancak routerusagedönerse dolar (REQUEST_STREAM_USAGE).Sanitizasyon TS'e özeldir:
CodeSanitizer.clean_typescript_code()adı ve desenleri TypeScript odaklıdır; TS dışı çıktı için özelleştirme gerekir.runs/git-ignored: Koşu logları vemetrics.jsonlyerelde kalır; repoya girmez.UTF-8 yanıt varsayımı:
AsyncRouterClientyanıt gövdesini UTF-8 olarak çözer.Ayrıştırıcı kusuru (bilinen):
data:öneki olmayan ardışık iki JSON nesnesi birleştirilmez;raw_decodeaşaması ilk nesneyi olduğu gibi döndürür. Yalnızca SSE gövdeleri toplama aşamasına ulaşır.
🔁 Kaynak Depo ve Çalışma Kopyası
Bu depo tek doğruluk kaynağıdır (source of truth). Ancak Antigravity, MCP sunucusunu .gemini altındaki bir kopyadan yükler. İki kopya zamanla ayrışmaması için değişiklikleri senkronize edin:
# Önizleme (hiçbir şey kopyalanmaz)
powershell -ExecutionPolicy Bypass -File .\scripts\sync_to_gemini.ps1 -WhatIf
# Gerçek senkronizasyon
powershell -ExecutionPolicy Bypass -File .\scripts\sync_to_gemini.ps1Betik robocopy /MIR kullanır; bu depoda sildiğiniz bir dosya hedefte de silinir (istenen davranış — ayrışmayı önler).
Kasıtlı olarak korunanlar (hedefte asla dokunulmaz veya silinmez):
Öğe | Neden |
| Yerel router anahtarı; hedefe özgü ve git-ignored |
| Yerel koşu logları |
| Yerel sanal ortam |
Akış: kodu bu depoda düzenle → commit et → sync_to_gemini.ps1 çalıştır → Antigravity'yi yeniden başlat.
Dikkat: Yalnızca bu depoyu düzenleyin.
.geminikopyasında yapılan doğrudan değişiklikler bir sonraki senkronizasyonda kaybolur.
📄 Lisans
GNU General Public License v3.0 — bkz. LICENSE.
This server cannot be deployed
Maintenance
Related MCP Connectors
Build, validate, and deploy multi-agent AI solutions from any AI environment.
The cloud for agents. Tools for AI agents to register, build, and deploy other agents. Zero human required.
Hosted runtime for persistent agent teams, durable workflows, memory, schedules, and goals.
AI model routing on your own vendor keys: pick the best model per prompt, or route and run it.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables multiple LLM agents across devices to form teams, share knowledge, memory, and tasks with live status via a web dashboard and distributed-systems reliability.Apache 2.0
- AlicenseAqualityDmaintenanceMulti-agent orchestration server that enables parallel task delegation, sequential pipelines, cron scheduling, and cross-model peer review via CLI providers like Codex, Antigravity, OpenCode, and Claude Code.4216 npm5MIT
- AlicenseNot gradedqualityCmaintenanceEnterprise-grade asynchronous multi-agent orchestration and MCP router mesh framework, enabling DAG-based workflows, consensus-driven agent swarms, and REST/telemetry gateway.MIT
- AlicenseNot gradedqualityCmaintenanceEnables multiple AI coding CLIs (Claude Code, Gemini/Antigravity, Codex, and OpenCode) to collaborate as a coordinated team by routing cross-agent prompts, sharing messages and review tickets, tracking tasks on a shared store, and isolating each agent in its own Git worktree with turn-budget safeguards—all inspectable and steerable from a local web dashboard.MIT