Skip to content

Workers

A live registry of every worker connected to your server, so you can confirm your consumers are alive, see how much work each is doing, and evict one that's stuck.

Where: open /workers from the sidebar.

Workers

What you'll see

A Live indicator next to the title tells you the page is getting fresh data; it drops off if the server stops answering. Four cards summarize the whole fleet, and a table lists each worker underneath.

The summary cards:

ElementWhat it tells you
TotalHow many workers are registered right now
ActiveWorkers that are heartbeating (healthy)
StaleWorkers that stopped heartbeating (turns amber when any exist)
Active JobsJobs being processed across the whole fleet

Each row in the table is one worker:

ColumnWhat it tells you
WorkerThe worker's name, with its full id below it
QueuesThe queues this worker consumes (, if none)
StatusA pill: green active or amber stale
ActiveJobs this worker is processing right now
ProcessedJobs it has completed over its lifetime
FailedJobs it has failed over its lifetime
Last SeenHow long ago its last heartbeat arrived (e.g. "4s ago")
ActionsAn Unregister button for the row

What you can do

  • Unregister a worker, click the trash icon on its row. You'll be asked to confirm; on success a green message appears above the table, and the list refreshes. This is meant for clearing out a dead or stuck registration.
  • Retry, if the server is unreachable, an offline banner appears with a Retry button to fetch again.

Workers aren't created or edited here, they're started by your own consumer processes and register themselves. This screen is for watching them and evicting stuck ones.

WARNING

Unregister is not permanent. A worker that's still running will re-register on its next heartbeat, so its row can reappear moments after you remove it. Use it to evict a genuinely dead registration, not to pause an active consumer.

Good to know

  • Stale doesn't mean gone. A worker that stops heartbeating turns amber and counts toward Stale, but stays in the list, with its Last Seen climbing, until you unregister it or the server drops it.
  • The summary cards always reflect the full fleet. Even when the table is capped, Total, Active, Stale, and Active Jobs are counted across every worker.
  • The table shows at most 100 workers, with no pagination. Past that, a note reads "Showing first 100 of N workers." See Known issues.
  • First load shows a brief "Loading workers…"; after that, updates happen quietly in place with no flicker. If no workers are connected, you'll see an empty state instead.
  • Don't confuse this with the classic Workers page (/workers-classic), which is read-only, shows fewer rows, and has no status pill or Unregister button.
Under the hood (for developers)
  • Reads GET /workers via the bq client (payload wrapped in data); Unregister calls DELETE /workers/:id.
  • Polls on the global refresh interval (default 3000 ms, adjustable in Settings, floored at 500 ms), pauses while the tab is hidden, and skips re-renders when the worker list is unchanged.
  • The response carries more fields than are shown (e.g. concurrency, hostname, pid, registeredAt, uptime); the table renders a subset.

Drives a bunqueue server over its public HTTP API plus a local control agent.