AETHER architecture & dependencies

AETHER is a set of .NET services orchestrated with .NET Aspire. Clients deploy the pre-built container images and connect them to managed data services.

Components

ComponentRolePublic?
Agent.WebManagement platform, admin UI, SignalR chatYes (ALB/ingress)
Agent.ServiceChat orchestration, Semantic Kernel, multi-agentInternal
Agent.APIPublic REST API for agentsYes
Agent.WorkerAsync jobs via RabbitMQ (Python, images, artifacts)Internal
MCP serversTool servers (DMS, UMS, …)Internal

Dependency matrix (recommended managed services)

ConcernAWSAzureGCP
ContainersECS FargateContainer AppsCloud Run
RegistryECRACRArtifact Registry
PostgreSQL + pgvectorRDSFlexible ServerCloud SQL
Redis (cache + backplane)ElastiCacheCache for RedisMemorystore
Object storage (S3 API)S3MinIO containerGCS (interop)
Queue (RabbitMQ)Amazon MQCloudAMQPCloudAMQP
SecretsSecrets ManagerKey VaultSecret Manager

Three things teams get wrong

Object storage must speak S3
AETHER uses the MinIO/S3 SDK. S3 (AWS) and GCS interop (GCP) work natively; Azure Blob does not — run a MinIO container on Azure.
The queue is RabbitMQ
The Worker uses the MassTransit RabbitMQ transport. Only AWS has managed RabbitMQ (Amazon MQ); Azure/GCP use CloudAMQP or a RabbitMQ container. SQS/Service Bus/Pub-Sub would require rebuilding.
pgvector must be allow-listed
Enable pgvector before initializing the DB: RDS rds.allowed_extensions, Azure azure.extensions=VECTOR, Cloud SQL cloudsql.enable_pgvector=on.

Scaling to thousands of conversations