page:recipes:ai chat application:axum:response streaming

Host ai chat application with Axum: streamed responses

Summary

Deploy an AI chat application built with Axum on Ample using the streaming response service 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 Axum: a Server-Sent Events endpoint read incrementally through the public HTTPS gateway: five one-second chunks arrived spread over time with the first within seconds (not buffered), a 70-second stream of 36 chunks completed past common 60-second idle timeouts, and a client that disconnected after two chunks was observed and recorded by the server (disconnected=true). Not separately tested: your event schema, reconnection strategy and any per-request duration ceiling beyond the 70 seconds measured; treat the AI chat application-specific behavior as your application code.

Representative Queries

Resource Requirements

Infrastructure Requirements

Framework

Axum

Workload

AI chat application

Release Status

Published

Support Status

Verified

Execution Status

Ready

Prerequisites

  1. An Axum project that builds and starts with the documented commands (cargo build --release in the Rust builder image, stable toolchain, Cargo.lock committed, pure-Rust dependencies), then the release binary on the ubuntu-24.04 template reading PORT and DATABASE_URL.
  2. A PostgreSQL driver reading DATABASE_URL at runtime (auto-provisioned when omitted, or supplied with --env).
  3. An Ample account token with servers:write, databases:read.

Tested Configuration

Output Schema

(null)

Workflow Steps

  1. Build and start: cargo build --release in the Rust builder image, then the release binary on the ubuntu-24.04 template reading PORT and DATABASE_URL. The server must bind 0.0.0.0 on PORT.
  2. Implement the pattern on PostgreSQL: 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
  4. Verify: Fetch the live URL and the pattern self-test route(s) (/p/streaming-response-service) from the example; then run your own checks. On failure, read ample logs --kind build then --kind runtime.
    • Command: ample logs --kind build

Examples

Success Checks

  1. App responds on its public URL
    • Kind: http_get
    • Path: /
    • Expect: ample canary axum patterns
  2. Streaming response service self-test
    • Kind: http_get
    • Path: /p/streaming-response-service
    • Expect: An SSE stream with data.

Limitations

Cost Estimate

Evidence Summary

  1. Canary run: Axum pattern fixture deployed on Ample; checks passed for streaming-response-service and configuration-secrets.
    • Observed At: 2026-09-21T02:46:37Z
  2. Canary run: The same Axum app deployed with a --release-command migration; the marker it created was readable after activation.
    • Observed At: 2026-09-21T02:46:37Z

Last Verified At

2026-09-21T02:46:37Z