Workers

The Workers page is where you control how many AI tasks can run at the same time — globally, per project, and per model. Open it from System → Workers in the sidebar.

This is the lever between "tasks pile up in a queue" and "tasks run fast but overwhelm your machine or provider rate limits." Getting the limits right lets Chat stay responsive as the orchestrator while as many tasks as your setup can handle run in parallel behind it.

The Workers Page

When you open Workers you see three things:

Live stats header — Updates every few seconds. Shows:

Worker Capacity & Utilization table — Global and every project in one view. The table auto-refreshes every 3 seconds. Columns:

ColumnWhat It Shows
ScopeGlobal (highlighted row) or Project
NameAll Projects for global, or the project name
RunningTasks currently executing in that scope
QueueTasks waiting for a slot in that scope
LimitEditable inline field — click, type a new number, click Set
StatusIdle, Active, or At capacity badge

Per-Model Worker Pools table — Only appears if at least one model has a dedicated worker pool configured. Shows running tasks and the limit for each model pool. Limits for model pools are set on the Models page, not here.

Setting Limits

All limit changes are inline — no separate settings page needed.

Global limit: Click the number in the Global row's Limit column, type the new value (1–10), click Set. This is the hard ceiling across everything.

Project limit: Click the number in a project row's Limit column, type the new value (0–10), click Set. Setting a project to 0 removes the project-specific cap — that project is then only bounded by the global limit.

The page preserves any limit field you're actively editing during live refreshes, so typing a new value won't get overwritten before you hit Set.

How the Two Layers Work Together

Global and project limits stack as a dual-layer cap:

Example: Global = 5, Project A = 2, Project B = no limit. Project A can run at most 2 tasks at once even if 4 global slots are free. Project B can use up to all 5 global slots if nothing else is running.

Status Badges

BadgeMeaning
IdleNo tasks running in this scope
ActiveTasks are running and slots remain available
At capacityAll allowed slots for this scope are taken; new work queues

A non-zero Queue with At capacity status means tasks are waiting. They'll be dispatched as soon as a slot frees.

Swarms And Capacity

A swarm's Max workers setting limits how many worker slices its planner may create. It does not create or reserve execution slots. Swarm child tasks enter the same dispatcher as other tasks and must fit within global, project, and per-model limits.

For example, a swarm may plan six workers while the project limit is two. All six remain visible, but at most two from that project can execute concurrently, subject to the global and selected-model limits.

What Stays Outside Worker Limits

Work typeBehavior
Interactive ChatBypasses task worker limits entirely — Chat always responds
Chained/blocked tasksWait for their dependency to unblock first, then need a slot
Scheduled tasksEnter the same queue as regular tasks; wait for a slot if needed
Task follow-upsQueue when capacity is full; dispatch when a slot frees

The Chat bypass is intentional. You can keep planning, creating tasks, and checking status in Chat while every worker slot is busy running tasks in the background.

Quick Tuning Patterns

SymptomAction
Tasks queuing across all projectsRaise the Global limit (if machine and provider can handle it)
One project always queued while others are idleRaise that project's limit
A specific model is the bottleneckSet a per-model pool limit on the Models page to fence it off
Machine or provider getting saturatedLower the Global limit
One project shouldn't block othersSet a cap on that project so it can't consume all global slots
Local Ollama or self-hosted model is slowLower the model pool limit for that model config
PageWhy It Matters
Swarm OrchestrationPlanned worker count is separate from actual execution concurrency.
TasksTasks are the work that workers execute
Task Threads & Follow-UpsFollow-ups queue when task capacity is full
ChatChat bypasses task limits and stays responsive while workers are busy
ChatLaunching many parallel tasks from Chat makes worker limits matter more
ModelsConfigure per-model pool limits on the Models page
ProjectsProjects can have their own worker caps set here or on the project settings page