Implementation:Dagster io Dagster Create Dagster CLI
| Property | Value |
|---|---|
| Type | Implementation |
| Category | Data_Engineering, Developer_Tools |
| Repository | Dagster_io_Dagster |
| Implements | Principle:Dagster_io_Dagster_Project_Scaffolding |
Overview
Concrete CLI tool for scaffolding new Dagster projects with standard structure and configuration provided by the create-dagster package.
Description
The create-dagster CLI and the dg CLI together provide project scaffolding and component management for Dagster projects. The create-dagster project command generates a complete project skeleton with source layout, configuration, and virtual environment. The dg CLI adds component scaffolding (dg scaffold defs) and a development server (dg dev).
Usage
Run create-dagster project my_project to generate a new project, then use dg dev to start the development server. Use dg scaffold defs to add components to an existing project.
Code Reference
Source Location
- CLI tools (create-dagster, dg)
python_modules/dagster/dagster/components/definitions.py:L50
Signature/Pattern
Create a new project:
# Create new project
create-dagster project my_project
# Start development server
cd my_project
dg dev
# Scaffold a component
dg scaffold defs dagster_dbt.DbtProjectComponent --project-path ../analytics
# Scaffold a definitions folder
dg scaffold defs dagster.DefsFolderComponent --name my_defs
Generated project structure:
my_project/
├── pyproject.toml
├── src/
│ └── my_project/
│ ├── __init__.py
│ ├── definitions.py # @definitions entry point
│ └── defs/ # Auto-discovered definitions folder
│ └── __init__.py
└── .venv/
Import
N/A -- This is a CLI tool, not imported in Python code.
Prerequisites
- Python >= 3.10
- uv package manager
I/O Contract
| Direction | Name | Type | Description |
|---|---|---|---|
| Input | project name | str (positional argument) | Name for the new project (used for directory and package naming) |
| Input | component type | str (for scaffold) | Fully qualified component class name (e.g., dagster_dbt.DbtProjectComponent)
|
| Output | project directory | filesystem | Scaffolded project directory with standard structure |
| Output | development server | HTTP | Running webserver on http://127.0.0.1:3000 (via dg dev)
|
Usage Examples
Creating a new project from scratch:
# Step 1: Create the project
create-dagster project my_data_pipeline
# Step 2: Enter the project directory
cd my_data_pipeline
# Step 3: Start the development server
dg dev
# Server starts at http://127.0.0.1:3000
Adding a dbt component to an existing project:
# Scaffold a dbt project component
dg scaffold defs dagster_dbt.DbtProjectComponent --project-path ../my_dbt_project
# Scaffold an additional definitions folder for custom assets
dg scaffold defs dagster.DefsFolderComponent --name custom_assets
Generated definitions.py entry point:
import dagster as dg
@dg.definitions
def defs():
# Auto-discovers assets and other definitions from the defs/ directory
return dg.Definitions(
assets=dg.load_assets_from_modules([defs]),
)
Related Pages
Requires Environment
- Environment:Dagster_io_Dagster_Python_3_10_Runtime
- Environment:Dagster_io_Dagster_DAGSTER_HOME_Configuration