Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/jonwiggins/optio/llms.txt

Use this file to discover all available pages before exploring further.

A task is a coding assignment you give to an AI agent. You describe what needs to be done — in plain language or as a detailed spec — and Optio provisions an isolated environment, runs the agent, opens a pull request, and drives the PR to completion through CI, review, and merge. Every task belongs to a repository and is processed by the agent you select (Claude Code or OpenAI Codex). You can monitor live agent output, track PR status, and manage the queue from the Tasks page.

Creating a task

1

Open the new task form

Navigate to Tasks in the sidebar and click New Task, or go directly to /tasks/new.
2

Fill in the title and description

Give the task a concise title (e.g., “Add pagination to the users API”). In the description field, write the full prompt the agent will receive. Be specific: include acceptance criteria, file paths, coding conventions, or any context the agent needs.
3

Select a repository

Choose the repository this task should run against. The agent will check out the repo’s default branch (or a branch you specify) and work within an isolated git worktree.
4

Choose an agent type

Select Claude Code or OpenAI Codex. The agent type, along with the repository’s model configuration, determines which model runs your task.
5

Set optional parameters

Optionally configure a branch override, priority, max retries, or task dependencies before submitting.
6

Submit

Click Create Task. The task enters the queue immediately and will be picked up as soon as a concurrency slot is available.

Task states

Every task moves through a well-defined lifecycle. The current state is shown as a colored badge on the task card and detail view.
The task has been submitted and is waiting in the priority queue. Optio will pick it up as soon as a global concurrency slot and a per-repository slot are both available. If the task has unmet dependencies, it will show Waiting on dependencies instead and transition to queued automatically when those dependencies complete.
Optio is finding or creating the repository pod and preparing a git worktree for this task. This typically takes a few seconds if a warm pod already exists for the repository, or up to a minute for a cold start.
The agent is actively writing code in the isolated worktree. Live logs are streaming to the task detail page in real time. The agent will stop after opening a pull request.
The agent has opened a pull request. Optio’s PR watcher is now polling every 30 seconds for CI status, review state, and merge readiness. The task stays in this state until the PR is merged, closed, or requires the agent’s attention.
Something has interrupted the normal flow and the agent needs to resume. Common triggers include: CI checks failed, the PR has a merge conflict, or a reviewer has requested changes. Optio will automatically re-queue the agent with the relevant context if auto-resume is enabled for the repository.
The pull request was merged. If the task was linked to a GitHub Issue or Linear ticket, the ticket is closed automatically.
The task encountered an unrecoverable error — the agent crashed, the PR was closed without merging, or all retries were exhausted. The task detail page shows a classified error message with a suggested remedy. You can retry the task manually.
The task was cancelled by you or a bulk operation. A cancelled task can be re-queued by clicking Retry.

Task priority

Tasks in the queue are processed in priority order. Lower priority numbers run first. When you create a task, the default priority is 100. To reorder tasks, open the Tasks page and drag tasks into the order you want. Optio reassigns priority values based on position — the topmost task gets the lowest (highest-priority) number.
Use lower priority numbers for urgent or blocking work. A task with priority 1 will jump ahead of everything else in the queue.

Subtasks

A task can spawn child tasks that run as part of the same pipeline. Subtasks appear nested under the parent in the task detail view.
Subtask typeDescription
ChildAn independent subtask that runs alongside or after the parent.
StepA sequential step in a multi-stage pipeline. Steps run in order, and the parent waits for all blocking steps to complete.
ReviewA code review subtask launched after the coding agent opens a PR. The review agent runs a separate pass and can request changes.
Review subtasks are created automatically when the repository’s code review feature is enabled. You can also trigger a review manually from the task detail page.

Bulk operations

The Tasks page supports two bulk operations available from the Actions menu:
  • Retry all failed — re-queues every task currently in the failed state. Useful after fixing an infrastructure issue that caused widespread failures.
  • Cancel all active — cancels all tasks currently in running or queued state. Use this to clear the queue before a deployment or maintenance window.
Cancelling active tasks stops any running agents immediately. Work in progress is lost and the tasks will need to be retried.

Task dependencies

A task can be set to wait for one or more other tasks to complete before it starts. This lets you chain work sequentially — for example, run a database migration task before a task that uses the new schema. When creating a task, expand Advanced options and select the tasks this task depends on. A task with unmet dependencies stays in the waiting_on_deps state and is automatically queued once all upstream tasks complete successfully.
If a dependency task fails, the downstream task also transitions to failed to prevent running code that depends on incomplete work.

Live log streaming

Open any task and click the Logs tab to watch the agent’s output stream in real time. Logs are structured into typed entries — agent text, tool calls, tool results, thinking blocks, and system messages — color-coded for readability. You can filter logs by type, search for a specific string, or export the full log in JSON, plain text, or Markdown format using the Export button.

Build docs developers (and LLMs) love