Manage DevLake projects — create, list, and delete.
A project groups existing connection scopes into a single analytics view with DORA metrics enabled. A blueprint is the sync schedule attached to the project. See concepts.md.
Prerequisites: Run configure scope first to add scopes to your connections.
Create a DevLake project, configure its blueprint, and trigger the first data sync.
gh devlake configure project add [flags]| Flag | Default | Description |
|---|---|---|
--project-name |
(derived from connections or my-project) |
DevLake project name |
--cron |
0 0 * * * |
Blueprint sync schedule (cron expression) |
--time-after |
(6 months ago) | Only collect data after this date (YYYY-MM-DD) |
--skip-sync |
false |
Create the project + blueprint but don't trigger the first sync |
--wait |
true |
Wait for the first pipeline to complete |
--timeout |
5m |
Max time to wait for pipeline completion |
- Discovers your DevLake instance
- Lists all connections (from state file + API)
- Prompts you to select which connections to include in the project
- For each selected connection, lists its existing scopes
- Creates the DevLake project with DORA metrics enabled
- Patches the blueprint with the selected connection scopes, cron schedule, and
time-after - Triggers the first data sync (unless
--skip-sync) - Monitors pipeline progress until completion or
--timeout - Updates the state file with project + blueprint info
[10s] Status: TASK_RUNNING | Tasks: 2/8
[30s] Status: TASK_RUNNING | Tasks: 5/8
[60s] Status: TASK_COMPLETED | Tasks: 8/8
✅ Data sync completed!
The first sync may take 5–30 minutes depending on data volume and how far back --time-after reaches.
| Schedule | Cron Expression |
|---|---|
| Daily at midnight (default) | 0 0 * * * |
| Every 6 hours | 0 */6 * * * |
| Hourly | 0 * * * * |
| Weekly on Sunday | 0 0 * * 0 |
# Create a project (interactive — discovers connections, prompts for project name)
gh devlake configure project add
# Custom project name
gh devlake configure project add --project-name my-team
# Sync from 1 year ago
gh devlake configure project add --project-name my-team --time-after 2025-01-01
# Create project without triggering sync yet
gh devlake configure project add --skip-sync
# Longer timeout for large repos
gh devlake configure project add --timeout 30m- If a project with
--project-namealready exists, the command reuses its blueprint ID rather than creating a duplicate. - If
--time-afteris omitted, defaults to 6 months before today. --wait falsereturns immediately after triggering the sync. Check pipeline status atGET /pipelines/{id}or viastatus.- The project name defaults to the first org found in the state file, or
my-projectif none is found.
List all DevLake projects.
gh devlake configure project listName Description Blueprint ID
────────────── ──────────────────────────────────────── ────────────
my-team DevLake metrics for my-team (github) 1
platform DevLake metrics for platform 2
Supports --json for machine-readable output:
gh devlake configure project list --json[{"name":"my-team","description":"DevLake metrics for my-team (github)","blueprintId":1}]Delete a DevLake project by name.
gh devlake configure project delete [--name <name>]| Flag | Default | Description |
|---|---|---|
--name |
(interactive) | Name of the project to delete |
Flag mode: --name is required.
Interactive mode: Lists all projects, prompts to select one, then prompts for confirmation.
# Non-interactive
gh devlake configure project delete --name my-project
# Interactive
gh devlake configure project deleteWarning: Deleting a project removes its associated blueprint and sync schedule. Historical pipeline data for that project will also be removed.
- concepts.md
- configure-scope.md — add scopes before creating a project
- configure-full.md — connections + scopes + project in one step
- status.md