domino-flows
Orchestrate multi-step ML and data pipelines with Domino Flows (Flyte-based). Covers defining tasks with DominoJobTask/DominoJobConfig or run_domino_job_task, typed inputs and outputs under /workflow, Flow Artifacts (DATA, MODEL, REPORT) and export to Datasets or NetApp Volumes, pinning environment, hardware tier, commit and dataset snapshots for reproducibility, caching, subflows, approvals, launching with pyflyte, scheduling through a Job, monitoring runs, lineage and logs, and re-running, recovering, stopping or archiving runs from the UI or the Flyte API. Use when building a DAG of Domino Jobs, a multi-stage training workflow, or any pipeline that needs lineage and reproducible reruns. For a DAG that runs outside Domino in Airflow or Kubeflow and starts Domino Jobs, use domino-airflow-kubeflow.
- License 许可
- MIT
- 最近更新
- 2026-11-14
- Stars
- ★ 5
- Forks
- 4
01 前言 Front Matter
- name
- domino-flows
- description
- Orchestrate multi-step ML and data pipelines with Domino Flows (Flyte-based). Covers defining tasks with DominoJobTask/DominoJobConfig or run_domino_job_task, typed inputs and outputs under /workflow, Flow Artifacts (DATA, MODEL, REPORT) and export to Datasets or NetApp Volumes, pinning environment, hardware tier, commit and dataset snapshots for reproducibility, caching, subflows, approvals, launching with pyflyte, scheduling through a Job, monitoring runs, lineage and logs, and re-running, recovering, stopping or archiving runs from the UI or the Flyte API. Use when building a DAG of Domino Jobs, a multi-stage training workflow, or any pipeline that needs lineage and reproducible reruns. For a DAG that runs outside Domino in Airflow or Kubeflow and starts Domino Jobs, use domino-airflow-kubeflow.
- compatibility
- Domino 6.3 and Domino Cloud. Needs a Workspace or Job on a Domino Standard Environment 6.0 or later (or an environment built on it) for the flytekit and flytekitplugins.domino libraries.
02 资源文件 2
- 参考文档EXAMPLES.md14.1 KB
- 参考文档FLOW-BASICS.md16.3 KB
03 SKILL.md 正文
Domino Flows
Applies to Domino 6.3 and Domino Cloud.
A flow is a Python function decorated with @workflow whose nodes are tasks, each run as a Domino Job in its own container. Tasks declare typed inputs and outputs; outputs become inputs downstream, which defines the DAG, parallelism and lineage. Flows run on Flyte, but you author them with Domino's flytekitplugins.domino classes.
Reference files
| File | Use when |
|---|---|
| FLOW-BASICS.md | Task and flow definition, reading inputs and writing outputs, job configuration, launching, monitoring, caching |
| EXAMPLES.md | Complete data pipeline, training pipeline with Flow Artifacts and parallel branches, pinned production config, scheduled runs |
Rules specific to Domino Flows
- Define tasks with
DominoJobTask+DominoJobConfig(flytekitplugins.domino.task) or therun_domino_job_taskhelper (flytekitplugins.domino.helpers). These are the task types documented for Domino Flows; plain Flyte@taskfunctions are not documented, and dynamic workflows and map tasks are explicitly unsupported.@workflowcomes fromflytekit. - A task call returns one promise when it declares one output (pass it as is) and a namedtuple when it declares several (
res.nameora, b = task(...));res["name"]fails to compile for multi-output tasks and binds the wrong thing for single-output ones. - Task code reads each input from
/workflow/inputs/<name>and must write each declared output to/workflow/outputs/<name>; a missing output fails the task. Non-file inputs (str,int,float,bool,list,dict) arrive as the value's text; file inputs are the file itself. - Flow jobs make no code commits or dataset snapshots at the end; results must be task outputs (or Flow Artifacts exported to a Dataset or NetApp Volume).
- Only Dataset and NetApp Volume snapshots can be mounted (never version 0, the read-write view), one snapshot per dataset, read-only, at the usual
latestpath (/mnt/data/<name>Git-based,/domino/datasets/local/<name>DFS). use_latest=True(oruse_project_defaults_for_omitted=True) fills in the project's default environment, hardware tier and latest commit at launch. Both default to False, and then the task constructor raises unless the config is complete:CommitId,HardwareTierId,EnvironmentId,EnvironmentRevisionSpec,VolumeSizeGiB,DatasetSnapshots,NetAppVolumeSnapshots,ExternalVolumeMountIds(empty lists allowed) and, in a Git-based project, a commit-pinnedMainRepoGitRef. Iterate withuse_latest=True; pin everything for production.- Launch from a Workspace terminal or as a Job command with
pyflyte run --remote; commit the flow file first so the registered version is traceable. Re-run, recover, stop and archive runs from the Flows UI or, inside a Workspace or Job, with the Flyte API at$FLYTE_PLATFORM_URL_HTTP(FLOW-BASICS.md "Re-run, recover, stop and archive"); a changed definition must be launched from the CLI again. - Stopping one of a flow's Jobs in the Jobs UI stops the whole flow.
DOMINO_IS_WORKFLOW_JOBis set inside flow jobs.
Minimal flow
# workflow.py (project root)
from flytekit import workflow
from flytekitplugins.domino.task import DominoJobConfig, DominoJobTask
@workflow
def simple_math_workflow(a: int, b: int) -> float:
add_task = DominoJobTask(
name="Add numbers",
domino_job_config=DominoJobConfig(Command="python add.py"),
inputs={"first_value": int, "second_value": int},
outputs={"sum": int},
use_latest=True,
)
total = add_task(first_value=a, second_value=b)
sqrt_task = DominoJobTask(
name="Square root",
domino_job_config=DominoJobConfig(Command="python sqrt.py"),
inputs={"value": int},
outputs={"sqrt": float},
use_latest=True,
)
return sqrt_task(value=total)
# add.py
from pathlib import Path
a = int(Path("/workflow/inputs/first_value").read_text())
b = int(Path("/workflow/inputs/second_value").read_text())
Path("/workflow/outputs/sum").write_text(str(a + b))
# sqrt.py
from pathlib import Path
value = int(Path("/workflow/inputs/value").read_text())
Path("/workflow/outputs/sqrt").write_text(str(value ** 0.5))
git add workflow.py add.py sqrt.py && git commit -m "math flow" && git push # Git-based project
pyflyte run --remote --name math-run-1 workflow.py simple_math_workflow --a 10 --b 6
Then Flows > flow > run: node status, versioned inputs and outputs, the Domino Job per node, logs, and the Graph view. Run names must be unique within the project.
Choosing Flows
Good fit: data processing then training in different environments (Dask then XGBoost, Spark then PyTorch), clinical pipelines (SDTM to ADaM to TFL), anything that needs lineage, parallel branches, caching or human approval. Poor fit: many small computations over one dataset in one environment, or tasks that write to mutable shared state. Real-time inference belongs in a Domino endpoint.
Flows versus an external orchestrator: a Flow runs inside Domino with typed artifacts and lineage. When Apache Airflow or Kubeflow Pipelines already owns the schedule and the DAG, keep it there and have each step start and wait for a Domino Job over the Jobs API: domino-airflow-kubeflow. One script on a cron needs neither; use a scheduled Job (domino-jobs).
Scheduling and automation
Flows have no scheduler: create a scheduled Job whose command is the pyflyte run --remote ... line, on an environment built from the Domino Standard Environment. Each scheduled execution registers and runs the flow. For programmatic access to executions, Domino publishes the Flyte native API spec at https://docs.domino.ai/api-specs/cloud/flyte-native-api.json (6.3: /api-specs/6.3/flyte-native-api.json) and the Flyte console at <deployment URL>/flows/console/select-project.
Documentation
- https://docs.domino.ai/cloud/platform-capabilities/features/flows/index (get started, define, artifacts, launch, monitor, reproducibility, advanced)
04 同仓库更多 Skills
tags-and-properties
Manage Domino tags and properties via the Tags (Taxonomy) API at /api/taxonomy/v1. Covers namespaces and tags (create, list, update, deprecate, delete; tag entities such as projects, models, datasets, apps, project templates, NetApp volumes, environments; query by tag; autocomplete; merge; CSV import/export) and properties (typed metadata fields - text, number, date, boolean, url, user, organization, select, multi_select - with per-entity values, groups and versioned entities like model_version/app_version). Use when organizing entities with tags, building hierarchical namespaces, defining typed metadata fields, setting property values, finding entities by tag, bulk-tagging during onboarding, or migrating a taxonomy across environments.
netapp-volumes
Work with Domino Volumes for NetApp ONTAP (NetApp Volumes) - shared, multi-terabyte storage with near-instant snapshots. Covers creating volumes, attaching them to projects, mount paths (/mnt/netapp-volumes/ or /domino/netapp-volumes/), snapshots and tags, roles, deletion, mounting volumes in jobs, and the NetApp Volumes REST API (/remotefs/v1). Use when managing large-scale shared data, taking fast no-copy snapshots, or integrating NetApp ONTAP storage with Domino.
domino-workspaces
Work with Domino Workspaces - interactive sessions running Jupyter, JupyterLab, VS Code or RStudio on a hardware tier with a compute environment. Covers launching and configuring a Workspace, what persists across stop and resume, file paths and syncing for DFS and Git-based Projects, package and home-directory persistence, SSH access from a local IDE, the Workspace API routes, and troubleshooting. Use when setting up or debugging an interactive development session in Domino.
domino-ui-bootstrap
Bootstrap or retrofit a Vite + React 18 + TypeScript project so it uses the Domino design system (`@dominodatalab/extensions-tools`). Scoped to a **fully standalone SPA frontend for a Domino application or extension**, not snippets, library additions, or work inside an existing Domino monorepo package. Use whenever the user wants to create, scaffold, refactor, retrofit, or set up such an SPA (a React app, web app, frontend, UI, or extension) that should "look like Domino", use Domino components, follow the Domino design system, or integrate with the Domino platform, including when they mention DominoThemeProviderDecorator, extensions-tools, or base-components without saying "Domino". Also use to make an existing standalone React/Vite project "Domino-styled" or add Domino theming. Handles React 18 / react-router 5 pinning, Storybook MCP registration, theme provider wiring, and build verification.
domino-trace-setup
Set up GenAI tracing for an LLM or agent application in Domino by checking the Domino SDK and MLflow requirements (the DSE needs nothing installed), then adding a tracing_setup.py helper, span evaluators, a config.yaml, and @add_tracing / DominoAgentContext wiring. Use when the user asks to add tracing, observability, or evaluation to an agent or LLM app running on Domino.
domino-rust-apps
Build a Rust web app (axum) in Domino and ship it as a Domino App that starts from a prebuilt binary. Covers installing a pinned Rust toolchain into a Compute Environment with rustup, Cargo project defaults (edition 2024, rust-toolchain.toml, Cargo.lock, Clippy pedantic, rustfmt, cargo-nextest, cargo-deny), rust-analyzer for the IDE and coding agents, check hooks, calling Domino as the viewer with extended identity propagation, dev and release build profiles, keeping target/ out of Git and Domino storage, and an app.sh that runs the binary in App Preview and deployments without compiling. Use when the user wants a Rust app, API, dashboard or Proa site on Domino, a performance-sensitive or correctness-critical App, or asks to set up Rust, cargo, Clippy, nextest or rust-analyzer in a Domino Workspace or environment.