page:recipes:ai chat application:fastapi:persistent state

Host AI Chat Application with FastAPI: Postgres-backed State

Summary

Deploy an AI chat application built with FastAPI on Ample using the durable job state pattern. Compute runs the app in an isolated microVM behind a public HTTPS URL, a managed PostgreSQL 16 database is auto-provisioned and injected as DATABASE_URL. Verified on FastAPI: a jobs table with a state and attempts counter, processing inside a row-locked transaction, and a second run that is a no-op (job=done attempts=1 idempotent=true). Not separately tested: your job types, payload schema and retry policy; treat the AI chat application-specific behavior as your application code.

Representative Queries

Resource Requirements

Infrastructure Requirements

Framework

FastAPI

Workload

AI chat application

Release Status

Published

Support Status

Verified

Execution Status

Ready

Prerequisites

Workflow Steps

  1. Build and start: pip install into .ample/python from requirements.txt, then uvicorn from run.py reading PORT on the python-3.12 template. The server must bind 0.0.0.0 on PORT.
  2. Implement the pattern on PostgreSQL: The fixture's module implements durable job state: a jobs table with a state and attempts counter, processing inside a row-locked transaction, and a second run that is a no-op (job=done attempts=1 idempotent=true). Copy the approach into your schema; keep migrations idempotent and run them with --release-command.
  3. Deploy: Run the synchronous deploy once and read the result (exit 0 live, 1 failed, 2 blocked). Re-running with no change is a no-op. Command: ample deploy . --name --public --start "python3 run.py"
  4. Verify: Fetch the live URL and the pattern self-test route(s) (/p/durable-job-state) from the example; then run your own checks. On failure read ample logs --kind build then --kind runtime. Command: ample logs --kind build

Success Checks

Limitations

Cost Estimate

Evidence Summary

Last Verified At

2026-09-21T01:14:18Z

Formats