Skip to content

Task

Rover manages your requests as tasks. Each task is an unit of work for Rover and it contains:

  • Your initial description, enhanced with a coding agent
  • A selected coding agent to complete it
  • A workflow to guide the coding agent and complete your request
  • A separate workspace to apply the changes
  • Its own sandboxed environment to run in isolation
  • Associated metadata, like status, history, generated files, etc.

Tasks can run in parallel, and you can create as many as you want. Each task is independent from the others, so you can stop, restart, inspect, debug, or delete them individually.

Rover stores all task data in the global store, keeping your repository clean. Each task has its own folder inside ~/.rover/data/projects/<project-id>/tasks/. The folder name is the unique task ID assigned when you create it.

  • Directory~/.rover/data/projects/<project-id>/
    • Directorytasks/
      • Directory1/
      • Directory2/
        • description.json
        • Directoryiterations/
          • Directory1/
            • entrypoint.sh
            • inputs.json
            • workflow.yml
            • iteration.json
            • status.json
            • summary.md
          • Directory2/
      • Directory3/
    • Directoryworkspaces/
      • Directory1/
      • Directory2/ Git worktree for task 2
      • Directory3/
    • Directorylogs/
NameDescription
description.jsonContains the original task description, selected agent, and metadata
iterations/Folder containing each iteration made by the coding agent

The workspace for each task is stored separately in the workspaces/ directory.

Each iteration has its own folder with the files needed to run the task in the sandbox:

NameDescription
entrypoint.shScript that starts the task execution inside the sandbox
inputs.jsonInput data provided to the coding agent
workflow.ymlThe workflow guiding the coding agent to complete the task
iteration.jsonDetails of the iteration, including changes made and agent messages
status.jsonCurrent status of the iteration (e.g., in-progress, completed)

Each task goes through a lifecycle with different states. Rover ensuses that tasks progress through these states as coding agents work on them. The Rover agent running in the sandboxed environment updates the task status as the coding agents complete each step.

You can find the current status of a task in the status.json file inside the task’s iterations/<iteration_id>/ folder in the global store.

stateDiagram-v2
      [*] --> New: rover task (create task)

      New --> Running: Start

      Running --> Completed: Success
      Running --> Failed: Error

      Failed --> Running: Restart

      Completed --> Pushed: rover push (push to remote)
      Completed --> Merged: rover merge (merge to your branch)

      Pushed --> [*]
      Merged --> [*]