Merge pull request #1008 from harshalmore31/deployment-docs

[feat] Deployment using Cloudflare workers [Docs]
pull/1009/head
Kye Gomez 4 weeks ago committed by GitHub
commit bb5c0ef0a1
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -345,6 +345,7 @@ nav:
- Deploy on Google Cloud Run: "swarms_cloud/cloud_run.md"
- Deploy on Phala: "swarms_cloud/phala_deploy.md"
- CronJob: "swarms/structs/cron_job.md"
- Deploy on Cloudflare Workers: "swarms_cloud/cloudflare_workers.md"
# - Deploy on FastAPI: "swarms_cloud/fastapi_deploy.md"

@ -0,0 +1,405 @@
# Deploy Cron Agents with Swarms API on Cloudflare Workers
Deploy intelligent, self-executing AI agents powered by Swarms API on Cloudflare's global edge network. Build production-ready cron agents that run on automated schedules, fetch real-time data, perform sophisticated analysis using Swarms AI, and take automated actions across 330+ cities worldwide.
## What Are Cron Agents?
Cron agents combine **Swarms API intelligence** with **Cloudflare Workers edge computing** to create AI-powered systems that:
* **Execute automatically** on predefined schedules without human intervention
* **Fetch real-time data** from external sources (APIs, databases, IoT sensors)
* **Perform intelligent analysis** using specialized Swarms AI agents
* **Take automated actions** based on analysis findings (alerts, reports, decisions)
* **Scale globally** on Cloudflare's edge network with sub-100ms response times worldwide
## Architecture Overview
```
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ Cloudflare │ │ Data Sources │ │ Swarms API │
│ Workers Cron │ │ │ │ │
│ "0 */3 * * *" │───▶│ Yahoo Finance │───▶│ Multi-Agent │
│ │ │ Medical APIs │ │ Intelligence │
│ scheduled() │ │ News Feeds │ │ Autonomous │
│ Global Edge │ │ IoT Sensors │ │ Actions │
└─────────────────┘ └─────────────────┘ └─────────────────┘
```
**Key Benefits:**
* **24/7 Operation**: Zero human intervention required
* **Global Edge Deployment**: Cloudflare's 330+ city network for ultra-low latency
* **Swarms AI Intelligence**: Live data analysis with specialized AI agents
* **Automated Decision Making**: Smart actions based on Swarms agent insights
* **Enterprise Reliability**: Production-grade error handling and monitoring
## Quick Start: Deploy Stock Analysis Cron Agent
Create your first financial intelligence cron agent powered by Swarms API and deployed on Cloudflare Workers edge network.
### 1. Cloudflare Workers Project Setup
```bash
# Create new Cloudflare Workers project
npm create cloudflare@latest stock-cron-agent
cd stock-cron-agent
# Install dependencies for Swarms API integration
npm install
```
### 2. Configure Cloudflare Workers Cron Schedule
Edit `wrangler.jsonc` to set up cron execution:
```jsonc
{
"$schema": "node_modules/wrangler/config-schema.json",
"name": "stock-cron-agent",
"main": "src/index.js",
"compatibility_date": "2025-08-03",
"observability": {
"enabled": true
},
"triggers": {
"crons": [
"0 */3 * * *" // Cloudflare Workers cron: analysis every 3 hours
]
},
"vars": {
"SWARMS_API_KEY": "your-swarms-api-key" // Your Swarms API key
}
}
```
### 3. Cloudflare Workers + Swarms API Implementation
Create `src/index.js`:
```javascript
export default {
// Cloudflare Workers fetch handler - Web interface for monitoring
async fetch(request, env, ctx) {
const url = new URL(request.url);
if (url.pathname === '/') {
return new Response(`
<html>
<body>
<h1>Stock Cron Agent</h1>
<p>Status: Active | <button onclick="run()">Execute Now</button></p>
<div id="result"></div>
<script>
async function run() {
document.getElementById('result').innerHTML = 'Running...';
try {
const res = await fetch('/execute');
const data = await res.json();
document.getElementById('result').innerHTML = data.result?.success
? '✅ Success: ' + data.result.analysis
: '❌ Error: ' + data.error;
} catch (e) {
document.getElementById('result').innerHTML = '❌ Failed: ' + e.message;
}
}
</script>
</body>
</html>
`, {
headers: { 'Content-Type': 'text/html' }
});
}
if (url.pathname === '/execute') {
try {
const result = await executeAnalysis(null, env);
return new Response(JSON.stringify({
message: 'Autonomous analysis executed successfully',
timestamp: new Date().toISOString(),
result
}), {
headers: { 'Content-Type': 'application/json' }
});
} catch (error) {
return new Response(JSON.stringify({
error: error.message,
timestamp: new Date().toISOString(),
system: 'autonomous-agent'
}), {
status: 500,
headers: { 'Content-Type': 'application/json' }
});
}
}
return new Response('Autonomous Agent Endpoint Not Found', { status: 404 });
},
// Cloudflare Workers cron handler - triggered by scheduled events
async scheduled(event, env, ctx) {
console.log('🚀 Cloudflare Workers cron triggered - executing Swarms AI analysis');
ctx.waitUntil(executeAnalysis(event, env));
}
};
// Core function combining Cloudflare Workers execution with Swarms API intelligence
async function executeAnalysis(event, env) {
console.log('🤖 Cloudflare Workers executing Swarms AI analysis...');
try {
// Step 1: Autonomous data collection from multiple sources
console.log('📊 Executing autonomous data collection...');
const marketIntelligence = await collectMarketIntelligence();
const validData = Object.keys(marketIntelligence).filter(symbol => !marketIntelligence[symbol].error);
if (validData.length === 0) {
throw new Error('Autonomous data collection failed - no valid market intelligence gathered');
}
console.log('✅ Autonomous data collection successful: ' + validData.length + ' sources');
// Step 2: Deploy Swarms AI agents for autonomous analysis
console.log('🧠 Deploying Swarms AI agents for autonomous intelligence generation...');
const swarmConfiguration = {
name: "Autonomous Market Intelligence Swarm",
description: "Self-executing financial analysis and decision support system",
agents: [
{
agent_name: "Autonomous Technical Intelligence Agent",
system_prompt: "You are an autonomous technical analysis AI agent operating 24/7. Provide: Real-time trend identification and momentum analysis, dynamic support/resistance level calculations, technical indicator signals (RSI, MACD, moving averages), autonomous price targets and risk assessments, and self-executing trading signal recommendations. Format your analysis as a professional autonomous intelligence briefing for automated systems.",
model_name: "gpt-4o-mini",
max_tokens: 2500,
temperature: 0.2
},
{
agent_name: "Autonomous Market Sentiment Agent",
system_prompt: "You are an autonomous market sentiment analysis AI agent. Continuously evaluate: Real-time market psychology and investor behavior patterns, volume analysis and institutional activity detection, risk-on vs risk-off sentiment shifts, autonomous sector rotation and leadership identification, and self-executing market timing recommendations. Provide actionable intelligence for autonomous decision-making systems.",
model_name: "gpt-4o-mini",
max_tokens: 2500,
temperature: 0.3
}
],
swarm_type: "ConcurrentWorkflow",
task: `Execute autonomous analysis of real-time market intelligence: ${JSON.stringify(marketIntelligence, null, 2)} Generate comprehensive autonomous intelligence report including: 1. Technical analysis with specific autonomous entry/exit recommendations 2. Market sentiment assessment with timing signals for automated systems 3. Risk management protocols for autonomous execution 4. Self-executing action recommendations 5. Key monitoring parameters for next autonomous cycle Focus on actionable intelligence for autonomous trading systems and automated decision making.`,
max_loops: 1
};
// Execute Swarms API call from Cloudflare Workers edge
const response = await fetch('https://api.swarms.world/v1/swarm/completions', {
method: 'POST',
headers: {
'x-api-key': env.SWARMS_API_KEY,
'Content-Type': 'application/json'
},
body: JSON.stringify(swarmConfiguration)
});
if (!response.ok) {
const errorText = await response.text();
throw new Error('Swarms API autonomous execution failed: ' + response.status + ' - ' + errorText);
}
const analysisResult = await response.json();
const intelligenceReport = analysisResult.output;
console.log('✅ Autonomous Swarms AI analysis completed successfully');
console.log('💰 Autonomous execution cost: ' + (analysisResult.usage?.billing_info?.total_cost || 'N/A'));
// Step 3: Execute autonomous actions based on intelligence
if (env.AUTONOMOUS_ALERTS_EMAIL) {
console.log('📧 Executing autonomous alert system...');
await executeAutonomousAlerts(env, intelligenceReport, marketIntelligence);
}
return {
success: true,
analysis: intelligenceReport,
symbolsAnalyzed: validData.length,
cost: analysisResult.usage?.billing_info?.total_cost || analysisResult.metadata?.billing_info?.total_cost,
executionTime: new Date().toISOString(),
nextExecution: 'Scheduled for next autonomous cron trigger',
autonomousSystem: 'Swarms AI Agents'
};
} catch (error) {
console.error('❌ Autonomous analysis execution failed:', error.message);
return {
success: false,
error: error.message,
executionTime: new Date().toISOString(),
autonomousSystem: 'Error in autonomous pipeline'
};
}
}
// Autonomous market intelligence collection
async function collectMarketIntelligence() {
const targetSymbols = ['SPY', 'QQQ', 'AAPL', 'MSFT', 'NVDA', 'TSLA'];
const marketIntelligence = {};
console.log('🎯 Executing autonomous multi-source data collection...');
const dataCollectionPromises = targetSymbols.map(async (symbol) => {
try {
const controller = new AbortController();
const timeout = setTimeout(() => controller.abort(), 10000);
// Autonomous data collection from Yahoo Finance API
const response = await fetch(
'https://query1.finance.yahoo.com/v8/finance/chart/' + symbol,
{
signal: controller.signal,
headers: {
'User-Agent': 'Mozilla/5.0 (autonomous-swarms-agent) AppleWebKit/537.36'
}
}
);
clearTimeout(timeout);
if (!response.ok) {
throw new Error('Autonomous data collection failed: HTTP ' + response.status);
}
const data = await response.json();
const chartResult = data.chart.result[0];
const meta = chartResult.meta;
if (!meta) {
throw new Error('Invalid market intelligence structure received');
}
const currentPrice = meta.regularMarketPrice;
const previousClose = meta.previousClose;
const dayChange = currentPrice - previousClose;
const changePercent = ((dayChange / previousClose) * 100).toFixed(2);
console.log('📈 ' + symbol + ': $' + currentPrice + ' (' + changePercent + '%) - Autonomous collection successful');
return [symbol, {
price: currentPrice,
change: dayChange,
change_percent: changePercent,
volume: meta.regularMarketVolume || 0,
market_cap: meta.marketCap || 0,
pe_ratio: meta.trailingPE || 0,
day_high: meta.regularMarketDayHigh,
day_low: meta.regularMarketDayLow,
fifty_two_week_high: meta.fiftyTwoWeekHigh,
fifty_two_week_low: meta.fiftyTwoWeekLow,
currency: meta.currency || 'USD',
market_state: meta.marketState,
autonomous_collection_time: new Date().toISOString(),
data_quality: 'high'
}];
} catch (error) {
console.error('❌ Autonomous collection failed for ' + symbol + ':', error.message);
return [symbol, {
error: 'Autonomous collection failed: ' + error.message,
autonomous_collection_time: new Date().toISOString(),
data_quality: 'failed'
}];
}
});
const results = await Promise.allSettled(dataCollectionPromises);
results.forEach((result) => {
if (result.status === 'fulfilled' && result.value) {
const [symbol, data] = result.value;
marketIntelligence[symbol] = data;
}
});
const successfulCollections = Object.keys(marketIntelligence).filter(k => !marketIntelligence[k]?.error).length;
console.log('📊 Autonomous intelligence collection completed: ' + successfulCollections + '/' + targetSymbols.length + ' successful');
return marketIntelligence;
}
// Autonomous alert and notification system
async function executeAutonomousAlerts(env, intelligenceReport, marketIntelligence) {
if (!env.MAILGUN_API_KEY || !env.MAILGUN_DOMAIN || !env.AUTONOMOUS_ALERTS_EMAIL) {
console.log('⚠️ Autonomous alert system not configured - skipping notifications');
return;
}
try {
// Autonomous detection of significant market movements
const significantMovements = Object.entries(marketIntelligence)
.filter(([symbol, data]) => data.change_percent && Math.abs(parseFloat(data.change_percent)) > 3)
.map(([symbol, data]) => symbol + ': ' + data.change_percent + '%')
.join(', ');
const alertSubject = '🤖 Autonomous Market Intelligence Alert - ' + new Date().toLocaleDateString();
const alertBody = `
<html>
<body>
<h1>🤖 Market Intelligence Alert</h1>
<p><strong>Date:</strong> ${new Date().toLocaleString()}</p>
<p><strong>Movements:</strong> ${significantMovements || 'Normal volatility'}</p>
<h2>Analysis Report:</h2>
<pre>${intelligenceReport}</pre>
<p>Powered by Swarms API</p>
</body>
</html>
`;
const formData = new FormData();
formData.append('from', 'Autonomous Market Intelligence <intelligence@' + env.MAILGUN_DOMAIN + '>');
formData.append('to', env.AUTONOMOUS_ALERTS_EMAIL);
formData.append('subject', alertSubject);
formData.append('html', alertBody);
const response = await fetch('https://api.mailgun.net/v3/' + env.MAILGUN_DOMAIN + '/messages', {
method: 'POST',
headers: {
'Authorization': 'Basic ' + btoa('api:' + env.MAILGUN_API_KEY)
},
body: formData
});
if (response.ok) {
console.log('✅ Autonomous alert system executed successfully');
} else {
console.error('❌ Autonomous alert system execution failed:', await response.text());
}
} catch (error) {
console.error('❌ Autonomous alert system error:', error.message);
}
}
```
## Production Best Practices
### 1. **Cloudflare Workers + Swarms API Integration**
* Implement comprehensive error handling for both platforms
* Use Cloudflare Workers KV for caching Swarms API responses
* Leverage Cloudflare Workers analytics for monitoring
### 2. **Cost Optimization**
* Monitor Swarms API usage and costs
* Use Cloudflare Workers free tier (100K requests/day)
* Implement intelligent batching for Swarms API efficiency
* Use cost-effective Swarms models (gpt-4o-mini recommended)
### 3. **Security & Compliance**
* Secure Swarms API keys in Cloudflare Workers environment variables
* Use Cloudflare Workers secrets for sensitive data
* Audit AI decisions and maintain compliance logs
* HIPAA compliance for healthcare applications
### 4. **Monitoring & Observability**
* Track Cloudflare Workers performance metrics
* Monitor Swarms API response times and success rates
* Use Cloudflare Workers analytics dashboard
* Set up alerts for system failures and anomalies
This deployment architecture combines **Swarms API's advanced multi-agent intelligence** with **Cloudflare Workers' global edge infrastructure**, enabling truly intelligent, self-executing AI agents that operate continuously across 330+ cities worldwide, providing real-time intelligence and automated decision-making capabilities with ultra-low latency.
Loading…
Cancel
Save