Request Duration: 15 Minutes
Each HTTP request has a 15-minute budget. The clock starts when Miget’s proxy begins reading your request and ends when your application has finished sending the response. If either side takes longer than 15 minutes to complete, the proxy closes the connection. This budget is generous enough to cover most long-running web workloads:- Streaming responses: Server-sent events (SSE) and chunked transfer encoding.
- Long polling: Clients holding a connection open while waiting for new data.
- Token-by-token responses: LLM endpoints that stream output as it is generated.
- Slow database queries: Single requests that take minutes to compute.
git push: Pushes to the builder, including silent periods while the build runs.
Idle Keep-Alive: 5 Minutes
Once a connection is established, it can remain open and idle (with no data in flight) for up to 5 minutes before Miget closes it. After that, the next request from the client opens a fresh connection automatically. If your client maintains long-lived HTTP connections, such as connection pools or SDK clients that reuse sockets, set the client’s keep-alive interval below 5 minutes. A 60 to 90 second probe is typical and ensures the client refreshes the connection before the proxy times it out.Request Headers
Request headers must arrive promptly after the connection opens. Connections that send headers very slowly are closed before they reach the application. This protects every Miget app from slow-header (Slowloris) attacks without any configuration on your side.WebSockets
WebSocket connections are governed by the 5-minute idle keep-alive, not by the 15-minute request budget. As long as data (including ping or pong frames) flows in either direction at least once every 5 minutes, the connection stays open indefinitely. If your application or client goes idle for longer than 5 minutes, send a ping frame at a shorter interval, typically every 60 to 120 seconds, to keep the connection alive.Request Body Uploads
Uploading a request body counts toward the 15-minute request budget. The limit applies to the entire request, not to individual write operations, so a slow client uploading a large file at low bandwidth will be cut off if the upload takes longer than 15 minutes. For large or unbounded uploads, use a presigned URL to upload directly to object storage from the client, then notify your application via a separate, fast HTTP request. This pattern avoids streaming the full payload through your application’s request path and removes the 15-minute ceiling.What Happens at the Limit
When Miget closes a connection at the timeout, your application sees the socket close mid-request or mid-response. The client sees the response cut off, or, if no response had started, no response at all. Build clear application-level error handling for this case so users see a friendly message rather than a hung request.Plan for graceful timeouts in your applicationCap individual operations in your application below the 15-minute platform limit and handle timeouts cleanly. A user-facing error returned by your code is always better than an abruptly closed connection.

