Skip to content

Tasks

Tasks let you capture project work, hand it to the AI agent for implementation, and track what’s done. Each task can link to a thread where the agent works and you steer the result. Tasks can also run automatically on a one-shot schedule or from a generic webhook event.

The Tasks view is a flat list, not a board. Each task shows one of three states:

StateMeaning
ReadyWaiting for work. Not linked to a thread.
WorkingAgent is actively working in a linked thread.
DoneComplete. Moves to the bottom of the list.

Tasks carry a status field with six values (Ready, Plan, Build, Test, Review, Done) and a working flag. The UI collapses these into the three states above: any status that isn’t Done displays as “Ready” when working is false, and “Working” when working is true. The agent tool can set any status directly, but the UI surfaces only Ready, Working, and Done.

  1. Click the + button in the bottom-right corner of the Tasks view.
  2. Write a description of what needs to happen.
  3. Optionally expand Add schedule or event trigger to configure automation.
  4. Click Add or press Ctrl+Enter (Cmd+Enter on Mac).

The system generates a title from your description. You can’t set the title manually when creating a task.

Descriptions that work well:

  • State the specific change you want, not a vague category.
  • Include acceptance criteria or the expected outcome.
  • Mention constraints, file paths, or relevant context.

Example:

Add user authentication with email/password login.
Validate email format, require 8+ character passwords,
show specific error messages for failures,
save session tokens securely.
  • Click a task to open the edit dialog.
  • Change the description, tags, or automation trigger and click Save, or click Delete to remove it.
  • When you save, the task links to whichever thread is currently selected (if any).

The edit dialog supports manual, scheduled, and event triggers. Use Remove trigger to return a task to manual-only execution.

Each task has a dropdown menu with contextual actions:

Creates a new thread, links the task to it, sets the task to Build + working, and sends the task description as the first message to the agent. The UI switches to the new thread so you can watch the agent work. The task status badge changes to “Working” with a spinner.

Same as above, but reuses the currently selected thread instead of creating a new one. If that thread is already processing a message, the task description gets queued.

Available for scheduled and event-triggered tasks. This launches the task immediately in a new thread using the same execution path as automation. For one-shot schedules, the schedule is cleared when it fires, including when you use Run Now.

Sets the task status to Done and clears the working flag. Done tasks sort to the bottom of the list.

These actions don’t appear for every task: “Implement” only shows when the task isn’t done and isn’t already working. “Run Now” only appears for automated tasks. “Mark done” only shows when the task isn’t done.

You can schedule tasks from the Add/Edit dialog or from chat.

Under Schedule, choose:

  • Once — run at a specific date and time.
  • Repeating — run on a preset cadence: Daily, Weekdays, or Weekly (with day picker).

Schedules use your browser timezone at save time. Use Active or Paused to enable or disable the trigger without deleting it.

You can also schedule from chat by asking the agent to create or update a task with a specific time, for example:

  • Schedule this task for tonight at 9pm
  • Create a task to regenerate the changelog tomorrow at 8am

The agent converts that request into canonical schedule fields on the task.

Behavior:

  • Scheduled tasks show an automation label in the Tasks view, including the next run for recurring schedules.
  • The scheduler scans for due tasks periodically.
  • When the scheduled time arrives, Tarsk creates a new thread and sends the task description through the normal chat execution path.
  • One-shot schedules clear after they fire. Repeating schedules stay active and fire again on the next due time.
  • Run Now bypasses pause and launches immediately. For one-shot schedules, Run Now also clears the schedule.
  • lastRunStatus updates to indicate whether the launch request succeeded or failed.

Tasks can also run from a generic authenticated webhook. Event-triggered tasks store an eventKey, such as door.opened or deploy.finished.

POST /api/projects/:projectId/events
Authorization: Bearer <project-event-token>
Content-Type: application/json
{ "eventKey": "door.opened", "payload": { "doorId": "front" } }

Behavior:

  • Tarsk verifies the bearer token for the project.
  • It finds tasks with triggerType = "event" and the matching eventKey.
  • For each matching task that is not already working, Tarsk launches a new thread and sends the task description plus the inbound event payload context.
  • The response includes accepted, matched, launched, and skipped counts.

For v1, any external service can call this endpoint as long as it knows the project ID, event key, and bearer token.

From chat in a project thread, you can manually fire an event trigger:

/send-event door.opened
/send-event door.opened {"doorId":"front"}

This uses the same matching and launch path as the webhook, respects Paused tasks, and does not start an agent turn for the command itself.

When a task is in Working state:

  • The status badge shows a spinner.
  • The app polls the server every 2 seconds to pick up status changes.
  • When the agent finishes (the thread response completes), the server clears the working flag. The task goes back to Ready (unless it was moved to Done).
  • If the linked thread gets deleted, the task automatically moves to Done next time the task list loads.

The agent tool can set a task to Plan status. When the linked thread finishes, the server looks for a file named {task-id}-plan.md in the thread directory. If found, it replaces the task description with the plan content and deletes the file. This is a backend behavior the agent can use; the UI doesn’t have a dedicated “Plan” button.

The AI agent manages tasks programmatically with the tasks tool. From chat, you can ask the agent to:

  • Add tasks (created in Ready status; the agent must supply a title).
  • List tasks to see the current board.
  • Update tasks (change status, title, description, or automation trigger). Updating a description does not regenerate the title — the agent must set title explicitly to change it. Title auto-generation is UI-only.
  • Delete tasks.
  • Implement a task in the current conversation.
  • RunNow for a scheduled or event-triggered task.

The agent can set any valid status (Ready, Plan, Build, Test, Review, Done) through the tool, even though the UI only exposes Ready, Working, and Done as user-facing states.

Automated tasks record:

  • lastTriggeredAt — the last time automation launched the task
  • lastRunStatus — one of succeeded or failed for the latest launch attempt

In v1, this is task-level summary state rather than full run history.

  • Focus on one working task at a time. Multiple tasks can be in Working state, but each ties up a thread.
  • Check the linked thread if you want to redirect the agent mid-task.
  • Descriptions are the agent’s instructions. The more specific the description, the less you need to steer in the thread.
  • If a task’s thread disappears (you deleted it, or it was cleaned up), the task moves to Done automatically. You can reopen it by editing and saving, which re-links it to the current thread.
  • Scheduled one-shot tasks clear after they fire. Re-schedule or switch to a repeating preset if you want them to run again.
  • Paused tasks do not fire from the scheduler, webhook, or /send-event. Use Run Now to launch manually.