Skip to main content
Early Access - The Dcycle CLI is currently available for enterprise customers. Contact us to learn more about access.

Overview

Projects group sustainability work — carbon footprints, LCAs, ISO audits, and custom initiatives — with associated tasks, files, and deadlines. Each project has a type, date range, methodology, and a responsible user.

List Projects

dcy project list
Output:
Showing 3 project(s) in Acme Corp
550e8400-... | 2024 Carbon Footprint | carbon_footprint | start=2024-01-01 | end=2024-12-31 | due=2025-03-31
661f9511-... | Q1 LCA Analysis       | acv              | start=2024-01-01 | end=2024-03-31 | due=2024-06-30
772a0622-... | Supplier Audit 2024   | suppliers        | start=2024-01-01 | end=2024-12-31 | due=2025-01-31
FlagDescription
--orgOrganization ID override
# JSON output for scripting
dcy project list --format json | jq '.[] | {id, name, project_type, due_date}'

# Use the ls alias
dcy project ls

Show Project Details

dcy project show <project-id>
Output:
ID: 550e8400-e29b-41d4-a716-446655440000
Name: 2024 Carbon Footprint
Type: carbon_footprint
Start Date: 2024-01-01
End Date: 2024-12-31
Due Date: 2025-03-31
Description: Annual GHG inventory per GHG Protocol
Methodology: gri
Responsible: Jane Doe (jane@company.com)
Created: 2024-01-15

Create Project

dcy project create \
  --name "2024 Carbon Footprint" \
  --type carbon \
  --start 2024-01-01 \
  --end 2024-12-31 \
  --due 2025-03-31

Create Flags

FlagShortRequiredDescription
--name-nYesProject name
--type-tYesProject type (see table below)
--startYesStart date (YYYY-MM-DD)
--endYesEnd date (YYYY-MM-DD)
--dueYesDue date (YYYY-MM-DD)
--description-dNoProject description
--methodology-mNoesrs or gri
--orgNoOrganization ID override

Project Types

TypeAliasesDescription
carbon_footprintcarbonCarbon footprint (GHG inventory)
customCustom project
einfEINF (non-financial reporting)
iso_14064iso14064ISO 14064 audit
iso_14001iso14001ISO 14001 (environmental management)
iso_9001iso9001ISO 9001 (quality management)
acvlcaLife Cycle Assessment
visualizationvizData visualization project
suppliersSupplier sustainability
logisticsLogistics project
# Create with methodology
dcy project create \
  --name "EINF 2024" \
  --type einf \
  --start 2024-01-01 \
  --end 2024-12-31 \
  --due 2025-06-30 \
  --methodology esrs \
  --description "Annual EINF report following ESRS standards"
The responsible user is automatically set to the currently authenticated user. Use dcy project edit to change it afterward.

Edit Project

dcy project edit <project-id> --name "Updated Name" --due 2025-06-30
FlagShortDescription
--name-nNew project name
--description-dNew description
--startNew start date (YYYY-MM-DD)
--endNew end date (YYYY-MM-DD)
--dueNew due date (YYYY-MM-DD)
--responsibleResponsible user UUID
--orgOrganization ID override
# Change responsible user
dcy project edit <project-id> --responsible <user-id>

# Extend deadline
dcy project edit <project-id> --due 2025-09-30

Delete Project

# Interactive confirmation
dcy project delete <project-id>
Confirmation prompt:
Delete project 2024 Carbon Footprint (550e8400-...)? [y/N]
Output:
project deleted successfully: 2024 Carbon Footprint
# Skip confirmation
dcy project delete <project-id> --yes
FlagShortDefaultDescription
--yes-yfalseSkip confirmation prompt
--orgOrganization ID override

Project Tasks

Tasks track individual work items within a project — data collection, reviews, approvals, and deadlines.

List Tasks

dcy project task list <project-id>
Output:
Showing 4 task(s) for project 550e8400-...
abc123-... | Collect energy invoices  | stage=completed | assigned=Jane Doe  | due=2024-06-30
def456-... | Review vehicle data      | stage=pending   | assigned=John Smith| due=2024-07-15
ghi789-... | Upload purchase records  | stage=pending   | assigned=Alice Brown| due=2024-08-01
jkl012-... | Final review             | stage=pending   | assigned=Jane Doe  | due=2025-03-15
FlagDescription
--orgOrganization ID override

Show Task Details

dcy project task show <task-id>
Output:
ID: abc123-def456-...
Name: Collect energy invoices
Description: Gather all electricity and gas invoices for 2024
Stage: completed
Category: data-collection
Due Date: 2024-06-30
Assigned to: Jane Doe (jane@company.com)
Projects: 2024 Carbon Footprint

