packages/docs/guides/deploy-to-cloud.mdx
You built an agent. Now you need it running 24/7, accessible from anywhere, with proper monitoring.
The traditional path: write a Dockerfile, configure cloud infrastructure, set up load balancing, create CI/CD pipelines, manage SSL certificates, configure health checks...
With Eliza Cloud: two commands.
elizaos login
elizaos deploy --project-name my-agent
That's not a simplified example. That's the entire deployment process.
<CardGroup cols={3}> <Card title="5 minutes" icon="clock"> From code to production URL </Card> <Card title="Zero config" icon="wand-magic-sparkles"> No infrastructure setup needed </Card> <Card title="Built for elizaOS" icon="microchip"> Optimized for agent workloads </Card> </CardGroup>Beyond deployment: on-chain agent discovery (ERC-8004), crypto payments (X402), and a marketplace to publish and monetize your agents.
Every deployment includes:
<CardGroup cols={2}> <Card title="Dedicated EC2 Instance" icon="server"> Your own t4g.small ARM server, not shared resources </Card> <Card title="HTTPS by Default" icon="lock"> SSL certificates handled automatically </Card> <Card title="Health Monitoring" icon="heart-pulse"> 24/7 checks with automatic alerting </Card> <Card title="Zero-Downtime Updates" icon="rotate"> Push updates without interruption </Card> <Card title="Persistent URL" icon="link"> Same URL across all deployments </Card> <Card title="Real-time Logs" icon="terminal"> `elizaos containers logs --follow` </Card> </CardGroup>Under the hood, the CLI builds your Docker image, pushes it to AWS ECR, and deploys to a dedicated EC2 instance with load balancing configured.
The defaults work for most agents. When you need more control:
elizaos deploy \
--project-name my-agent \
--env "OPENAI_API_KEY=sk-xxx" \
--env "DATABASE_URL=postgresql://..."
elizaos deploy \
--project-name my-agent \
--cpu 512 \
--memory 1024 \
--desired-count 2 # Multiple instances
| Option | Default | Description |
|---|---|---|
--cpu | 1792 | CPU units (1792 = 1.75 vCPU) |
--memory | 1792 | Memory in MB (1792 = 1.75 GiB) |
--desired-count | 1 | Number of container instances |
--port | 3000 | Container port |
Same command, zero downtime:
elizaos deploy --project-name my-agent
The CLI detects it's an update and rolls out changes without interruption.
elizaos containers list
# Real-time logs
elizaos containers logs --follow
# Last 200 lines
elizaos containers logs --tail 200
elizaos containers delete --project-name my-agent
"Browser didn't open"
elizaos login --no-browser
"Authentication timed out"
elizaos login --timeout 600
"API key not found after login"
elizaos login from your project directory.env for ELIZAOS_CLOUD_API_KEYeliza_"Docker not running"
Start Docker Desktop, then verify with docker info.
"API key invalid"
eliza_)echo $ELIZAOS_CLOUD_API_KEY"Build failed"
Dockerfiledocker build ."Deployment stuck"
elizaos containers logs --project-name my-agent| Command | Description |
|---|---|
elizaos login | Authenticate (opens browser) |
elizaos login --no-browser | Authenticate without browser |
elizaos login --timeout 600 | Custom timeout (seconds) |
| Command | Description |
|---|---|
elizaos deploy --project-name <name> | Deploy with project name |
elizaos deploy --api-key <key> | Deploy with explicit API key |
elizaos deploy --port <port> | Set container port (default: 3000) |
elizaos deploy --cpu <units> | Set CPU units (default: 1792) |
elizaos deploy --memory <mb> | Set memory in MB (default: 1792) |
elizaos deploy --desired-count <n> | Set instance count (default: 1) |
elizaos deploy --env "KEY=VALUE" | Add environment variable |
elizaos deploy --skip-build | Skip Docker build |
elizaos deploy --platform <arch> | Set Docker platform |
| Command | Description |
|---|---|
elizaos containers list | List all deployments |
elizaos containers list --json | List as JSON |
elizaos containers logs | View logs |
elizaos containers logs --follow | Follow log output |
elizaos containers logs --tail <n> | Show last N lines |
elizaos containers delete | Delete deployment |
elizaos containers delete --force | Delete without confirmation |
The CLI looks for API keys in this order:
--api-key flag (if provided)ELIZAOS_API_KEY environment variableELIZAOS_CLOUD_API_KEY environment variableELIZAOS_CLOUD_API_KEY in project .env fileThe elizaos login command writes to ELIZAOS_CLOUD_API_KEY in your project's .env file.