Skip to content

Projects & Tasks

Snippbot organizes all agent work in a three-level hierarchy:

Project
└── Phase (1..n)
└── Task (1..n)

A Project is a goal. A Phase is a stage of work. A Task is a unit of execution assigned to an agent.


A project represents a complete goal or objective. When you describe a goal in natural language, Snippbot:

  1. Parses the goal into a structured plan
  2. Creates phases with logical groupings of work
  3. Generates tasks with dependencies, inputs, and expected outputs
  4. Presents the plan for your approval before execution begins
pending → approved → running → completed
↘ failed
↘ cancelled
StatusDescription
pendingPlan generated, awaiting approval
approvedApproved, queued for execution
runningCurrently executing
completedAll tasks finished successfully
failedOne or more tasks failed
cancelledManually cancelled

Projects stay in pending until you explicitly approve them, giving you control before any agent action is taken.


A phase groups related tasks within a project. Phases execute sequentially by default — Phase 2 doesn’t start until Phase 1 is complete.

Each phase has:

  • A name and description
  • An ordered list of tasks
  • An execution strategy for its tasks

Within a phase, tasks can be scheduled in different patterns:

StrategyDescription
sequentialTasks run one-by-one in order
parallelAll tasks run concurrently
dagTasks run in dependency order (topological sort)

A task is the smallest unit of work. Each task has:

FieldDescription
titleShort description
descriptionFull task instructions for the agent
agent_idWhich agent executes this task
inputsData or file references needed
outputsExpected output files or data
depends_onIDs of tasks that must complete first
retriesHow many times to retry on failure
timeoutMaximum execution time
statuspending → running → completed / failed
pending → running → completed
↘ failed → (retry) → running
↘ cancelled

When a phase uses the dag strategy, tasks form a directed acyclic graph via their depends_on relationships. Tasks with no dependencies run first; subsequent tasks run when all their dependencies complete.

Task A ──┐
├──→ Task C ──→ Task D
Task B ──┘

In this example, A and B run in parallel, then C runs after both complete, then D runs last.


Projects are managed via the /api/projects REST API and the snippbot project CLI commands.

CLI quick reference:

Terminal window
snippbot project list # List all projects
snippbot project list --status running # Filter by status
snippbot project show <id> # Show project details
snippbot project approve <id> # Approve a pending project
snippbot project cancel <id> # Cancel a project

See Projects API for the full REST API reference.