---
id: "listener-vs-proactive"
type: "concept"
title: "Listener vs proactive workers"
summary: "Listener workers wait for external events and are fully implemented; proactive workers run on schedules and are typed but not executed yet in v0.1."
problem: "Choosing the wrong worker type leads to polling where you should listen, or dead code where the scheduler is not yet live."
why: "The two types cover every wrapping shape — events flow into listeners, schedules and API polls flow into proactive workers."
mentalModel: "listener = something calls you; proactive = you run on a clock."
audiences: ["developers"]
related: ["service-shell"]
next: ["wrap-a-listener"]
---
# Listener vs proactive workers

| Type | Behavior | Status |
|------|----------|--------|
| `listener` | Waits for external events (HTTP webhooks, queues, etc.) | **Implemented** |
| `proactive` | Runs on schedule / interval / cron / API poll | Types only (coming soon) |

A listener implements `start(ctx)`/`stop(ctx)` and registers routes on `ctx.http`. A proactive worker declares a `schedule` and an `execute(ctx)` body.