# Key Concepts ## Task Manager A task manager is a wrapper around one BlackDynamite study. A task is one pair of jobs and runs. The Motoko task manager creates job/run pairs and can select subsets of runs using constraints. For example, it can select only finished runs: ```python finished = workflow.mult.select("state = FINISHED") ``` ## Workflow The workflow is the top-level object. It owns all task managers and coordinates their creation and execution. ```python from motoko.workflow import Workflow workflow = Workflow("motoko.yaml") workflow.create() workflow.start_launcher_daemons() workflow.execute(inputs=[2.1, 3.1]) ``` The workflow also stores persistent variables in `workflow.vars` and exposes task managers as attributes, such as `workflow.mult` or `workflow.norm`. ## Orchestrator An orchestrator is a Python module attached to a workflow. It registers asynchronous routines and event actions that decide when tasks should be created. The workflow configuration points to an orchestrator function with `module.function` syntax: ```yaml orchestrator: orchestrator.main ``` Motoko loads `orchestrator.py` from the workflow directory and calls `main(workflow, **params)`.