persistent state.md

Host ai chat application with Express: Postgres-backed state

Summary

Deploy an AI chat application built with Express on Ample using the durable job state pattern. Compute runs the app in an isolated microVM behind a public HTTPS URL, with a managed PostgreSQL 16 database auto-provisioned as DATABASE_URL. Verified on Express: 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).

Infrastructure requirements

Prerequisites

Exact tested configuration

Steps

  1. Build and start. npm install, npm run build --if-present, npm run start on the node-22 template. The server must bind 0.0.0.0 on PORT.

  2. Implement the pattern on PostgreSQL. Implement durable job state: a jobs table with a state and attempts counter, processing inside a row-locked transaction. 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).

    ample deploy . --name <app-name> --public
    
  4. Verify. Fetch the live URL and the pattern self-test route(s) (/p/durable-job-state) from the example; run your checks. On failure, read ample logs <deployment_id> --kind build then --kind runtime.

    ample logs <deployment_id> --kind build
    

Tested examples

Success checks

Limitations

Cost estimate

Estimated 10.00 USD per month.

Verification evidence

Execution binding

MCP tool ample_deploy, schema hash 876465fce906da0c, binding state current, required scopes: servers:write, databases:read.