Deployment model¶
Hayate treats deployment as an adapter around the same Fetch-style application. The adapter translates platform input, output, lifecycle, and bindings; it does not own routes or application policy.
flowchart LR
A["Hayate application<br>Request · Response · routes · middleware"]
A --> B["ASGI adapter<br>Uvicorn / server ecosystem"]
A --> C["Workers adapter<br>WorkerEntrypoint / bindings"]
A --> D["Lambda adapter<br>payload v2 / streaming runtime"]
Portability is verified, not assumed¶
The ecosystem gate builds an unpublished core wheel and installs it into downstream packages. The golden application additionally executes a real Uvicorn/SQLite flow and a real Workerd/D1 flow.
Platform-specific behavior remains documented:
- ASGI owns server lifecycle and WebSocket transport.
- Workers owns environment bindings and
waitUntil. - Lambda owns event translation and Runtime API streaming.
Choose a boundary: ASGI, Cloudflare Workers, or AWS Lambda.