projects
Manage scoped DaoFlow projects and project environments from the CLI.
Required Scopes
projects listprojects showprojects env listdeploy:read
projects createprojects env createdeploy:start
projects deleteprojects env updateprojects env deleteservice:update
List Projects
daoflow projects list --json
{
"ok": true,
"data": {
"summary": {
"totalProjects": 1,
"totalEnvironments": 2,
"totalServices": 3
},
"projects": [
{
"id": "proj_123",
"name": "demo",
"description": "Primary app",
"repoFullName": "acme/demo",
"repoUrl": "https://github.com/acme/demo",
"sourceType": "compose",
"status": "active",
"statusTone": "healthy",
"defaultBranch": "main",
"autoDeploy": true,
"composeFiles": ["compose.yaml"],
"composeProfiles": ["web"],
"environmentCount": 2,
"serviceCount": 3,
"createdAt": "2026-03-20T00:00:00.000Z",
"updatedAt": "2026-03-20T00:00:00.000Z"
}
]
}
}
Inspect One Project
daoflow projects show proj_123
This prints the project metadata plus the current environment inventory, including per-environment server and Compose overrides.
Create A Project
daoflow projects create \
--name demo \
--repo-url https://github.com/acme/demo \
--default-branch main \
--compose-path compose.yaml \
--compose-file compose.yaml \
--compose-profile web \
--dry-run
daoflow projects create \
--name demo \
--repo-url https://github.com/acme/demo \
--yes --json
Provider-linked projects use an installed GitHub App, GitLab.com OAuth connection, or self-hosted GitLab OAuth connection. Use the provider and installation IDs from the Git settings page or API, then create the project with the repository path, branch, Compose path, and webhook auto-deploy settings.
daoflow projects create \
--name provider-demo \
--git-provider-id gitprov_123 \
--git-installation-id gitinst_123 \
--repo-full-name acme/provider-demo \
--default-branch main \
--compose-path deploy/compose.yaml \
--auto-deploy \
--auto-deploy-branch main \
--yes --json
Private generic repositories can attach an encrypted credential without putting secrets in the repository URL. Prefer file or environment inputs so tokens and keys do not land in shell history.
# HTTPS token
DAOFLOW_REPO_TOKEN=ghp_redacted \
daoflow projects create \
--name private-demo \
--repo-url https://github.com/acme/private-demo \
--repo-credential-kind https-token \
--repo-credential-token-env DAOFLOW_REPO_TOKEN \
--yes
# HTTPS basic auth
DAOFLOW_REPO_PASSWORD=redacted \
daoflow projects create \
--name basic-demo \
--repo-url https://git.example.com/acme/basic-demo.git \
--repo-credential-kind https-basic \
--repo-credential-username deploy \
--repo-credential-password-env DAOFLOW_REPO_PASSWORD \
--yes
# SSH deploy key
daoflow projects create \
--name ssh-demo \
--repo-url git@git.example.com:acme/ssh-demo.git \
--repo-credential-kind ssh-key \
--repo-credential-ssh-key-file ./deploy-key.pem \
--yes
Dry-run output only shows the credential kind. It does not print token, password, or private-key material.
Delete A Project
daoflow projects delete --project proj_123 --yes --json
Manage Environments
# List environments for one project
daoflow projects env list --project proj_123 --json
# Create a staging environment that overrides the target server and compose files
daoflow projects env create \
--project proj_123 \
--name staging \
--server srv_edge_2 \
--compose-file compose.yaml \
--compose-file compose.staging.yaml \
--compose-profile web \
--yes
# Update an environment back to project-level defaults
daoflow projects env update \
--environment env_123 \
--clear-server \
--clear-compose-overrides \
--yes
# Delete an environment
daoflow projects env delete --environment env_123 --yes --json
Environment overrides layer on top of the project defaults. Leaving server, compose-file, or compose-profile unset means the environment inherits the project-level setting.
For a brand-new project, the next supported step is to register the first service, preview the rollout, and then deploy it:
daoflow services create --project proj_123 --environment env_123 --name web --source-type image --image ghcr.io/acme/web:latest --yes --json
daoflow plan --service svc_123 --json
daoflow deploy --service svc_123 --yes --json