{"id":1816,"library":"dagster","title":"Dagster","description":"Dagster is an orchestration platform designed for the development, production, and observation of data assets. It emphasizes defining pipelines as data assets and provides a rich development experience with built-in UI and testing capabilities. The library is actively maintained with frequent minor releases, often on a weekly basis, incorporating new features, bug fixes, and improvements.","status":"active","version":"1.12.22","language":"en","source_language":"en","source_url":"https://github.com/dagster-io/dagster","tags":["data orchestration","etl","data pipeline","mlops","workflow management","assets","data governance"],"install":[{"cmd":"pip install dagster dagster-webserver","lang":"bash","label":"Core and Web UI"},{"cmd":"pip install dagster-cloud","lang":"bash","label":"Dagster Cloud CLI (optional)"}],"dependencies":[{"reason":"Provides the local Dagster UI (Dagit), essential for development and observation.","package":"dagster-webserver","optional":false},{"reason":"CLI for interacting with Dagster Cloud deployments.","package":"dagster-cloud","optional":true},{"reason":"Required for `dagster-postgres` if you use it for storage (removed as transitive dependency in 1.12.18).","package":"psycopg2-binary","optional":true}],"imports":[{"symbol":"asset","correct":"from dagster import asset"},{"symbol":"job","correct":"from dagster import job"},{"note":"The `solid` decorator was replaced by `op` in Dagster 1.0.0.","wrong":"from dagster import solid","symbol":"op","correct":"from dagster import op"},{"symbol":"graph","correct":"from dagster import graph"},{"symbol":"Definitions","correct":"from dagster import Definitions"},{"note":"Modern Dagster uses Pydantic-style `Config` models for resource/op configuration instead of `config_schema`.","wrong":"from dagster import config_schema","symbol":"Config","correct":"from dagster import Config"},{"symbol":"Schedule","correct":"from dagster import Schedule"},{"symbol":"Sensor","correct":"from dagster import Sensor"}],"quickstart":{"code":"from dagster import Definitions, asset, job\n\n@asset\ndef my_first_asset():\n    \"\"\"A simple asset that prints a message and returns a string.\"\"\"\n    print(\"Hello, Dagster!\")\n    return \"hello\"\n\n@job\ndef my_asset_job():\n    my_first_asset()\n\n# To run this locally and see the output immediately:\nif __name__ == \"__main__\":\n    from dagster import materialize_to_memory\n    result = materialize_to_memory(assets=[my_first_asset])\n    assert result.success\n    print(f\"Asset output: {result.output_for_node('my_first_asset')}\")\n\n# For UI (Dagit) integration, save the following `Definitions` to a file (e.g., `my_repo.py`):\n# defs = Definitions(\n#     assets=[my_first_asset],\n#     jobs=[my_asset_job],\n# )\n# Then run `dagster dev -f my_repo.py` and navigate to http://localhost:3000","lang":"python","description":"This quickstart defines a simple asset and a job that materializes it. It includes a directly runnable Python snippet to execute the asset in memory. For local development with the full Dagster UI (Dagit), save the commented `Definitions` block to a file and run `dagster dev`."},"warnings":[{"fix":"Replace `@solid` with `@op` and `PipelineDefinition` with `JobDefinition` or `@job` decorator. Refer to the Dagster 1.0 migration guide for full details.","message":"Dagster 1.0.0 introduced a major API overhaul, deprecating `solid` and `pipeline` in favor of `op` and `job`/`graph` respectively. Code written for pre-1.0 versions is not compatible without migration.","severity":"breaking","affected_versions":"<1.0.0"},{"fix":"Ensure both `dagster` and `dagster-webserver` are installed: `pip install dagster dagster-webserver`.","message":"The Dagster UI (Dagit) is provided by the `dagster-webserver` package, which must be installed separately from `dagster` core for local development and observation.","severity":"gotcha","affected_versions":"All versions"},{"fix":"Explicitly add `psycopg2-binary` (or `psycopg2`) to your project's dependencies if you use `dagster-postgres`: `pip install psycopg2-binary`.","message":"Starting with Dagster 1.12.18, `psycopg2-binary` is no longer a transitive dependency of `dagster-postgres`. If you use `dagster-postgres` for event log or run storage and rely on this dependency, your environment may break.","severity":"gotcha","affected_versions":">=1.12.18"},{"fix":"For open-source Dagster, use `dagster dev`, `dagster job launch`, etc. For Dagster Cloud, install `dagster-cloud` and use `dg deploy`, `dg api`, etc.","message":"There are two main CLIs: `dagster` for open-source Dagster environments and `dg` (from `dagster-cloud`) for Dagster Cloud deployments. Using the wrong CLI can lead to confusion or errors.","severity":"gotcha","affected_versions":"All versions"},{"fix":"Define configuration using `class MyConfig(Config): ...` and type-hint your resource/op functions with it: `def my_resource(config: MyConfig): ...`.","message":"Older methods of defining resource and op configuration using `config_schema` or directly passing dicts are deprecated. The modern approach uses Pydantic-style `Config` classes.","severity":"deprecated","affected_versions":">=1.0.0"}],"env_vars":null,"last_verified":"2026-04-09T00:00:00.000Z","next_check":"2026-07-08T00:00:00.000Z"}