Create Task

dcy project task create <project-id> \
  --title "Collect energy invoices" \
  --assigned-to <user-id> \
  --due 2024-06-30
FlagShortRequiredDefaultDescription
--title-tYesTask title
--assigned-to-aYesUser UUID to assign the task to
--description-dNoTask description
--dueNoDue date (YYYY-MM-DD)
--stageNopendingInitial task stage
--categoryNoTask category
--orgNoOrganization ID override

Edit Task

dcy project task edit <task-id> --stage completed
FlagShortDescription
--title-tNew title
--description-dNew description
--assigned-to-aNew assigned user UUID
--dueNew due date (YYYY-MM-DD)
--stageNew stage
--categoryNew category
--parent-task-idSet parent task UUID
--update-childrenMove eligible child tasks when completing a parent
--orgOrganization ID override
# Complete a task and cascade to subtasks
dcy project task edit <task-id> --stage completed --update-children

# Reassign
dcy project task edit <task-id> --assigned-to <new-user-id>

# Make it a subtask
dcy project task edit <task-id> --parent-task-id <parent-id>

Delete Task

# Interactive confirmation
dcy project task delete <task-id>
Confirmation prompt:
Delete task Collect energy invoices (abc123-...)? [y/N]
Output:
task deleted successfully: Collect energy invoices
# Skip confirmation
dcy project task delete <task-id> --yes
FlagShortDefaultDescription
--yes-yfalseSkip confirmation prompt
--orgOrganization ID override

Typical Workflows

Set Up a New Carbon Footprint Project

# 1. Create the project
PROJECT=$(dcy project create \
  --name "2024 Carbon Footprint" \
  --type carbon \
  --start 2024-01-01 \
  --end 2024-12-31 \
  --due 2025-03-31 \
  --methodology gri \
  --format json | jq -r '.id')

echo "Project: $PROJECT"

# 2. Create tasks for each data source
for task in "Collect energy invoices" "Upload vehicle data" "Send mobility surveys" "Review purchases"; do
  dcy project task create "$PROJECT" \
    --title "$task" \
    --assigned-to <user-id> \
    --due 2025-02-28
done

# 3. Upload related files
dcy file upload ./invoices.pdf --project-id "$PROJECT"

Track Task Progress

# List pending tasks
dcy project task list <project-id> --format json \
  | jq '.[] | select(.stage == "pending") | {id, title: (.name // .title), due_date}'

# Mark task as completed
dcy project task edit <task-id> --stage completed

# Check remaining tasks
dcy project task list <project-id>

Audit Projects Across Organizations

# List projects in a subsidiary
dcy project list --org <subsidiary-org-id> --format json \
  | jq '.[] | {name, project_type, due_date}'

Count Tasks by Stage

# Summary of task progress
dcy project task list <project-id> --format json | \
  jq 'group_by(.stage // .status) | map({stage: .[0].stage // .[0].status, count: length})'

Find Overdue Tasks

# Tasks past their due date
dcy project task list <project-id> --format json | \
  jq '.[] | select(.due_date < "2025-01-01" and (.stage == "pending" or .status == "pending")) | {title: (.name // .title), due_date}'

JSON Response Examples

Project

{
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "name": "2024 Carbon Footprint",
  "project_type": "carbon_footprint",
  "start_date": "2024-01-01",
  "end_date": "2024-12-31",
  "due_date": "2025-03-31",
  "description": "Annual GHG inventory",
  "methodology": "gri",
  "responsible_user": {
    "first_name": "Jane",
    "last_name": "Doe",
    "email": "jane@company.com"
  },
  "created_at": "2024-01-15T10:30:00Z"
}

Task

{
  "id": "abc123-def456-...",
  "title": "Collect energy invoices",
  "name": "Collect energy invoices",
  "description": "Gather all electricity and gas invoices",
  "stage": "completed",
  "status": "completed",
  "category": "data-collection",
  "due_date": "2024-06-30",
  "assigned_to": {
    "first_name": "Jane",
    "last_name": "Doe",
    "email": "jane@company.com"
  },
  "projects": [
    { "name": "2024 Carbon Footprint" }
  ]
}
Tasks have both title and name fields (they may differ), and both stage and status fields. In jq filters, use (.name // .title) and (.stage // .status) to handle both.

Aliases

The list subcommand supports ls as a short alias:
dcy project ls        # same as dcy project list

Next Steps

Files

Upload documents and link them to projects

Invoices

Manage energy invoices for Scope 1 and Scope 2 emissions

Members

Find user IDs for task assignments

Configuration

Set up environments and API keys

MCP Tools

Query projects from AI assistants via MCP