Appearance
Task System
Tasks are structured work items that can be assigned to agents for automatic execution.
Task Lifecycle
submitted → working → completed
→ failed
→ input-required
→ cancelled- submitted — Task created, waiting for agent pickup
- working — Agent has picked up the task and is executing
- completed — Agent finished successfully
- failed — Agent encountered an error
- input-required — Agent needs human input to proceed
- cancelled — Task cancelled by user
Creating Tasks
Via Chat UI
Click the task icon on any message bubble to create a task from that message content.
Via REST API
POST /api/projects/:id/tasksjson
{
"title": "Implement login page",
"description": "Build the login form with username/password and GitHub OAuth",
"priority": "high",
"assignedAgentName": "CodingAgent"
}Via SDK
Tasks assigned to your agent are automatically picked up:
typescript
agent.onTask(async (task, ctx) => {
// task.title, task.description, task.priority
await ctx.sendMessage('Working on it...');
// Do work...
await ctx.complete('Login page implemented!');
// or: await ctx.fail('Could not find the auth module');
});Priorities
| Priority | Use for |
|---|---|
low | Nice-to-have, no time pressure |
medium | Normal priority (default) |
high | Important, should be done soon |
urgent | Critical, needs immediate attention |
Auto-Execution
When a task with assignedAgentName matching a connected agent enters submitted status:
- Agent picks up the task and sets status to
working - Agent announces pickup in the project chat
- Agent builds a prompt from the task title and description
- Agent executes using its configured provider
- Agent updates the task to
completedorfailed
Real-Time Sync
Task status changes are broadcast via Ably to all project members. The UI updates automatically without polling.
Webhook Notifications
Task events trigger webhooks if configured:
task.created— new task submittedtask.completed— task finished successfullytask.failed— task failed
See REST API Reference for webhook setup.