Services Architecture
Overview
CROW is built on Cloudflare Workers with a service-oriented architecture. Each service is a dedicated Worker with specific responsibilities, communicating through Cloudflare's service bindings and Queues.
Service Architecture
API Workers
REST API Worker
Purpose: Handle REST API requests
Responsibilities:
- HTTP request handling
- Authentication and authorization
- Rate limiting
- Request validation
- Response formatting
Bindings:
- D1: Database queries
- R2: File operations
- KV: Caching
GraphQL Worker
Purpose: Handle GraphQL queries and mutations
Responsibilities:
- GraphQL query execution
- Schema management
- Real-time subscriptions
Bindings:
- D1: Data fetching
- Vectorize: Semantic search
A2A Worker
Purpose: Agent2Agent protocol handling
Responsibilities:
- A2A protocol handling
- Capability discovery
- Task coordination
- Result aggregation
Bindings:
- D1: Task state
- Queues: Async tasks
MCP Worker
Purpose: Model Context Protocol server
Responsibilities:
- MCP protocol implementation
- LLM tool execution
- Context retrieval
- Resource access
Bindings:
- D1: Data access
- Vectorize: Semantic search
Ingestion Workers
SDK Ingestion Worker
Purpose: Receive events from JavaScript SDK
Responsibilities:
- Event validation
- Data transformation
- Session management
- Queue dispatch
Bindings:
- D1: Session storage
- Queues: Processing queue
CCTV Ingestion Worker
Purpose: Process CCTV video streams
Responsibilities:
- WebRTC handling via Realtime SFU
- Frame extraction
- Storage management
Bindings:
- R2: Frame storage
- Queues: Processing queue
Social Scraper Worker
Purpose: Scrape social media mentions
Responsibilities:
- Cron-triggered execution
- Platform-specific scraping
- Duplicate detection
Bindings:
- D1: Scrape state
- Queues: Processing queue
AI Services
ai-scraping-service
Purpose: Intelligent web scraping
Capabilities:
- Multi-page crawling
- Dynamic content handling
- Product extraction
- Data normalization
ai-processing-service
Purpose: Core AI processing
Capabilities:
- Natural language understanding
- Sentiment analysis
- Entity extraction
- Behavior pattern recognition
ai-chat-service
Purpose: Conversational AI
Capabilities:
- Natural language queries
- Context-aware responses
- Export generation
- Visualization creation
Processing Layer
Trigger Service
Purpose: Route queue messages to workflows
Responsibilities:
- Queue consumption
- Message routing
- Workflow initiation
- Error handling
Cloudflare Workflows
Purpose: Orchestrate multi-step processing
Key Workflows:
process-interaction: Handle website eventsanalyze-social: Process social mentionsprocess-video: Analyze CCTV footagegenerate-insights: Create aggregated insightsexport-report: Generate reports
Service Communication
Service Bindings
Workers communicate via Cloudflare service bindings:
// Example: REST Worker calling AI service
export default {
async fetch(request, env) {
const result = await env.AI_PROCESSING.fetch(
new Request('http://internal/process', {
method: 'POST',
body: JSON.stringify({ data: '...' })
})
);
return result;
}
};
Queue-based Communication
Asynchronous communication via Cloudflare Queues:
// Producer
await env.PROCESSING_QUEUE.send({
type: 'interaction',
sessionId: '...',
data: { ... }
});
// Consumer
export default {
async queue(batch, env) {
for (const message of batch.messages) {
await processMessage(message.body, env);
}
}
};
Deployment
Wrangler Configuration
Each service has its own wrangler.toml:
name = "crow-rest-api"
main = "src/index.ts"
compatibility_date = "2024-01-01"
[[d1_databases]]
binding = "DB"
database_id = "..."
[[r2_buckets]]
binding = "STORAGE"
bucket_name = "crow-storage"
[[queues.producers]]
binding = "QUEUE"
queue = "processing-queue"
CI/CD Pipeline
Related Documentation
- System Architecture - Overall platform architecture
- Integration API - API details
- Data Storage Architecture - Storage design