---
title: "Initial AWS requirements for self-hosting"
description: "A high-level view of what running self-hosted Embed on AWS involves. Specifics are confirmed during the scoping conversation with Coassemble engineering, based on the partner's expected user volume and media load."
canonical_url: "https://support.coassemble.com/articles/initial-aws-requirements-for-self-hosting-m9xWmoDxCn"
md_url: "https://support.coassemble.com/articles/initial-aws-requirements-for-self-hosting-m9xWmoDxCn.md"
---
# Initial AWS requirements for self-hosting

A high-level view of what running self-hosted Embed on AWS involves. Specifics are confirmed during the scoping conversation with Coassemble engineering, based on the partner's expected user volume and media load.

### **What Coassemble provides**

A container image of the Embed application, plus reference Terraform that can serve as a starting blueprint.

### **What the partner provisions on AWS**

* Container compute for the Embed runtime (ECS on Fargate or EKS), behind an Application Load Balancer.
* A managed PostgreSQL database (RDS or Aurora).
* Optionally, a managed Redis-compatible cache (ElastiCache). The application falls back to an in-memory cache when no Redis is provided
* An S3 bucket for media, fronted by CloudFront served from a partner subdomain.
* AWS Elemental MediaConvert for video processing.

All components of an Embed deployment (compute, database, cache, storage, media) sit in a single AWS region of the partner's choice.

### **Sizing**

Partner setups will vary in size. For reference, Coassemble's own production runtime sits at roughly 4 CPU / 8 GB RAM for the backend, 0.5 CPU / 512 MB for the frontend, and 2 CPU / 8 GB for the database. Many partner deployments will run on less, depending on their setup and expected user volume. Final sizing for compute, database, and bandwidth is confirmed during scoping.

### **Third-party services**

Embed relies on a handful of external SaaS services to do things like send emails, generate AI content and narration, and capture errors. In a self-hosted deployment, the partner holds their own accounts with those vendors and supplies their own API keys. For example, the partner would bring their own Google account for the Gemini and Chirp models that power AI features and narration, alongside accounts for email delivery, document conversion, monitoring, and any optional services tied to features they enable.

Keys are injected into the container at startup and are never provided to Coassemble. The exact list of services to supply credentials for is confirmed during scoping, as it shifts slightly release to release and depends on which features the partner turns on.

### **AI provisioning**

In a self-hosted deployment, the partner manages the AI vendor relationships directly. Embed currently uses two vendors:

* **OpenRouter** for text generation, translation, and image generation. Embed routes calls to Gemini Flash (text) and Gemini 2.5 Flash Image (image generation) through OpenRouter.
* **Google Cloud** for narration voices, using the Chirp text-to-speech models.

This may consolidate to OpenRouter alone in future as Gemini Flash TTS becomes available through it.

**What the partner sets up:**

* An OpenRouter account with billing configured.
* A Google Cloud account with the Text-to-Speech API enabled and billing configured.
* Quotas and budget alerts in each provider's console. These are the partner's controls for capping spend and getting warned before a quota is hit.

Pricing is set by each provider and is usage-based: charged per token for text and translation, per image for image generation, and per character synthesised for narration. Every self-hosted setup will look different commercially because actual spend depends on the amount of usage and which AI features the partner enables. Current list pricing is on [openrouter.ai/models](https://openrouter.ai/models) for OpenRouter and [cloud.google.com/text-to-speech/pricing](https://cloud.google.com/text-to-speech/pricing) for Chirp.

If a vendor call fails because the partner's quota or budget has been reached, the affected AI feature returns an error inside the application; the rest of Embed continues to operate normally.

### **Scope**

Self-hosting here means the Embed application runs inside the partner's own cloud, while still calling out over the public internet to the third-party SaaS services it depends on. Coassemble does not currently support a fully air-gapped deployment with no external network access.

### **Partner responsibilities**

Provisioning, scaling, monitoring, database administration, security of the runtime, and applying published updates.

These are indicative initial requirements, not a committed specification. Self-hosting requires a scoping conversation, and server choice is permanent with no supported migration path.
