How Tasks Work
Tasks represent units of work in Frona AI. They can be created directly, delegated from one agent to another, or scheduled to run on a recurring basis.
Task types
Section titled “Task types”Direct tasks
Section titled “Direct tasks”Created when you ask an agent to do something. The agent processes it immediately in the current conversation.
Delegated tasks
Section titled “Delegated tasks”Created when one agent hands off work to another using the delegate tool. The target agent processes the task in a separate chat session and delivers the result back.
{ "kind": "Delegation", "source_agent_id": "system-assistant", "source_chat_id": "chat-123", "deliver_directly": true}Scheduled tasks (cron)
Section titled “Scheduled tasks (cron)”Created using the schedule tool. These tasks run on a recurring schedule defined by a cron expression.
{ "kind": "Cron", "cron_expression": "0 9 * * 1-5", "next_run_at": "2026-02-28T09:00:00Z"}See Scheduling for details.
Task lifecycle
Section titled “Task lifecycle”Every task goes through these states:
| Status | Description |
|---|---|
| Pending | Created but not yet started |
| InProgress | An agent is actively working on it |
| Completed | Finished successfully |
| Failed | Encountered an error |
| Cancelled | Manually or automatically cancelled |
Task properties
Section titled “Task properties”| Field | Description |
|---|---|
title | Short summary of the task |
description | Detailed instructions |
agent_id | Which agent handles the task |
space_id | Optional space for context |
chat_id | Associated chat session |
run_at | When to run (for scheduled tasks) |
result_summary | Summary of the result (after completion) |
error_message | Error details (if failed) |
API endpoints
Section titled “API endpoints”| Endpoint | Description |
|---|---|
GET /api/tasks | List tasks |
POST /api/tasks | Create a task |
GET /api/tasks/{id} | Get task details |
PUT /api/tasks/{id} | Update a task |
DELETE /api/tasks/{id} | Delete a task |
Concurrency
Section titled “Concurrency”The server has a global limit on concurrent tasks (FRONA_SERVER_MAX_CONCURRENT_TASKS, default: 10). Individual agents can also have their own concurrency limits via max_concurrent_tasks.