Skip to main content
Todo planning enables agents to break complex tasks into manageable steps, track progress, and maintain persistent task lists across sessions.
The user gives a multi-step goal; the agent breaks it into todos, tracks progress, and executes items in order.

Quick Start

1

Agent with Planning

todo_add, todo_list, todo_update resolve by name. Use tools=["todo_add", "todo_list", "todo_update"] in Python/YAML, --tools todo_add,todo_list,todo_update from the CLI, or grab them together with the coding workflow via toolsets=["coding"].
2

Interactive Planning Flow


How It Works

Todo persistence works through JSON storage with automatic workspace integration:
If you persist plans or todo lists with PlanStorage, any name you pass — even one an LLM chose — stays inside the storage directory. Ordinary names keep their exact filename; only path separators, reserved characters, and a leading . are percent-encoded. See Safe Storage Names.

Configuration Options

Todo Management Functions

Priority Levels

Status Values

Setting a todo to in_progress demotes any other in_progress item back to pending, so exactly one item is active at a time.
Subscribe to the TODO_UPDATED stream event to render a live checklist that ticks off in real time. See Live Todo Streaming.

Category Organization


Common Patterns

Multi-Step Project Planning

Progress Tracking

Category-Based Workflow


Best Practices

Create specific, actionable todo items rather than vague goals. “Write user authentication tests” is better than “test the app”.
Use priority levels to guide task ordering. High-priority items should address critical blockers or dependencies.
Group related todos by category to maintain clear project structure and enable focused work sessions.
Update todo status promptly as work completes. This maintains accurate project visibility and planning momentum.

Live Todo Streaming

Render a live checklist that ticks off in real time via TODO_UPDATED

Self-Improving Skills

How todo planning combines with skill creation

Workspace

Todo storage within workspace boundaries

Toolsets

Get todos + file edits + code search + shell in one line with toolsets=["coding"]

Safe Storage Names

Named todo lists stay inside the storage directory