The Director block is an AI-powered todo orchestrator inspired by Left 4 Dead's AI Director. It runs a FETCH → EVALUATE → ACT → OBSERVE pipeline: it fetches todos (via smart presets or from another block), uses an LLM to decide what actions to take, executes those actions (schedule, complete, update priority, add to bucket, update notes), and returns a structured summary. Unlike the Agent block, the Director is opinionated and domain-specific for todo management, with built-in pacing controls.
Block Type
directorInput Fields
| Field | Type | Required | Description |
|---|---|---|---|
goal | string | Yes | What the Director should accomplish (e.g. "Schedule my quick wins for today"). |
model | string | No | LLM model for the EVALUATE stage. Default: claude-sonnet-4-5. |
todoInputMode | string | No | How to source todos: preset (smart filters), reference (from another block), or manual (enter IDs). Default: preset. |
todoIdsReference | string | When reference | Block reference for todo IDs, e.g. <kaizen_todos_1.todoIds>. |
todoIds | string / array | When manual | Comma-separated or JSON array of todo IDs. |
todoSource | string | When preset | Smart preset: quick_wins, overdue, at_risk, upcoming_deadlines, recently_added, custom. Default: quick_wins. |
customFilters | object (JSON) | When preset + custom | Custom filter params when todoSource is custom. |
maxTodosPerWave | number | No | Max todos to process per run (1–50). Default: 10. |
allowedActions | array | No | Actions the Director may take: schedule, complete, update_priority, add_to_bucket, update_notes. Default includes schedule, complete, update_priority. |
intensity | string | No | Pacing: relaxed (conservative), balanced, aggressive. Default: balanced. |
dryRun | boolean | No | If true, only EVALUATE — no actions executed. Use to preview the plan. Default: false. |
bucketId | string | No | Target bucket ID when add_to_bucket is in allowed actions. |
apiKey | string | No | Optional API key for the LLM provider. |
Outputs
| Output | Type | Description |
|---|---|---|
todoIds | array | IDs of all todos successfully acted upon. Use with other blocks: <director_1.todoIds>. |
actionsTaken | object | Map of action type to array of todo IDs, e.g. { scheduled: [...], completed: [...] }. |
summary | string | Human-readable summary of what the Director did. |
plan | object | The LLM's full action plan: actions, reasoning, skippedTodos. Null if not available. |
todosProcessed | number | Count of todos successfully acted on. |
intensity | string | The pacing mode used for this run. |
Common Use Cases
Schedule quick wins for today
Set Goal to something like "Schedule my quick wins for today", use Todo Source "Quick Wins", and leave Allowed Actions to include Schedule. The Director fetches quick-win todos, plans when to schedule them, and executes.
Dry run to preview actions
Enable Dry Run so the Director only runs the EVALUATE step and returns the plan without executing. Use this to verify behavior before turning execution on.
Chain from a Kaizen Todos block
Set Todo Input Mode to "Reference from Block" and Todo IDs Reference to <kaizen_todos_1.todoIds>. The Director will operate only on the todos from that block.
Restrict allowed actions
Limit Allowed Actions to only what you need (e.g. only complete and update_priority) so the Director cannot schedule or add to buckets.
Example
- type: director
name: Schedule Quick Wins
inputs:
goal: "Schedule my quick wins for today"
todoSource: quick_wins
maxTodosPerWave: 5
allowedActions: ["schedule", "complete"]
intensity: balanced
dryRun: falseReferencing Outputs
Use the Director's todoIds output in downstream blocks:
todoIds: "<director_1.todoIds>"Start with relaxed intensity and use dryRun first to preview what the Director will do. Restrict allowedActions to only what your use case needs.