Using the workspace
Helper and worker agents
How Dus hands read-only side tasks to cheap helper agents and runs background worker agents in their own git worktrees, with their own budgets, merged only with your approval.
Dus can share out work. There are two kinds of agents it can start.
| Helper | Worker | |
|---|---|---|
| Started with | delegate |
spawn_worker |
| Can change files | No, it only reads | Yes, with your approval |
| Runs | While Dus waits for it | In the background, while Dus keeps working |
| Model | fast tier (or standard) | standard tier by default; frontier only with a stated reason |
| Typical job | A wide search: "find every place we parse dates" | A self-contained change: "add the CSV export endpoint with tests" |
Helpers and workers are part of Pro (see Pricing and plans). During early access they're on for everyone.
Helpers
A helper is a cheap, read-only agent for side work, such as searching a large codebase or summarising a folder. It reports back to Dus, and only its findings join Dus's conversation, which keeps the main context small. Its cost counts towards the task.
Workers
A worker is a full agent with its own brief. It can edit files and run commands, and your approvals for its actions are labelled with its name.
- Isolation. By default each worker gets its own git worktree,
<project>/.worktrees/_workers/w-<name>, on branchduscode/w-<name>, started from the session's last commit. Uncommitted changes aren't included. - Background. Dus gets the worker's id at once and carries on. When the worker finishes, its report reaches Dus at Dus's next step.
- Steering. Dus can message a running worker, or resume a finished one with its memory intact.
- Limits. At most 3 workers run at once (
workers.maxConcurrent). Each has its own task budget (workers.perTaskUsd, by default your per-task budget). Their spending counts towards the session cost and your daily budget. - Stop in the composer stops the workers too.
In the chat, workers appear as notices such as Worker csv-export started (standard, duscode/w-csv-export), and again when they finish, with their cost.
Merging a worker's work
Dus can look at a worker's diff and propose merging it. Merging always asks you, in every mode and whatever rules you saved. Before merging:
- any pending work is committed on the worker's branch
- your checkout must be clean and on the base branch
- the project's checks run
Conflicts are reported and the merge is undone, never resolved automatically. After a merge, the worker's worktree is removed and its branch is kept.
Things to know
- A worker's report is information for Dus, not an instruction from you. Workers can't approve things on your behalf or ask you questions.
- Workers don't survive a Duscode restart. Their branches and any unmerged worktrees do, so no work is lost.
- When a session finishes, a worker's worktree is removed only if nothing would be lost.