Quick start
Task lifecycle
| State | Meaning |
|---|---|
queued | Waiting to be picked up by a worker |
running | A worker is executing the task |
completed | Task finished successfully |
failed | Task hit an error (may be retried) |
dead_letter | All retries exhausted — needs manual review |
Execution contracts
Every task has a contract that defines what kind of work it represents:- runner.chat.v1
- job.dispatch.v1
- Custom contract
Standard agent chat. Runs an agent with a user message.
Worker setup
Dead-letter handling
When a task exhausts all retries, it moves to the dead-letter queue (DLQ):Error classification
The queue uses error classification to decide whether to retry:| Error type | Retried? | Example |
|---|---|---|
| Retryable | (with backoff) | Network timeout, rate limit, transient LLM error |
| Terminal | (sent to DLQ) | Invalid arguments, auth failure, missing model |
| Non-fatal | (task completes with warning) | Telemetry export failure |
Queue backends
- In-memory (default)
- Redis
State lives in process memory. No setup required.Use for: Development, testing, prototyping.