Developer Guide
Reference for developers extending Workflows - the pillars of the ecosystem, the Definition language, the Compiler and Execution Engine, kinds, and how to write your own blocks.
This section is for people who extend Roboflow Workflows rather than only build with them: block authors, plugin maintainers, and anyone integrating the Workflows Execution Engine into their own application.
If you just want to build and run a Workflow in the browser, start with Create a Workflow and Build a Workflow instead.
The pillars of Workflows
Several components work together to power a Workflow. Some you interact with daily, others run behind the scenes.
Workflows UI - the visual editor where you design and manage Workflows. It is not strictly required, but it is the fastest path from idea to a working Workflow. At the end of the design process it produces the Workflow Definition that the Compiler and Execution Engine consume.
Workflow Definition - an interchangeable JSON document that acts as a program written in the Workflows language. It separates the design of a Workflow from its execution: author it once, then run it in any environment. It declares inputs (images or configuration parameters), steps (instances of blocks, wired to inputs or to other steps' outputs), and outputs (named fields that reference step outputs).
Workflow blocks - modular components that perform a specific operation. To a Workflow author they are black boxes with declared inputs, configuration properties, and outputs. Blocks are grouped into plugins, which are ordinary Python libraries. Roboflow ships its own plugins and the community can publish theirs.
Compiler and Execution Engine - the systems that translate a Definition into a computation graph and then run it. Much like a compiler for a traditional language, they check correctness up front and then do the heavy lifting at runtime. They ship with the Inference Server and the
inferencePython package.

Core concepts
Workflow Definition syntax - the JSON language: version marker, inputs, steps, selectors, and outputs
Workflow execution - batch-oriented data, scalars, dimensionality levels, conditional execution, and how outputs are constructed
Kinds - the Workflows type system that makes connections between blocks verifiable at compile time
Data representations - the Python types your block actually receives:
Batch,WorkflowImageData,VideoMetadata
Under the hood
Workflows Compiler - block loading, parsing, graph construction, data lineage, and step initialization
Execution Engine - runtime input validation, execution order, step input assembly, and flow control
Inner workflows - embedding one Workflow Definition inside another
Execution Engine changelog - what changed in each Execution Engine version
Versioning - the compatibility promises between Definitions, blocks, and the Engine
Building blocks
Create a Workflow block - the full guide: manifests, inputs, outputs, batch processing, flow control, dimensionality
Bundling blocks into a plugin - plugin structure, required interface, kinds, initializers, serializers
Dynamic Python blocks - define a block in place inside a Workflow Definition
Testing blocks - unit and integration testing approach
Community plugins - plugins published by the community
Operating Workflows
Workflows Schema API - describe a Workflow's inputs, outputs, and typing hints programmatically
Workflow profiling - measure step timing and find bottlenecks
Benchmarks - Workflow overhead compared with direct model inference
Video processing - running Workflows on video frames and streams
Last updated
Was this helpful?