Jadpo is experimental and not ready for production. These docs follow the compiler's main branch as of 30 Oct 2026. What's built · Install 0.1.0
jadpo
Reference: HTTP

HTTP

Time limits

Every route has a deadline: 10 seconds, unless deadline: sets another, and never more than 60. A request that hangs holds a database connection, so no route may run for long.

example
POST /import {    input: ImportTodos    output: ImportResult    deadline: 30s    run: import_todos(input)}

When the deadline passes, the runtime starts no new work, commits nothing and answers 504 deadline_exceeded.

That holds for work that never waits too, such as a long calculation. The runtime checks the deadline as the work runs, and a body that finishes past it commits nothing. Compiled code checks it as the interpreter does: every 4,096 calls, loop turns and inline-function calls, in a function's loops and inside an operation's inline function as in an action's. Each time an action's loop checks, it gives the thread back to the other requests beside it.

The deadline also covers calls to outside services, which have their own shorter timeouts. Each call's timeout: times its attempts, summed along the longest way through the route's action, must fit within the deadline, or it is route.calls_past_deadline (Calling).

Longer work answers status: SuccessStatus.accepted and carries on in a subscriber, code that runs when an event is delivered (Subscribers). Or the route waits for it with settle: (Waiting for follow-on work).

Markdown for agents: /docs/time-limits.md.Built from Jadpo main at a707efb.