## The short version

To deploy a Starlette app on Ample, run `ample deploy . --name <app-name> --public --start "python3 run.py"` in the project directory, or ask your coding agent to deploy it to Ample. Ample builds it on the `python-3.12` template, starts it with `python3 run.py` and returns a public HTTPS URL. Python start commands are not inferred, so the command passes `--start`.

---

## Deploy Starlette

1. **Ask your coding agent**  
   Install the Ample CLI and create an account (no browser or card needed), then ask Claude Code, Codex, Cursor or any agent with a shell to deploy the project. See [Ample for coding agents](/content/agents/index.html).
   
   ```
   curl -fsSL https://get.ample.computer/install.sh | sh
   ample auth signup
   # then, in your agent:
   # "Deploy this Starlette app to Ample"
   ```

2. **Or deploy from the CLI**  
   Run the deploy once from the project directory. It waits until the app is live or failed and prints the URL; exit 0 is live, 1 failed, 2 needs input.
   
   ```
   ample deploy . --name <app-name> --public --start "python3 run.py"
   ```

3. **Or use MCP**  
   Agents connected to the Ample MCP server (`https://api.ample.computer/mcp`, or `ample mcp` over stdio) call `ample_deploy` with the same arguments.

4. **Verify**  
   Open the URL. If the deploy failed, read the build log, then the runtime log, fix the cause and deploy again.
   
   ```
   ample logs <deployment_id> --kind build
   ```

---

## What Ample runs

| Template | `python-3.12` |
|----------|----------------|
| Install  | `python3 -m pip install --target .ample/python -r requirements.txt` |
| Start    | `PYTHONPATH=.ample/python:${PYTHONPATH:-} python3 run.py` |
| Tested size | `s-1vcpu-1gb` |

Verified on Starlette: the app built and started with the documented commands and answered on its public HTTPS URL. Build and start: pip install into .ample/python from requirements.txt, then uvicorn from run.py reading PORT on the python-3.12 template.

Last verification (September 21, 2026): Starlette pattern fixture deployed on Ample (pip install into .ample/python from requirements.txt, then uvicorn from run.py reading PORT on the python-3.12 template); for this guide: the app built and started with the documented commands and answered on its public HTTPS URL.

---

## Before you deploy

### You need
- A Starlette project (pip install into .ample/python from requirements.txt, then uvicorn from run.py reading PORT on the python-3.12 template)
- An Ample account token with servers:write

### Know the limits
- Verified on the python-3.12 template at s-1vcpu-1gb; other sizes and Starlette major versions are not verified.

---

## Frequently asked questions

### Do I need a Dockerfile to deploy Starlette?
No. Ample detects Starlette from the repository and builds it from source on the `python-3.12` template. Dockerfile build steps are not run.

### How do I add a database to a Starlette app?
Leave DATABASE\_URL unset and deploy: when the code needs Postgres, MySQL, Redis or MongoDB, Ample creates a managed database and passes its connection string to the app. See [Connect Postgres for Starlette](/content/guides/starlette/database-connection/index.html).

### What does it cost to host a Starlette app on Ample?
The Free plan runs 2 apps at once with no card and a hard monthly budget, so it never bills you. Larger needs are priced on volume; see [pricing](/content/pricing/index.html).

### What if the deploy fails?
`ample deploy` waits until the app is live or failed. A failure returns who must act, a diagnosis and a suggested fix; read the logs with `ample logs <deployment_id> --kind build`. See [Diagnose deployment failures for Starlette](/content/guides/starlette/deployment-diagnostics/index.html).

---

## More for Starlette

[Starlette **How to serve Starlette public assets through a CDN on Ample**](/content/guides/starlette/cdn-assets/index.html)  
[Starlette **How to set environment variables and secrets for a Starlette app on Ample**](/content/guides/starlette/configuration-secrets/index.html)  
[Starlette **How to connect a Starlette app to Postgres on Ample**](/content/guides/starlette/database-connection/index.html)  
[Starlette **How to fix a failed Starlette deploy on Ample**](/content/guides/starlette/deployment-diagnostics/index.html)  
[Starlette **How to use S3-compatible storage from a Starlette app on Ample**](/content/guides/starlette/object-client/index.html)  
[Starlette **How to serve private files from a Starlette app on Ample**](/content/guides/starlette/private-file-access/index.html)  
[Starlette **How to run database migrations for a Starlette app on Ample**](/content/guides/starlette/schema-changes/index.html)
