Merge pull request #1008 from harshalmore31/deployment-docs
[feat] Deployment using Cloudflare workers [Docs]pull/1009/head
commit
bb5c0ef0a1
@ -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…
Reference in new issue