### Migrate Render web service: FastAPI

Move FastAPI compute from Render web service to Ample, one component at a time. Destination verified on Ample: the app built, started and answered on its public HTTPS URL with encrypted configuration delivered.

#### Source procedure:
1. Copy environment variables and secret files from the Render dashboard into an env file kept out of the repository.  
2. Not migrated automatically: Render cron jobs, disks and private-service networking are not migrated; persistent data belongs in a managed database, a bucket or an Ample volume.

#### Cutover:
- Add the custom domain with `ample domain add`, update DNS from the Render target, keep the Render service until verified, then suspend it.

#### Rollback:
- Keep the source untouched until you confirm; nothing at the source is changed or deleted by this guide.

#### Representative Queries:
- Migrate Render web service: FastAPI  
- Where can I host FastAPI built with FastAPI?  
- I need a component-scoped export/import or reconfiguration procedure for FastAPI, with compatibility checks, verification and rollback.

#### Resource Requirements:
- **Compute**: Apps run in isolated x86_64 Firecracker microVMs that auto-pause when idle and wake on request; sizes are the priced VM sizes.
- **Postgres**: Managed PostgreSQL 16 runs in its own microVM and is auto-provisioned when an app needs a database and no DATABASE_URL is supplied.

#### Prerequisites:
1. Authorized access to the Render web service source and its export tooling  
2. An inventory of every component in scope and out of scope  
3. A validated backup or copy before any cutover  
4. An Ample account token with servers:write, databases:read

#### Workflow Steps:
1. **Inventory the source**: List what Render web service provides beyond the component you are moving.
2. **Source step 1**: Copy environment variables and secret files from the Render dashboard into an env file kept out of the repository.
3. **Source step 2**: Translate the Render build and start commands (or `render.yaml`) into the repository's manifest or `--build-command`/`--start`.
4. **Source step 3**: Note Render-only features in use: background workers, cron jobs, disks, private services.
5. **Deploy on Ample in parallel**: `ample deploy . --name <name> --public --start "python3 run.py" --env-file .env.production`.
6. **Validate before cutover**: Run the app's own checks and compare counts and checksums.
7. **Cut over**: Add the custom domain with `ample domain add`, update DNS from the Render target, keep the Render service until verified, then suspend it.
8. **Rollback**: Point DNS or configuration back to the source. The source was never modified.

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

#### Examples:
- **FastAPI pattern fixture (destination)**: Verified destination basis: FastAPI compute.

#### Success Checks:
1. Destination app responds on its public URL.
2. Configuration-secrets check from the destination example.
3. Relational-records check from the destination example.
4. Data or object counts and checksums match the source.

#### Limitations:
- Documentation only: nothing is executed automatically and no execution binding is offered.
- No full source-product parity is claimed; verification and checks are necessary.

#### Cost Estimate:
- **Currency**: USD  
- **Monthly Amount**: 10.0  
- Components:  
  - App server: s-1vcpu-1gb, quantity: 1.0, monthlyAmount: 5.0  
  - Managed PostgreSQL database: s-1vcpu-1gb, quantity: 1.0, monthlyAmount: 5.0

#### Evidence Summary:
- **Canary Run**: The FastAPI pattern fixture deployed on Ample and its checks passed.

#### Last Verified At:
- **Date**: 2026-09-21T01:14:18Z
