Basic Structure
Module
Flow
Field Reference
Top-Level Fields
Parameters
{{target}}.
Tags
Workflow Kinds
Module Workflows
For single, focused tasks:Flow Workflows
For multi-stage pipelines:Module References (Flows)
Workflow Location
Store workflows in the workflow folder (default:~/osmedeus-base/workflows/):
Running Workflows
Validation and Linting
Parser Validation
The parser validates:- Required fields:
kind,name,steps(module) ormodules(flow) - Valid kind: Must be
moduleorflow - Step names: Each step must have a unique name
- Step types: Must be valid (bash, function, foreach, parallel-steps, remote-bash, http, llm, agent)
- Module paths: Referenced modules must exist (flows)
- Circular dependencies: No cycles in dependency graph (flows)
Workflow Linter
The workflow linter provides additional best-practice checks beyond basic parsing. It helps catch potential issues before runtime while allowing workflows to execute even with warnings.Linter Rules Reference
The
undefined-variable rule exists but is not enabled by default due to the large number of built-in variables. Workflows can execute with linter warnings - the linter is designed to help identify potential issues, not block execution.Severity Levels
- info - Best practice suggestions (e.g., unused exports)
- warning - Potential issues that may cause problems (e.g., duplicate names)
- error - Critical issues that will likely cause failures
Workflow Inheritance
Workflows can extend parent workflows using theextends field. This enables:
- Reusing common configurations across workflows
- Creating specialized variants (e.g., fast, aggressive, stealth)
- Maintaining consistent base workflows with targeted overrides
Basic Inheritance
Extends Field
Theextends field specifies the parent workflow to inherit from:
Override Modes
When overriding steps (modules) or modules (flows), you can specify a merge strategy:Append Mode (Default)
Prepend Mode
Replace Mode
Merge Mode
Override Sections
Theoverride block supports these sections:
Parameter Overrides
Override specific parameter properties:Multi-Level Inheritance
Workflows can form inheritance chains:Inheritance Rules
- Kind must match - Child and parent must have the same
kind(module/flow) - Circular detection - Circular inheritance chains are detected and rejected
- Name uniqueness - Child’s
nameoverrides parent’s name - File path - Child’s
FilePathis preserved (for error reporting)
Best Practices
- One task per module - Keep modules focused
- Use flows for pipelines - Orchestrate with dependencies
- Descriptive names -
subdomain-enumnotstep1 - Document parameters - Add descriptions
- Use tags - Enable filtering
- Use inheritance - Create base workflows and specialized variants
- Prefer merge mode - For fine-grained step control in child workflows
Next Steps
- Step Types - All step types
- Flows - Module orchestration
- Variables - Parameters and exports
- Control Flow - Conditions and routing
