# Durable queues are ready before workers start

> AgentOS now creates the durable queue table before workers begin polling, so a fresh Agno deployment stops logging errors before its first job and continuations run.

- Published: 2026-09-08
- Author: Ashpreet Bedi
- Categories: Changelog
- Canonical: https://www.agno.com/articles/durable-queues-are-ready-before-workers-start
- Markdown: https://www.agno.com/articles/durable-queues-are-ready-before-workers-start.md

Agno's AgentOS now prepares the durable queue's PostgreSQL storage, sync or async, before any worker starts polling. On a fresh database, workers used to start first and find no `agno_jobs` table. Every replica logged errors until someone enqueued the first job, and continuations that arrived without a queue ticket stayed blocked.

![Before: workers started polling, found no agno_jobs table and logged errors on every poll until the first job created it. Now: queue storage is prepared first, unless auto_provision_dbs=False, then workers start polling and jobs and continuations run.](https://www.agno.com/images/v3-0-9-durable-queue-startup.png)

```python
agent_os = AgentOS(
    agents=[agent],
    db=db,
    queue=QueueConfig(durable=True),
)
```

```text
DEBUG   Created table ai.agno_jobs
INFO    Job queue worker started: worker=<worker-id> poll=1s
```

AgentOS respects `auto_provision_dbs=False` if you manage the schema yourself. When several replicas start at once and race to create the table, AgentOS recovers from the race. Other provisioning failures still surface. Stores that don't provide the new setup hook keep working as they did.

See the [cookbook](https://github.com/agno-agi/agno/blob/main/cookbook/05_agent_os/background_tasks/durable_queue.py), and learn more about the [durable queue](https://docs.agno.com/agent-os/background-execution/durable-queue) in the documentation.
