Skip to content

Declarative Manifests

OpenTodo supports Infrastructure as Code (IaC). Instead of manually creating sprints and adding tasks one by one, you can provision entire workspaces instantly using YAML manifests.

This is exceptionally useful for standard operating procedures (SOPs), CI/CD pipeline checklists, or kicking off a new development sprint.


The Manifest Schema

OpenTodo manifests use a clean, highly readable schema.

The root lists key acts as a dictionary where every key is a workspace name. The value is an array of tasks, each containing a title and an optional priority weighting.

Example: sprint-template.yaml

version: "1.0"

lists:
  # Workspace 1
  infrastructure:
    - title: "Provision Neon Serverless PostgreSQL"
      priority: 10
    - title: "Configure Docker compose for local dev"
      priority: 8
    - title: "Setup GitHub Actions for CI/CD"
      priority: 5

  # Workspace 2
  sprint-v1:
    - title: "Patch the UI state bug in config manager"
      priority: 10
    - title: "Publish opentodo 1.0.0 wheel to PyPI"
      priority: 9
    - title: "Write REPL documentation for the SDK"
      priority: 4

  # Workspace 3
  reading-backlog:
    - title: "Review Typer advanced callback documentation"
      priority: 2
    - title: "Read Python Keyring OS Vault specifications"
      priority: 2

Applying Manifests

To provision the environments defined in your YAML file, pass the file path to the apply command:

otodo apply sprint-template.yaml

Idempotency Guarantee

The apply command is strictly idempotent.

This means you can safely run the same manifest multiple times without corrupting your database. * If a workspace doesn't exist, OpenTodo creates it. * If a workspace already exists, OpenTodo safely merges the new tasks into the existing list without duplicating or overwriting your current progress. * Tasks are evaluated based on their titles; if a task with the exact same title already exists in the target list, it will be skipped.


CI/CD Automation

Because the engine is stateful, applying a manifest makes it instantly available for automation scripts.

# 1. Provision the environment
otodo apply ./configs/ci-checks.yaml

# 2. Check out the generated list
otodo use "ci-checks"

# 3. View the pending tasks
otodo